{{< details >}}

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

{{< /details >}}

用户可以上传文件到:

  1. 项目中的议题或合并请求。
  2. 群组中的史诗。

极狐GitLab 为这些上传的文件生成直接 URL,并附带一个随机的 32 字符 ID,以防止未经授权的用户猜测 URL。这种随机化为包含敏感信息的文件提供了一定的安全性。

用户上传到极狐GitLab 议题、合并请求和史诗的文件在 URL 路径中包含 /uploads/<32-character-id>

{{< alert type=”warning” >}}

下载未知或不可信来源上传的文件时要格外小心,尤其是如果文件是可执行文件或脚本。

{{< /alert >}}

上传文件的访问控制

{{< history >}}

  • 强制授权检查在极狐GitLab 15.3 中成为 GA。功能标志 enforce_auth_checks_on_uploads 被移除。
  • 用户界面中的项目设置在极狐GitLab 15.3 中引入。

{{< /history >}}

对上传到以下地方的非图像文件的访问:

  1. 议题或合并请求由项目可见性决定。
  2. 群组史诗由群组可见性决定。

对于公共项目或群组,即使议题、合并请求或史诗是保密的,任何人都可以通过直接附件 URL 访问这些文件。对于私有和内部项目,极狐GitLab 确保只有经过身份验证的项目成员可以访问非图像文件上传,如 PDF。默认情况下,图像文件不受相同限制,任何人都可以通过 URL 查看它们。要保护图像文件,启用所有媒体文件的授权检查,使其只能由经过身份验证的用户查看。

图像的身份验证检查可能会导致通知电子邮件正文中的显示问题。电子邮件通常是从未经过身份验证的客户端(如 Outlook、Apple Mail 或您的移动设备)读取的。如果客户端未获得极狐GitLab 的授权,电子邮件中的图像将显示为损坏且不可用。

启用所有媒体文件的授权检查

只有经过身份验证的项目成员才能在私有和内部项目中查看非图像附件(包括 PDF)。

要对私有或内部项目中的图像文件应用身份验证要求:

前提条件:

  1. 您必须拥有项目的维护者或所有者角色。
  2. 您的项目可见性设置必须为 私有内部

要配置所有媒体文件的身份验证设置:

  1. 在左侧边栏,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > 常规
  3. 展开 可见性、项目功能、权限
  4. 滚动到 项目可见性 并选择 要求身份验证以查看媒体文件

{{< alert type=”note” >}}

您无法为公共项目选择此选项。

{{< /alert >}}

删除上传的文件

{{< history >}}

  • 在极狐GitLab 15.3 中引入。
  • REST API 在极狐GitLab 17.2 中添加了相应的支持。

{{< /history >}}

当上传的文件包含敏感或机密信息时,您应该删除该文件。当您删除该文件后,用户无法访问该文件,直接 URL 将返回 404 错误。

项目所有者和维护者可以使用互动 GraphQL 探索器访问 GraphQL 端点并删除上传的文件。

例如:

mutation{
  uploadDelete(input: { projectPath: "<path/to/project>", secret: "<32-character-id>" , filename: "<filename>" }) {
    upload {
      id
      size
      path
    }
    errors
  }
}

没有所有者或维护者角色的项目成员无法访问此 GraphQL 端点。

您还可以使用 REST API 对项目群组删除上传的文件。