Help us learn about your current experience with the documentation. Take the survey.
资源代理
- Tier: Free, Premium, Ultimate
- Offering: GitLab Self-Managed, GitLab Dedicated
在管理面向公网的 GitLab 实例时,一个可能的安全风险是,攻击者可以通过在议题和评论中引用图片来窃取用户的 IP 地址。
例如,在议题描述中添加  会导致图片从外部服务器加载并显示。但是,这也允许外部服务器记录用户的 IP 地址。
缓解此问题的一种方法是,将所有外部图片代理到您自己控制的服务器上。
GitLab 可以配置为在请求议题和评论中的外部图片/视频/音频时,使用一个资源代理服务器。这有助于确保在获取恶意图片时,不会暴露用户的 IP 地址。
我们目前推荐使用 cactus/go-camo,因为它支持代理视频和音频,并且可配置性更高。
安装 Camo 服务器
Camo 服务器用作代理。
要将 Camo 服务器作为资源代理安装:
-
部署一个
go-camo服务器。相关说明请参考 构建 cactus/go-camo。资源代理服务器应配置为使用正确的 Content Security Policy 标头, 例如
form-action 'none'(以及默认的go-camo标头)。 -
确保您的 GitLab 实例正在运行,并且您已创建一个私有 API token。 使用 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