アセットのプロキシ

公開GitLabインスタンスを管理する際にセキュリティ上の懸念となり得るのは、イシューやコメントなどで画像を参照することでユーザーのIPアドレスを盗み見られることです。

例えば、イシューの説明に![Example image](http://example.com/example.png) を追加すると、画像を表示するために外部サーバから画像がロードされます。しかしこれにより、外部サーバはユーザのIPアドレスを記録することができます。

これを軽減する一つの方法は、外部画像をあなたが管理するサーバにプロキシすることです。

GitLabは、イシューやコメントなどで外部の画像/動画/音声をリクエストする際にアセットプロキシサーバーを使うように設定することができます。これにより、悪意のある画像が取得された際にユーザーのIPアドレスが公開されないようにすることができます。

現在のところ、cactus/go-camoを使用することを推奨しています。

Camoサーバーのインストール

Camoサーバーをプロキシとして使用します。

Camoサーバーをアセットプロキシとしてインストールするには:

  1. go-camo サーバーをデプロイしてください。catus/go-camo のビルドに役立つ説明があります。

  2. GitLabのインスタンスが起動していること、非公開APIトークンが作成されていることを確認します。 APIを使用して、GitLabインスタンスでアセットプロキシ設定を行います。 インスタンスンスンス:

    curl --request "PUT" "https://gitlab.example.com/api/v4/application/settings?\
    asset_proxy_enabled=true&\
    asset_proxy_url=https://proxy.gitlab.example.com&\
    asset_proxy_secret_key=<somekey>" \
    --header 'PRIVATE-TOKEN: <my_private_token>'
    

    以下の設定に対応しています:

    属性 説明
    asset_proxy_enabled アセットのプロキシを有効にします。 有効にする場合は、asset_proxy_url) が必要です。
    asset_proxy_secret_key アセットプロキシサーバとの共有シークレット。
    asset_proxy_url アセットプロキシサーバーの URL。
    asset_proxy_whitelist これらのドメインに一致するアセットはプロキシされません。 ワイルドカードは許可されます。 GitLabインストールURLは自動的にホワイトリストに登録されます。
  3. 変更を有効にするには、サーバーを再起動します。 アセットプロキシの値を変更するたびに、サーバーを再起動する必要があります。

カモサーバーの使用

Camoサーバーを起動し、GitLabの設定を有効にすると、外部ソースを参照する画像、動画、音声はすべてCamoサーバーにプロキシされます。

例えば、以下はMarkdownでの画像へのリンクです:

![logo](https://about.gitlab.com/images/press/logo/jpg/gitlab-icon-rgb.jpg)

以下は、結果として生じる可能性のあるソース・リンクの例です:

http://proxy.gitlab.example.com/f9dd2b40157757eb82afeedbf1290ffb67a3aeeb/68747470733a2f2f61626f75742e6769746c61622e636f6d2f696d616765732f70726573732f6c6f676f2f6a70672f6769746c61622d69636f6e2d7267622e6a7067