Uploads sanitize Rake 작업

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

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

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 integer 이보다 크거나 같은 ID를 가진 업로드만 처리됨
stop_id integer 이보다 작거나 같은 ID를 가진 업로드만 처리됨
dry_run boolean EXIF 데이터를 제거하지 않고, 존재 여부만 확인합니다. 기본값은 true
sleep_time float 각 이미지 처리 후 대기할 시간(초). 기본값은 0.3초
uploader string 지정한 업로더인 경우에만 살균을 실행합니다: FileUploader, PersonalFileUploader, NamespaceFileUploader
since date 주어진 날짜 이후에 올려진 업로드에 대해서만 살균을 실행합니다. 예: 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

100부터 5000까지의 ID를 가진 업로드에서 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

출력은 종종 길기 때문에 exif.log 파일에 작성됩니다.

업로드에 대해 살균이 실패하면 Rake 작업의 출력에 오류 메시지가 포함됩니다. 일반적인 이유는 파일이 저장소에 없거나 유효한 이미지가 아닌 경우입니다.

이슈를 보고하여 문제를 제기하고 오류 출력 및 (가능한 경우) 이미지와 함께 이슈 제목에 ‘EXIF’ 접두사를 사용하세요.