업로드 샌디타이즈 Rake 작업

Tier: Free, Premium, Ultimate Offering: Self-Managed

JPG 또는 TIFF 이미지 업로드에서 EXIF 데이터가 자동으로 제거됩니다.

EXIF 데이터에는 민감한 정보(예: GPS 위치)가 포함될 수 있으므로 이전 버전의 GitLab에 업로드된 기존 이미지에서 EXIF 데이터를 제거할 수 있습니다.

전제 조건

이 Rake 작업을 실행하려면 시스템에 exiftool이 설치되어 있어야 합니다. GitLab을 설치했다면:

  • Linux 패키지를 사용하여 설치한 경우 준비가 되어 있습니다.
  • 자체 컴파일된 설치를 사용한 경우 exiftool이 설치되어 있는지 확인하세요:

    # Debian/Ubuntu
    sudo apt-get install libimage-exiftool-perl
      
    # RHEL/CentOS
    sudo yum install perl-Image-ExifTool
    

기존 업로드에서 EXIF 데이터 제거

기존 업로드에서 EXIF 데이터를 제거하려면 다음 명령을 실행하세요:

sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:uploads:sanitize:remove_exif

기본적으로 이 명령은 “드라이 런” 모드로 실행되어 EXIF 데이터를 제거하지 않습니다. 이를 사용하여 (얼마나 많은지) 이미지를 산화화해야 하는지 확인할 수 있습니다.

Rake 작업은 다음 매개변수를 허용합니다.

매개변수 유형 설명
start_id 정수 같거나 더 큰 ID를 가진 업로드만 처리됨
stop_id 정수 같거나 더 작은 ID를 가진 업로드만 처리됨
dry_run 부울 EXIF 데이터를 제거하지 않고, 존재 여부만 확인함. 기본값은 true
sleep_time 부동소숫점 각 이미지 처리 후 지연될 초 수. 기본값은 0.3초
uploader 문자열 주어진 업로더(FileUploader, PersonalFileUploader, 또는 NamespaceFileUploader)의 업로드에 대해 산화화 실행
since 날짜 주어진 날짜 이후의 업로드에 대해 산화화 실행. 예: 2019-05-01

너무 많은 업로드가 있는 경우, 산화화를 가속화할 수 있습니다:

  • sleep_time을 낮은 값으로 설정합니다.
  • 별도의 업로드 ID 범위별로 병렬로 여러 Rake 작업을 실행합니다(start_idstop_id를 설정하여).

모든 업로드에서 EXIF 데이터를 제거하려면 다음을 사용합니다:

sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:uploads:sanitize:remove_exif[,,false,] 2>&1 | tee exif.log

ID가 100에서 5000 사이인 업로드에서 EXIF 데이터를 제거하고 파일마다 0.1초 멈춘 후에 사용합니다:

sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:uploads:sanitize:remove_exif[100,5000,false,0.1] 2>&1 | tee exif.log

산화화 중에 어떤 업로드에서 실패한 경우 Rake 작업의 출력에 오류 메시지가 있습니다. 일반적인 이유로는 리포지터리에 파일이 없거나 유효한 이미지가 아닐 수 있습니다.

어떤 문제가 발생한다면 이슈를 보고하고 이슈 제목에 오류 출력과(가능하면) 이미지의 ‘EXIF’ 접두어를 사용하세요.