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_encryption和pbkdf2_password_encryption_writefeature flags 启用时。 - 在 GitLab 15.6 及更高版本中,当 FIPS 模式启用时(不需要 feature flags)。
- 在 GitLab 15.2 到 GitLab 15.5 中,当
- bcrypt: 默认情况下,使用
- 拉伸:密码哈希经过 拉伸 处理,以增强对暴力破解攻击的防御能力。默认情况下,GitLab 对 bcrypt 使用 10 的拉伸因子,对 PBKDF2 + SHA512 使用 20,000。
- 加盐:每个密码都会添加一个 加密盐,以增强对预计算哈希和字典攻击的防御能力。为了提高安全性,每个盐都是为每个密码随机生成的,没有两个密码共享同一个盐。
OAuth 访问令牌存储
OAuth 访问令牌以 PBKDF2+SHA512 格式存储在数据库中。与 PBKDF2+SHA512 密码存储一样,访问令牌值经过 拉伸 处理 20,000 次,以增强对暴力破解攻击的防御能力。