Help us learn about your current experience with the documentation. Take the survey.

密码和 OAuth 令牌存储

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

GitLab 管理员可以配置密码和 OAuth 令牌的存储方式。

密码存储

GitLab 以哈希格式存储用户密码,以防止密码以明文形式存储。

GitLab 使用 Devise 认证库来哈希用户密码。创建的密码哈希具有以下属性:

  • 哈希:
    • bcrypt: 默认情况下,使用 bcrypt 哈希函数来生成所提供密码的哈希值。这个加密哈希函数强大且符合行业标准。
    • PBKDF2+SHA512: 支持 PBKDF2+SHA512:
      • 在 GitLab 15.2 到 GitLab 15.5 中,当 pbkdf2_password_encryptionpbkdf2_password_encryption_write feature flags 启用时。
      • 在 GitLab 15.6 及更高版本中,当 FIPS 模式启用时(不需要 feature flags)。
  • 拉伸:密码哈希经过 拉伸 处理,以增强对暴力破解攻击的防御能力。默认情况下,GitLab 对 bcrypt 使用 10 的拉伸因子,对 PBKDF2 + SHA512 使用 20,000。
  • 加盐:每个密码都会添加一个 加密盐,以增强对预计算哈希和字典攻击的防御能力。为了提高安全性,每个盐都是为每个密码随机生成的,没有两个密码共享同一个盐。

OAuth 访问令牌存储

OAuth 访问令牌以 PBKDF2+SHA512 格式存储在数据库中。与 PBKDF2+SHA512 密码存储一样,访问令牌值经过 拉伸 处理 20,000 次,以增强对暴力破解攻击的防御能力。