{{< details >}}
- Tier: 基础版,专业版,旗舰版
- Offering: 私有化部署
{{< /details >}}
{{< history >}}
- 在极狐GitLab 11.10 中,从专业版移动至基础版。
{{< /history >}}
在高度控制的环境中,可能需要通过外部服务来控制访问策略,该服务允许基于项目分类和用户访问进行访问。极狐GitLab 提供了一种使用您自己定义的服务来检查项目授权的方法。
配置并启用外部服务后,当访问项目时,会向外部服务发送请求,其中包含用户信息和分配给项目的项目分类标签。当服务回复已知响应时,结果会缓存六个小时。
如果启用了外部授权,极狐GitLab 会进一步阻止呈现跨项目数据的页面和功能。这包括:
- 仪表板下的大多数页面(活动、里程碑、代码片段、分配的合并请求、分配的议题、待办事项列表)。
- 在特定群组下(活动、贡献分析、议题、议题板、标签、里程碑、合并请求)。
- 全局和群组搜索被禁用。
这是为了防止一次向外部授权服务发出太多请求。
每当授予或拒绝访问时,都会记录在名为 external-policy-access-control.log
的日志文件中。阅读更多关于极狐GitLab 保持的日志的信息,请参阅 Linux 软件包文档。
使用自签名证书进行 TLS 身份验证时,CA 证书需要被 OpenSSL 安装信任。使用 Linux 软件包安装的极狐GitLab 时,学习如何在 Linux 软件包文档 中安装自定义 CA。或者,学习通过使用 openssl version -d
安装自定义证书的位置。
配置
管理员可以启用外部授权服务:
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 常规。
- 展开 外部授权。
- 完成字段。
- 选择 保存更改。
允许使用部署令牌和部署密钥进行外部授权
{{< history >}}
- 引入于极狐GitLab 15.9。
- 部署令牌不再能够访问容器或软件包仓库的功能引入于极狐GitLab 16.0。
{{< /history >}}
您可以设置您的实例,允许使用部署令牌或部署密钥进行 Git 操作的外部授权。
先决条件:
- 您必须使用没有服务 URL 的分类标签进行外部授权。
要允许使用部署令牌和密钥进行授权:
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 常规。
- 展开 外部授权,并:
- 将服务 URL 字段留空。
- 选择 允许使用部署令牌和部署密钥进行外部授权。
- 选择 保存更改。
{{< alert type=”warning” >}}
如果您启用外部授权,部署令牌将无法访问容器或软件包注册表。如果您使用部署令牌访问这些注册表,此措施将破坏这些令牌的使用。禁用外部授权以使用容器或软件包注册表的令牌。
{{< /alert >}}
工作原理
当极狐GitLab 请求访问时,它向外部服务发送一个包含以下内容的 JSON POST 请求:
{
"user_identifier": "jane@acme.org",
"project_classification_label": "project-label",
"user_ldap_dn": "CN=Jane Doe,CN=admin,DC=acme",
"identities": [
{ "provider": "ldap", "extern_uid": "CN=Jane Doe,CN=admin,DC=acme" },
{ "provider": "bitbucket", "extern_uid": "2435223452345" }
]
}
user_ldap_dn
是可选的,仅当用户通过 LDAP 登录时发送。
identities
包含与用户关联的所有身份的详细信息。如果没有与用户关联的身份,这是一个空数组。
当外部授权服务以状态码 200 回复时,用户被授予访问权限。当外部服务以状态码 401 或 403 回复时,用户被拒绝访问。无论如何,请求会缓存六个小时。
拒绝访问时,可以在 JSON 主体中选择性地指定 reason
:
{
"reason": "您不允许访问此项目。"
}
任何其他状态码不是 200、401 或 403 也会拒绝用户访问,但不会缓存响应。
如果服务超时(超过 500 毫秒),则显示消息“外部策略服务器未响应”。
分类标签
您可以在项目的 设置 > 常规 > 常规项目设置页面的“分类标签”框中使用您自己的分类标签。当项目上未指定分类标签时,使用在全局设置中定义的默认标签。
在所有项目页面的右上角,标签会出现。