当前位置: 首页 > news >正文

极狐GitLab 外部授权控制机制是怎样的?

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有:

  • 极狐GitLab 中文文档
  • 极狐GitLab 中文论坛
  • 极狐GitLab 官网

外部授权控制 (BASIC SELF)

在高度控制的环境中,访问策略可能需要由外部服务控制,该服务允许基于项目分类和用户权限的访问。极狐GitLab 提供了一种使用您自己定义的服务,检查项目授权的方法。

配置并启用外部服务后,当访问项目时,会向外部服务发出请求,并带有分配给该项目的用户信息和项目分类标签。当服务以已知响应进行回复时,结果将被缓存六个小时。

如果启用了外部授权,系统会进一步阻止呈现跨项目数据的页面和功能。包括:

  • 仪表盘下的大多数页面(活动、里程碑、代码片段、分配的合并请求、分配的议题、待办事项列表)。
  • 在特定群组下(活动、贡献分析、议题、议题看板、标记、里程碑、合并请求)。
  • 全局和群组搜索被禁用。

这是为了防止一次对外部授权服务执行过多的请求。

每当访问被授予或拒绝时,都会记录在一个名为 external-policy-access-control.log 的日志文件中。 在 Linux 软件包文档中阅读有关保留的日志的更多信息。

当使用带有自签名证书的 TLS 身份验证时,CA 证书需要被 OpenSSL 安装信任。使用通过 Omnibus 安装的极狐GitLab 时,请在 Linux 软件包文档 中了解如何安装自定义 CA。或者,使用 openssl version -d 了解在哪里安装自定义证书。

配置

外部授权服务可以由管理员启用:

1.在左侧导航栏底部,选择 管理中心
2.选择 设置 > 通用
3.展开 外部授权
4.填写字段。
5.选择 保存更改

允许使用部署令牌和部署密钥进行外部授权

  • 引入于 15.9 版本。
  • 部署令牌变更为无法访问容器镜像库或软件包库于 16.0 版本。

您可以使用部署令牌或部署密钥,将实例设置为允许对 Git 操作进行外部授权。
先决条件:

  • 您必须使用没有服务 URL 的分类标记进行外部授权。

允许使用部署令牌和密钥进行授权:

1.在左侧导航栏底部,选择 管理中心。
2.选择 设置 > 通用。
3.展开 外部授权,然后:

  • 将服务 URL 字段留空。
  • 选择 允许部署令牌和部署密钥与外部授权一起使用。

4.选择 保存更改。

WARNING:如果启用外部授权,部署令牌将无法访问容器镜像库或软件包库。如果您使用部署令牌访问这些库,则会中断对这些令牌的使用。禁用外部授权,可以将令牌用于容器镜像库或软件包库。

工作原理

当极狐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": "You are not allowed access to this project."
}

除 200、401 或 403 之外的任何其他状态代码也会拒绝用户访问,但不会缓存响应。

如果服务超时(500 毫秒后),则会显示 “External Policy Server did not respond” 消息。

分类标记

您可以在项目的 设置 > 通用 > 通用项目设置 页面中,在 分类标记 框中使用自己的分类标记。当项目上没有指定分类标记时,使用全局设置中定义的默认标记。

标记显示在右上角的所有项目页面上。

在这里插入图片描述

相关文章:

  • PHP腾讯云人脸核身获取NONCE ticket
  • pytorch基本操作2
  • 十、数据库day02--SQL语句01
  • Python Logger用法和说明
  • 【重学Android】1.关于@Composer注解的一点知识笔记
  • UI自动化测试介绍及入门
  • go 语言切片 深入理解实例
  • Python作业4 文本词云统计,生成词云
  • Android 音频架构全解析:从 AudioTrack 到 AudioFlinger
  • 支付APP如何做好网络安全防护?从技术到用户管理的全链路安全策略
  • Mac mini 安装mysql数据库以及出现的一些问题的解决方案
  • 趣味编程之操作系统趣谈
  • VR拍摄要点与技巧有哪些?有哪些最佳实践?
  • Java面试中问单例模式如何回答
  • 理解.NET Core中的配置Configuration
  • MySQL:Join连接的原理
  • vue3+vite 实现.env全局配置
  • 【jenkins】首次配置jenkins
  • Java Web 之 Servlet 100问
  • SonarQube 集成教程
  • 最大涨幅9800%!金价新高不断,引发期权“末日轮”效应,沪金期权多张合约大涨
  • 旁白丨还在寻亲路上的家长们,期待“上岸”
  • 五一出游火爆!热门线路抢票难度堪比春运,有热门目的地酒店价格涨近4倍
  • 江西省人大教育科学文化卫生委员会主任委员王水平被查
  • 纪念沈渭滨︱在恩师沈渭滨老师指导下走上学术研究之路
  • 李家超将率团访问浙江