登录限制

您可以使用登录限制自定义 Web 界面以及基于 HTTP(S) 的 Git 的身份验证限制。

设置

要访问登录限制设置:

  1. 在左侧导航栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 登录限制 部分。

启用密码验证

您可以通过 HTTP(S) 限制 Web 界面和 Git 的密码验证:

  • Web 界面:禁用此功能时,标准登录选项卡将被删除,并且必须使用外部身份验证提供程序。
  • Git over HTTP(S):禁用此功能时,必须使用个人访问令牌或 LDAP 密码进行身份验证。

如果外部身份验证提供程序中断,请使用极狐GitLab Rails 控制台重新启用标准 Web 登录表单

为具有 SSO 身份识别的用户禁用密码验证

即使当开启了密码验证,仍希望能够限制 SSO 用户使用密码登录的能力。选择 为 SSO 身份识别用户禁用密码验证 来确保 SSO 用户始终使用它们的外部提供程序进行身份验证。

这同时限制了 web 洁面和 Git over HTTP(S) 的密码验证。

管理员模式

引入于 13.10 版本

如果您是管理员,您可能希望在极狐GitLab 中工作而不需要作为管理员的访问权限。虽然您可以创建一个没有管理员访问权限的单独用户账户,但更安全的解决方案是使用管理员模式

使用管理员模式,默认情况下您的账户没有管理员权限。 您可以继续访问您所属的群组和项目,但要访问管理功能,您必须进行身份验证。

启用管理员模式后,它适用于实例上的所有管理员。

当为实例启用管理员模式时,管理员:

  • 被允许访问他们所属的群组和项目。
  • 无法访问管理中心

为您的实例启用管理员模式

管理员可以通过 API、Rails 控制台或 UI 启用管理员模式。

使用 API 启用管理员模式

向您的实例端点发出以下请求:

curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab.example.com>/api/v4/application/settings?admin_mode=true"

<gitlab.example.com> 替换为您的实例 URL。

有关详细信息,请参阅可通过 API 调用访问的设置列表

使用 Rails 控制台启用管理员模式

打开 Rails 控制台并运行以下命令:

::Gitlab::CurrentSettings.update_attributes!(admin_mode: true)

使用 UI 启用管理员模式

要通过 UI 启用管理员模式:

  1. 在左侧导航栏底部,选择 管理员
  2. 选择 设置 > 通用
  3. 展开 登录限制
  4. 选择 启用管理员模式
  5. 选择 保存更改

为您的会话打开管理员模式

要为当前会话打开管理员模式并访问具有潜在危险的资源:

  1. 在左侧边栏中,选择您的头像。
  2. 选择 进入管理员模式
  3. 尝试在 URL 中使用 /admin 访问 UI 的任何部分(这需要管理员访问权限)。

当管理员模式状态被禁用或关闭时,管理员无法访问资源,除非他们已被明确授予访问权限。例如,管理员尝试打开一个私有群组或项目,除非他们是该群组或项目的成员,否则他们会收到 404 错误。

应该为管理员启用 2FA。管理员模式支持 2FA、OmniAuth 提供程序和 LDAP 身份验证。管理员模式状态存储在当前用户会话中并保持活动状态,直到:

  • 它被明确禁用。
  • 超时后自动禁用。

检查您的会话是否开启了管理员模式

  • 自极狐GitLab 16.10 引入,并使用名为 show_admin_mode_within_active_sessions 的功能标志。默认禁用。
  • 在极狐GitLab 17.0 中 GA。功能标志 show_admin_mode_within_active_sessions 已移除。

转到您的活动会话列表:

  1. 在左侧导航栏,选择您的头像。
  2. 选择 编辑个人资料
  3. 在左侧导航栏,选择 活跃会话

开启了管理员模式的会话显示文本信息 Signed in on date of session with Admin Mode

关闭会话的管理员模式

要关闭当前会话的管理模式:

  1. 在左侧边栏中,选择 搜索或转到
  2. 选择 离开管理员模式

管理员模式的限制

以下访问方法受管理员模式保护:

  • Git 客户端访问(使用公钥的 SSH 或使用个人访问令牌的 HTTPS)。

也就是说,受到管理员模式限制的管理员仍然可以使用 Git 客户端,而无需额外的身份验证步骤。

要使用极狐GitLab REST 或 GraphQL API,管理员必须创建使用 admin_mode 范围创建个人访问令牌

如果拥有 admin_mode 范围的个人访问令牌的管理员失去了管理员访问权限,则该用户无法以管理员身份访问 API,即使他们仍然拥有 admin_mode 范围的令牌。

管理员模式故障排查

如有必要,您可以使用以下两种方法之一,以管理员身份禁用 管理员模式

  • API

    curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab-url>/api/v4/application/settings?admin_mode=false"
    
  • Rails console

    ::Gitlab::CurrentSettings.update!(admin_mode: false)
    

双重验证

启用此功能后,所有用户都必须使用双重身份验证

双重身份验证配置为强制后,允许用户在可配置的宽限期(以小时为单位)内跳过强制配置双重身份验证。

Two-factor grace period

未知登录的电子邮件通知

启用后,极狐GitLab 会通知用户来自未知 IP 地址或设备的登录。有关详细信息,请参阅未知登录的电子邮件通知

Email notification for unknown sign-ins

登录信息

如果 value 不为空,则所有未登录的用户都将重定向到配置的 首页 URL 所代表的页面。

如果 value 不为空,则所有用户在注销后重定向到配置的 退出页面 URL 所代表的页面。

登录限制部分,滚动到登录文本字段。您可以为您的用户添加 Markdown 格式的自定义消息。

例如,您在注明的文本框中包含以下信息:

# Custom sign-in text

To access this text box:

1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Settings > General**.
1. Expand the **Sign-in restrictions** section.

您的用户在导航到您的极狐GitLab 实例的登录屏幕时,会看到自定义登录文本

故障排除

在 Rails 控制台中重新启用标准 Web 登录表单

如果标准的基于用户名和密码的登录表单被禁用,作为登录限制,您可以重新启用它。

当配置的外部身份验证提供程序(通过 SSO 或 LDAP 配置)面临中断,需要直接登录到极狐GitLab 时,您可以通过 rails 控制台使用此方法。

Gitlab::CurrentSettings.update!(password_authentication_enabled_for_web: true)