업로드 살균 Rake 작업

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

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

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

전제 조건

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

  • 리눅스 패키지를 사용하여 설치한 경우 모두 설정됩니다.
  • 직접 컴파일한 설치를 사용하는 경우 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

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

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

살균이 업로드에 실패하는 경우 Rake 작업의 출력에 오류 메시지가 있어야 합니다. 일반적인 이유로는 파일이 저장소에 누락되었거나 유효한 이미지가 아닌 것입니다.

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