資産の代理

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

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

これを軽減する1つの方法として、外部画像を自分が管理するサーバにプロキシする方法があります。

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

現在、動画や音声のプロキシをサポートし、より設定しやすいcactus/go-camoの使用を推奨しています。

Camoサーバのインストール

Camo サーバーはプロキシとして動作します。

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

  1. go-camo サーバをデプロイします。cactus/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(Deprecated: Useasset_proxy_allowlist instead) これらのドメインにマッチするアセットはプロキシされません。ワイルドカードを使用できます。GitLabインストールURLは自動的に許可されます。
    asset_proxy_allowlistこれらのドメインにマッチするアセットはプロキシされません。ワイルドカードを許可します。GitLabインストールURLは自動的に許可されます。
  3. 変更を有効にするには、サーバーを再起動してください。アセットプロキシの値を変更するたびに、サーバーを再起動する必要があります。

Camo サーバの使用

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

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

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

以下は、結果として得られるソース・リンクの例です:

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