为什么极狐GitLab 的访问令牌有了生命周期的限制?

董禧
• 阅读 128

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLabhttps://gitlab.cn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。

更多关于极狐GitLabhttps://gitlab.cn 或者 DevOps 的最佳实践,可以关注文末的极狐GitLab 公众号。

学习极狐GitLab 的相关资料:

  1. 极狐GitLab 官网https://gitlab.cn
  2. 极狐GitLab 官网文档https://docs.gitlab.cn
  3. 极狐GitLab 论坛https://forum.gitlab.cn/
  4. 极狐GitLab 安装配置https://gitlab.cn/install
  5. 极狐GitLab 资源中心https://resources.gitlab.cn

极狐GitLab 针对现有和新的个人、群组或项目访问令牌现在都有了强制的生命周期限制。下面这篇文章解释其中的原因。

在安全性和易用性之间取得平衡。听起来很简单,对吧?任何曾经实施安全控制的人都知道这种平衡是微妙的,可能永远也无法完全实现,因为人们的容忍水平可能不同。

 

在极狐GitLab,我们也不例外。在认证组中,我们试图提供一套访问和安全控制工具箱,供极狐GitLab管理员根据自己的喜好实施,认识到每个人在安全性与可访问性之间的位置都不同。然而,有时我们不得不就我们向客户提供的访问机制作出决定,其中包括与强大的、长期存在的凭证及其生命周期相关的访问机制。这些凭证通常可以被创建并且在多年内保持不变,可能会在日志、配置和使用这些工具的人员中曝光。如果泄露,它们可能会对组织的安全姿态造成不可修的伤害。

 

我们决定停止对不过期访问令牌的支持

 

在在GitLab 16.中,我们决定取消对不过期访问令牌的支持。这首先是在15.4中宣布的。截至16.0 里程碑(2023年5月),我们为以前没有过期日期的任何个人、群组或项目访问令牌设置了一个到期日期,即2024年5月14日。任何已经有过期日期的访问令牌,即使超出365天的限制,也不受影响。

 

从2023年5月15日开始,创建的任何新访问令牌必须在创建后365天内过期。

 

在极狐GitLab 旗舰版中,管理员可以设置自定义的令牌过期限制。这个策略允许管理员为了符合法规目的将生命周期设置为少于365天。在专业版和基础版本中,令牌必须在365天内过期。

 

这会产生什么影响?

 

如果您有依赖于个人、群组或项目访问令牌的自动化,并且您不修改其过期日期,那么当它达到过期日期时将停止工作。如果您以前没有为您的令牌设置过期日期,它们现在的设置将不早于2024年5月14日。除非您延长令牌的生命周期和/或轮换令牌,否则您的自动化将在那停止工作。

 

我们为什么要做出这种改变?

 

一切都始于我们内部应用安全团队建议的一个问题,这导致我们为访问令牌设置了一些安全意识的默认值:默认情况下最少的权限和30天的到期日期。用户始终可以根据自己的进行更改。

 

我们在极狐GitLab 15.0 中已经强制执行了OAuth令牌的到期日期。我们的应用安全团队建议我们也对个人、项目和群组访问令牌强制执行到期日期。长期存在的、静态的密钥应该具有强制的生命周期限制,这是最佳安全实践的一部分。因此,有必要制定这些限制。如果一个令牌没有到期日期,我们在2023年5月的16.0 版本中为令牌设置了一年的到期日期。这意味着如果令牌在之前没有被轮换和/或修改到期日期,那么在2024年5月,这些令牌将会过期。

 

如何最小化影响

 

您现在正在阅读这篇博客文章,希望您已经意识到这种变化可能造成的潜在影响。下面的部分将详细介绍如何保持极狐GitLab正常运行。

 

了解您拥有的内容

 

要有前瞻性。首先进行一次所有令牌的审计。如果您是旗舰版的客户,您可以使用凭据清单(仅在自托管中可用)查看实例中的所有个人、项目和群组访问令牌。

 

如果您无法访问凭据清单,您可以:

 

  • 从左侧导航中的访问令牌查看活动个人令牌。
  • 使用API列出个人、项目或群组访问令牌。管理员可以查询所有用户创建的令牌,而个人用户只能查看自己创建的令牌。

 

如果您是极狐GitLab管理员,请与您的最终用户沟通,告知他们关于个人访问令牌的此变化,以及您希望他们如何管理将来的过期日期。

 

使用轮换API

 

我们发布了一个令牌轮换 API,可以撤销以前的令牌,并创建一个在一周后到期的新令牌。

 

我们还实现了自动令牌重用检测,以增加安全性。自动重用检测是一项深度防御性安全措施,可以帮助防止攻击者使用泄漏的访问令牌,并且通过将即将过期的泄漏令牌轮换以获取新令牌,自动令牌重用检测API可以无限期地保持对用户账户的访问。

 

简要描述自动令牌重用检测的工作原理,让我们描述一个场景:一个合法用户意外地公开了他们的个人访问令牌(AT1)。攻击者偶然发现了这个泄漏的访问令牌(AT1),使用AT1和令牌轮换端点获取一个新的访问令牌(AT2),以继续保持对用户账户的访问。合法用户,不知道AT1的泄漏或者攻击者的访问,试图使用AT1和令牌轮换API获取一个新的访问令牌(AT3,在他们看来)。然而,由于AT1在令牌轮换端点上被使用两次,后端检测到了这种重用,并推断出这种重用可能是由令牌泄漏造成的。由于它无法知道是攻击者还是合法用户在对令牌旋转API进行请求,为了保护用户账户的访问,在最新的令牌家族中,AT2被撤销,从而阻止攻击者对用户账户的访问。

 

由于重用检测的影响,令牌轮换必须注意潜在的并发问题。建议不要多次使用相同的访问令牌调用令牌轮换API。否则,自动重用检测可能会立即撤销整个令牌家族,作为上述安全措施,如上所述。

 

手动设置到期日期

 

您可以使用UI删除现有的访问令牌,并创建一个带有指定到期日期的新访问令牌。确保在您的自动化中交换新的令牌。现有令牌的到期日期不能在UI中修改,所以如果您想设置一个更晚的到期日期,您需要生成一个新的令牌。

 

观察您的通知

 

我们的团队已经为即将到期的个人、群组和项目访问令牌实现了电子邮件通知。这些通知的结构如下:

 

  • 当您的令牌在30天后到期时您会收到一封电子邮件通知。
  • 在您的令牌到期天前,您会收到另一封电子邮件。
  • 在到期前一天,会发送另一封电子邮件。
  • 每个单独的令牌都会触发自己单独的电子邮件。

 

对于项目和群组访问令牌,项目和组的所有者、维护者和管理员将收到些电子邮件通。对于个人访问令牌,个人用户将收到电子邮件。

 

自动化用例的服务账户

 

对于当前使用群组或项目访问令牌的自动化用例,我们建议您查看服务帐户,该账户在极狐GitLab高级和旗舰版中可用。这些帐户不使用许可证,并且不能使用交互式登录访问极狐GitLab UI。它们还具有不同的成员身份类型,使其易于跟踪。结合可选的令牌生存期限制(即将推出),这意味着您可以将其设置为永不过期(尽管我们仍鼓励您谨慎遵守安全最佳实践)。

点赞
收藏
评论区
推荐文章
Stella981 Stella981
4年前
Git 针对 GitLab Github 配置 HTTP HTTPS SSH 代理
配置git代理配置git的httphttps代理Linux和Windows都适用gitlab服务器在国外下载速度速度收到很大影响。下面对gitlab配置httphttps代理。同理也可以对github配置httphttps代理。
Stella981 Stella981
4年前
Gitlab的基础概念
1、什么是Gitlab?Gitlab是一个开源分布式版本控制系统开发语言:Ruby功能:管理项目源代码、版本控制、代码复用与查找2、Gitlab与Github的不同Github分布式在线代码托管仓库,个人版可直接在线免费使用,企业版收费且需要服务器安装。
Stella981 Stella981
4年前
GitLab+Rancher实践DevOps【转载】
摘要本文描述使用自建GitLab和Rancher实践持续集成/持续交付流水线的过程,并用Rancher实现容器编排和蓝绿发布。GitLab持续集成GitLab持续集成/持续交付流程图:!image(https://docs.gitlab.com/ee/ci/img/cicd_pipeline_infograp
Stella981 Stella981
4年前
GitLab开源18个DevOps付费功能,免费给所有用户使用
!(https://oscimg.oschina.net/oscnet/70ad88afa192998e0c36aa1b7b37a630930.gif)GitLab CEO SidSijbrandij在重新审核GitLab所有功能后,决定开源DevOps生命周期7个阶段里的18个功能,让社群能够更方便地进行协作。这18个功能将会从原本的付费计画层级
Stella981 Stella981
4年前
GitLab私服搭建
GitLab私服搭建我这里服务器系统是CentOS7,所以我搭建私服参考的是https://about.gitlab.com/downloads/centos7(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fabout.gitlab.com%2Fdownl
Stella981 Stella981
4年前
Docker安装Gitlab服务
1、安装建议:版本:GitLab分为社区版(CE)和企业版(EE)。配置:建议CPU2核,内存2G以上。2、使用Docker安装Gitlab2.1:拉取Gitlab镜像拉取中文版gitlab镜像,需要注意的是这个版本的镜像已经2年没有更新了。dockerpulltwang2218/gitl
Stella981 Stella981
4年前
Git WebHook:用于迅速搭建并使用 WebHook 进行自动化部署和运维系统( Python)
一个使用PythonFlaskSQLAchemyCeleryRedisReact开发的用于迅速搭建并使用WebHook进行自动化部署和运维系统,支持:Github/GitLab/GitOsc。1.技术栈简单,部署容易;2.代码简洁易懂,二次开发毫无压力;3.支持Github/GitLab
Stella981 Stella981
4年前
GitLab 安装配置指南
GitLab在CentOS7系统上的安装配置指南1、简单介绍GitLab是利用RubyonRails开发的一个开源版本管理系统,实现一个自托管的Git管理仓库,可通过Web界面进行访问、管理控制权限。Git的家族成员介绍Git:是一种开源分布式的版本控制系统,是一个命令,是一种工具。是伟大的程
Stella981 Stella981
4年前
Gitlab禁用Gravatar头像
使用Gitlab时,Gravatar头像破图了,参考如下链接的解决方案,使用了多说的GravatarCDN:解决Gitlab的Gravatar头像无法显示的问题(http://my.oschina.net/anylain/blog/355797)但还是会出现破图的情况,于是选择禁用了Gravatar头像这样Gitlab会给所用用户统一
Stella981 Stella981
4年前
GitLab
场景DockerCompose部署GitLab服务,搭建自己的代码托管平台(图文教程):https://blog.csdn.net/BADAO\_LIUMANG\_QIZHI/article/details/101039801(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%
Stella981 Stella981
4年前
Git连接GitLab远程仓库
1、简介远程仓库是指托管在网络上的项目仓库,现在互联网上有很多项目托管平台,比如github、gitlab等。为了不公开自己项目代码,可以在自己的服务器上搭建自己的项目仓库,最常见的是搭建GitLab。本地Git与远端服务器GitLab之间连接方式主要分为:SSH方式和HTTP方式。HTTP方式:这种方式要求project在创建的时候只