업로드 살균 Rake 작업
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_id
및stop_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’ 접두어를 사용하세요.