アセットをプロキシ化する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed、GitLab Dedicated
公開されているGitLabインスタンスを管理する場合、セキュリティ上の懸念事項として、イシューやコメント内の画像を参照することで、ユーザーのIPアドレスが盗まれる可能性があることが挙げられます。
たとえば、イシューの説明にを追加すると、画像が外部サーバーから読み込まれて表示されます。ただし、これにより、外部サーバーがユーザーのIPアドレスをログに記録することも可能になります。
この問題を軽減する方法の1つは、制御するサーバーに外部画像をプロキシすることです。
GitLabは、イシューやコメントで外部画像/ビデオ/オーディオをリクエストする際に、アセットプロキシサーバーを使用するように構成できます。これにより、悪意のある画像がフェッチされたときに、ユーザーのIPアドレスを公開しないようにすることができます。
現在、cactus/go-camoを使用することをお勧めします。これは、ビデオ、オーディオのプロキシをサポートし、より構成可能であるためです。
Camoサーバーのインストール
Camoサーバーは、プロキシとして機能するために使用されます。
アセットプロキシとしてCamoサーバーをインストールするには、次の手順に従います:
go-camoサーバーをデプロイします。役立つ手順は、building cactus/go-camoにあります。アセットプロキシサーバーは、正しいコンテンツセキュリティポリシーヘッダー(
go-camoヘッダーと並んでform-action 'none'など)を使用するように構成する必要があります。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(非推奨: 代わりに asset_proxy_allowlistを使用)これらのドメインに一致するアセットはプロキシされません。ワイルドカードを使用できます。GitLabインストールURLは自動的に許可されます。asset_proxy_allowlistこれらのドメインに一致するアセットはプロキシされません。ワイルドカードを使用できます。GitLabインストールURLは自動的に許可されます。 変更を有効にするには、サーバーを再起動します。アセットプロキシの値を変更するたびに、サーバーを再起動する必要があります。
Camoサーバーの使用
Camoサーバーが実行され、GitLab設定を有効にすると、外部ソースを参照する画像、ビデオ、またはオーディオはCamoサーバーにプロキシされます。
たとえば、次はMarkdownの画像へのリンクです:
次に、結果として得られる可能性のあるソースリンクの例を示します:
http://proxy.gitlab.example.com/f9dd2b40157757eb82afeedbf1290ffb67a3aeeb/68747470733a2f2f61626f75742e6769746c61622e636f6d2f696d616765732f70726573732f6c6f676f2f6a70672f6769746c61622d69636f6e2d7267622e6a7067