正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

アップロードのサニタイズRakeタスク

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

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

デフォルトでは、このコマンドは「dry run」モードで実行され、EXIFデータを削除しません。これにより、イメージをサニタイズする必要があるかどうか(およびその数)を確認できます。

このRakeタスクは、次のパラメータを受け入れます。

パラメータ説明
start_id整数IDが指定値以上のアップロードのみが処理されます
stop_id整数IDが指定値以下のアップロードのみが処理されます
dry_runブール値EXIFデータを削除せず、EXIFデータが存在するかどうかのみを確認します。デフォルトはtrueです。
sleep_time浮動小数点数各画像を処理した後、指定された秒数だけ一時停止します。デフォルトは0.3秒です
uploader文字列指定されたアップローダーのアップロードに対してのみサニタイズを実行します:FileUploaderPersonalFileUploader、またはNamespaceFileUploader
since日付指定された日付よりも新しいアップロードに対してのみサニタイズを実行します。例:2019-05-01

アップロードが多すぎる場合は、サニタイズを高速化できます:

  • sleep_timeをより低い値に設定します。
  • 複数のRakeタスクを並行して実行します。各Rakeタスクは、個別のアップロードIDの範囲(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」を使用します。