用户文件上传
- 版本:免费版、高级版、旗舰版
- 提供方式:GitLab.com、GitLab 自托管、GitLab 专用
用户可以上传文件到:
- 项目中的 Issue 或 Merge Request。
- 组中的 Epic。
GitLab 为这些上传的文件生成直接 URL,URL 中包含一个随机的 32 字符 ID,以防止未经授权的用户猜测 URL。这种随机化对于包含敏感信息的文件提供了一定的安全性。
用户上传到 GitLab Issue、Merge Request 和 Epic 的文件,其 URL 路径中包含 /uploads/<32-character-id>。
请谨慎下载来自未知或不可信来源的文件,特别是当文件是可执行文件或脚本时。
上传文件的访问控制
对非图像文件的访问权限:
- Issue 或 Merge Request 的访问权限由项目可见性决定。
- 组 Epic 的访问权限由组可见性决定。
对于公共项目或组,任何人都可以通过直接附件 URL 访问这些文件,即使 Issue、Merge Request 或 Epic 是保密的。 对于私有和内部项目,GitLab 确保只有经过认证的项目成员可以访问非图像文件上传,例如 PDF。 默认情况下,图像文件没有相同的限制,任何人都可以使用 URL 查看它们。要保护图像文件,为所有媒体文件启用授权检查,使其仅对经过认证的用户可见。
图像的认证检查可能导致通知邮件正文中的显示问题。 邮件经常从未与 GitLab 认证的客户端(如 Outlook、Apple Mail 或您的移动设备)中读取。 如果客户端未获得 GitLab 授权,邮件中的图像将显示为损坏且不可用。
为所有媒体文件启用授权检查
在私有和内部项目中,只有经过认证的项目成员可以查看非图像附件(包括 PDF)。
要将认证要求应用于私有或内部项目中的图像文件:
先决条件:
- 您必须拥有项目的 Maintainer 或 Owner 角色。
- 您的项目可见性设置必须为 私有 或 内部。
要为所有媒体文件配置认证设置:
- 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
- 选择 设置 > 常规。
- 展开 可见性、项目功能、权限。
- 滚动到 项目可见性 并选择 需要认证才能查看媒体文件。
您不能为公共项目选择此选项。
删除上传的文件
当上传的文件包含敏感或机密信息时,您应该删除该文件。当您删除该文件后,用户将无法访问该文件,直接 URL 将返回 404 错误。
项目所有者和维护者可以使用 交互式 GraphQL 探索器 访问 GraphQL 端点 并删除上传的文件。
例如:
mutation{
uploadDelete(input: { projectPath: "<path/to/project>", secret: "<32-character-id>" , filename: "<filename>" }) {
upload {
id
size
path
}
errors
}
}没有所有者或维护者角色的项目成员无法访问此 GraphQL 端点。