返回文章列表
DevSecOps | 2024-04-02

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

极狐GitLab

极狐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。它们还具有不同的成员身份类型,使其易于跟踪。结合可选的令牌生存期限制(即将推出),这意味着您可以将其设置为永不过期(尽管我们仍鼓励您谨慎遵守安全最佳实践)。

 

极狐GitLab 一体化DevOps平台 专为中国用户研发,免费试用60天专业版高级功能
售前咨询
联系电话
在线支持
预约演示