Uploads sanitize Rake 작업
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_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
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’ 접두사를 사용하세요.