登录限制
- Tier: Free, Premium, Ultimate
- Offering: GitLab Self-Managed, GitLab Dedicated
使用登录限制来自定义 Web 界面和通过 HTTP(S) 使用 Git 的身份验证限制。
设置
要访问登录限制设置:
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 登录限制 部分。
启用密码身份验证
您可以限制 Web 界面和通过 HTTP(S) 使用 Git 的密码身份验证:
在外部身份验证提供商发生故障时,请使用 GitLab Rails 控制台来重新启用标准 Web 登录表单。此配置也可以通过应用程序设置 REST API进行更改,同时使用管理员账户的个人访问令牌进行身份验证。
为具有 SSO 身份的用户禁用密码身份验证
即使启用了密码身份验证,也可能需要限制 SSO 用户使用密码登录的能力。选择 为具有 SSO 身份的用户禁用密码身份验证 以确保 SSO 用户始终使用其外部提供商登录。
这会限制 Web 界面和通过 HTTP(S) 使用 Git 的密码身份验证。
管理员模式
如果您是管理员,您可能希望在 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 控制台启用管理员模式
- Offering: GitLab Self-Managed
打开 Rails 控制台 并运行以下命令:
::Gitlab::CurrentSettings.update!(admin_mode: true)使用 UI 启用管理员模式
要通过 UI 启用管理员模式:
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 通用。
- 展开 登录限制。
- 选择 启用管理员模式。
- 选择 保存更改。
为您的会话开启管理员模式
要为当前会话开启管理员模式并访问可能存在危险的资源:
- 在左侧边栏上,选择您的头像。
- 选择 进入管理员模式。
- 尝试访问 URL 中包含
/admin的 UI 的任何部分(这需要管理员访问权限)。
当管理员模式状态被禁用或关闭时,管理员无法访问资源,除非
他们被明确授予访问权限。例如,如果管理员尝试打开私有组或项目,
他们会收到 404 错误,除非他们是该组或项目的成员。
应为管理员启用 2FA。管理员模式支持 2FA、OmniAuth 提供商和 LDAP 身份验证。管理员模式状态存储在当前用户会话中,并保持活动状态,直到以下任一情况发生:
- 它被明确禁用。
- 它在六小时后自动禁用。
检查您的会话是否启用了管理员模式
转到您的活动会话列表:
- 在左侧边栏上,选择您的头像。
- 选择 编辑个人资料。
- 在左侧边栏上,选择 活动会话。
已开启管理员模式的会话会显示文本 在 会话日期 以管理员模式登录。
为您的会话关闭管理员模式
要为当前会话关闭管理员模式:
- 在左侧边栏上,选择您的头像。
- 选择 离开管理员模式。
已知问题
管理员模式在六小时后超时,您无法更改此超时限制。
以下访问方法不受管理员模式保护:
- Git 客户端访问(使用公钥的 SSH 或使用个人访问令牌的 HTTPS)。
换句话说,受管理员模式限制的管理员仍然可以 使用 Git 客户端,无需额外的身份验证步骤。
要使用 GitLab REST 或 GraphQL API,管理员必须创建个人访问令牌或 OAuth 令牌,并具有 admin_mode 范围。
如果具有 admin_mode 范围的个人访问令牌的管理员失去其管理员访问权限,即使用户仍然拥有具有 admin_mode 范围的令牌,也无法以管理员身份访问 API。
更多信息,请参阅 epic 2158。
此外,当启用 GitLab Geo 时,在辅助节点上无法查看项目和设计的复制状态。当项目(issue 367926)和设计(issue 355660)迁移到新的 Geo 框架时,将提出修复方案。
管理员模式故障排除
如有必要,您可以通过以下两种方法之一以管理员身份禁用 管理员模式:
-
API:
curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab-url>/api/v4/application/settings?admin_mode=false" -
::Gitlab::CurrentSettings.update!(admin_mode: false)
双因素身份验证
启用此功能后,所有用户必须使用双因素身份验证。
将双因素身份验证配置为强制要求后,用户可以在可配置的宽限期(以小时为单位)内 跳过强制配置双因素身份验证。
未知登录的电子邮件通知
启用后,GitLab 会通知用户来自未知 IP 地址或设备的登录。更多信息, 请参阅未知登录的电子邮件通知。
登录信息
如果值不为空,所有未登录的用户都会被重定向到配置的 主页 URL 所表示的页面。
如果值不为空,所有用户在退出登录后都会被重定向到配置的 退出页面 URL 所表示的页面。
要向登录页面添加帮助消息,请自定义您的登录和注册页面。
故障排除
在 Rails 控制台中重新启用标准 Web 登录表单
- Offering: GitLab Self-Managed
如果基于用户名和密码的标准登录表单被作为登录限制禁用,请重新启用它。
当配置的外部身份验证提供商(通过 SSO 或 LDAP 配置)发生故障且需要直接登录访问 GitLab 时,您可以通过 Rails 控制台使用此方法。
Gitlab::CurrentSettings.update!(password_authentication_enabled_for_web: true)