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 地址。

例如,在议题描述中添加 ![An example image.](http://example.com/example.png) 会导致图片从外部服务器加载并显示。但是,这也允许外部服务器记录用户的 IP 地址。

缓解此问题的一种方法是,将所有外部图片代理到您自己控制的服务器上。

GitLab 可以配置为在请求议题和评论中的外部图片/视频/音频时,使用一个资源代理服务器。这有助于确保在获取恶意图片时,不会暴露用户的 IP 地址。

我们目前推荐使用 cactus/go-camo,因为它支持代理视频和音频,并且可配置性更高。

安装 Camo 服务器

Camo 服务器用作代理。

要将 Camo 服务器作为资源代理安装:

  1. 部署一个 go-camo 服务器。相关说明请参考 构建 cactus/go-camo

    资源代理服务器应配置为使用正确的 Content Security Policy 标头, 例如 form-action 'none'(以及默认的 go-camo 标头)。

  2. 确保您的 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 会自动被允许。
  3. 重启服务器以使更改生效。每次更改资源代理的任何值后,都需要重启服务器。

使用 Camo 服务器

一旦 Camo 服务器运行起来并且您启用了 GitLab 设置,任何引用外部来源的图片、视频或音频都会被代理到 Camo 服务器。

例如,以下是一个 Markdown 中的图片链接:

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

以下是一个可能生成的源链接示例:

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