强制双重认证

双重身份认证 (2FA) 为用户的极狐GitLab 帐户提供了额外的安全级别。启用后,除了提供用户名和密码以进行登录外,还会提示用户输入应用程序生成的代码。

了解更多关于双重身份认证 (2FA)

对所有用户强制执行 2FA

极狐GitLab 上的用户无需任何管理员干预即可启用它。如果您想强制每个人都设置 2FA,您可以从两种不同的方式中进行选择:

  • 下次登录时强制执行
  • 建议下次登录时执行,但在执行前允许宽限期。

配置的宽限期过后,用户可以登录,但不能离开 /-/profile/two_factor_auth 的 2FA 配置区域。

为所有用户启用 2FA:

  1. 在顶部栏上,选择 菜单 > 管理员
  2. 在左侧边栏中,选择 设置 > 通用/admin/application_settings/general)。
  3. 展开 登录限制 部分,您可以在其中配置。

如果您希望 2FA 强制在下次登录尝试期间生效,请将宽限期更改为 0

通过 rails 控制台禁用 2FA 强制执行

使用 rails 控制台,可以禁用对所有用户强制执行 2FA。连接到 rails 控制台并运行:

Gitlab::CurrentSettings.update!('require_two_factor_authentication': false)

对群组中的所有用户强制执行 2FA

仅对某些群组强制执行 2FA:

  1. 进入群组的 设置 > 通用 页面。
  2. 展开 权限和群组功能 部分。
  3. 选择 要求此群组中的所有用户都设置双重认证 选项。

您还可以在 宽容时间 选项中指定宽限期。

要更改此设置,您必须是群组的管理员或所有者。

如果您只想对某些群组强制执行 2FA,您可以在群组设置中,启用它并如上所述指定宽限期。要更改此设置,您必须是群组的管理员或所有者。

以下是有关 2FA 的重要说明:

  • 对于启用 2FA 的群组与禁用 2FA 的群组共享的项目,将要求禁用 2FA 的群组的成员,为项目使用 2FA。例如,如果项目 P 属于启用 2FA 的群组 A 并与禁用 2FA 的群组 B 共享, B 群组的成员可以在没有 2FA 的情况下访问项目 P。如果要确保不发生这种情况,防止为启用 2FA 的组共享项目。
  • 如果您将其它成员添加到启用了 2FA 的群组或子组中的项目,则这些单独添加的成员不需要 2FA。
  • 如果有多个 2FA 要求(例如,群组 + 所有用户或多个群组),则使用最短的宽限期。
  • 可以禁止子组设置自己的 2FA 要求:
    1. 转到顶级组的 设置 > 通用
    2. 展开 权限和群组功能 部分。
    3. 取消选中 允许子组设置自己的双重认证规则 字段。

    此操作会导致所有具有 2FA 要求的子组,停止对其成员要求 2FA。

为所有人禁用 2FA

caution为所有人禁用 2FA 不会禁用对所有用户强制 2FA对群组中的所有用户强制执行 2FA设置。您还必须禁用任何强制执行的 2FA 设置,这样用户下次登录时就不会被要求再次设置 2FA。

在某些特殊情况下,即使禁用了强制 2FA,您也可能希望为所有人禁用 2FA。执行一个 Rake 任务:

# Omnibus installations
sudo gitlab-rake gitlab:two_factor:disable_for_all_users

# Installations from source
sudo -u git -H bundle exec rake gitlab:two_factor:disable_for_all_users RAILS_ENV=production
caution这是一个永久且不可逆转的行为。如果用户想再次使用 2FA,他们必须从头开始重新激活它。

Git over SSH 操作的 2FA

可以通过 SSH 操作对 Git 实施双重认证。但是,我们建议改用 ED25519_SKECDSA_SK SSH 密钥。

可以使用以下命令完成一次性密码 (OTP) 验证:

ssh git@<hostname> 2fa_verify

验证 OTP 后,Git over SSH 操作可用于 15 分钟(默认)的会话持续时间以及关联的 SSH 密钥。

安全限制

2FA 不会保护带有 compromised 私有 SSH 密钥的用户。

一旦验证了 OTP,任何人都可以在配置的会话持续时间内,使用该私有 SSH 密钥通过 SSH 运行 Git。