{{< details >}}

  • Tier: 基础版, 专业版, 旗舰版
  • Offering: 私有化部署

{{< /details >}}

极狐GitLab 实例在公开展示时可能存在一个安全隐患,即通过在议题和评论中引用图片来窃取用户的 IP 地址。

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

一种缓解方法是通过代理服务器来代理任何外部图片到您控制的服务器。

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

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

安装 Camo 服务器

Camo 服务器用于充当代理。

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

  1. 部署 go-camo 服务器。可以在 building 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>'
    

    支持以下设置:

    Attribute Description
    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 中的图片链接:

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

以下是可能产生的源链接示例:

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