控制用户访问(适用于管理员)
本文是管理员文档。有关在群组级别审核用户的信息,请参阅群组级别文档。
极狐GitLab 管理员可以通过批准、禁用、封禁或冻结用户来控制用户访问。
等待批准的用户
处于待批准状态的用户需要管理员采取行动。管理员已启用以下任何选项时,用户注册可能处于待批准状态:
- 新注册需要管理员批准
- 用户上限
- 阻止自动创建的用户 (OmniAuth)
- 阻止自动创建的用户 (LDAP)
当用户在启用此设置的情况下注册帐户时:
- 用户处于待批准状态。
- 用户会看到一条消息,告诉他们他们的帐户正在等待管理员的批准。
待批准的用户:
- 在功能上与已禁用的用户相同。
- 无法登录。
- 无法访问 Git 仓库或极狐GitLab API。
- 无法收到来自极狐GitLab 的任何通知。
- 不消耗订阅席位。
管理员必须批准他们的注册,系统才能允许他们登录。
查看等待批准的用户注册
要查看待批准的用户注册:
- 在左侧边栏上,展开最顶部的向下箭头 ()。
- 选择 管理中心。
- 选择 概览 > 用户。
- 选择 等待批准 选项卡。
批准或拒绝用户注册
可以从管理中心批准或拒绝等待批准的用户注册。
要批准或拒绝用户注册:
- 在左侧边栏上,展开最顶部的向下箭头 ()。
- 选择 管理中心。
- 选择 概览 > 用户。
- 选择 等待批准 选项卡。
- 可选。选择一个用户。
- 选择 用户管理 下拉菜单。
- 选择 批准 或 拒绝。
批准用户后:
- 激活了他们的帐户。
- 将用户的状态更改为激活。
- 消耗订阅席位。
禁用和取消禁用用户
极狐GitLab 管理员可以禁用和取消禁用用户。
禁用用户
为了完全阻止用户访问极狐GitLab 实例,管理员可以选择禁用用户。
可以通过滥用报告、通过在 LDAP 中删除用户、或直接从管理中心中删除用户来禁用用户。操作方法:
- 在左侧边栏上,展开最顶部的向下箭头 ()。
- 选择 管理中心。
- 选择 概览 > 用户。
- 可选。选择一个用户。
- 选择 用户管理 下拉菜单。
- 选择 禁用。
被禁用的用户:
- 无法登录。
- 无法访问 Git 仓库或 API。
- 无法收到来自极狐GitLab 的任何通知。
- 无法使用斜杠命令。
- 不消耗订阅席位。
被禁用用户的个人项目以及组和用户历史记录保持不变。
取消禁用用户
可以在管理中心取消禁用被禁用的用户。操作步骤:
- 在左侧边栏上,展开最顶部的向下箭头 ()。
- 选择 管理中心。
- 选择 概览 > 用户。
- 在 已禁用 选项卡上选择。
- 可选。选择一个用户。
- 选择 用户管理 下拉菜单。
- 选择 取消禁用。
用户的状态设置为激活,他们消耗席位。
LDAP 用户可能无法使用取消禁用选项。要启用取消禁用选项,首先需要删除 LDAP 身份:
- 在左侧边栏上,展开最顶部的向下箭头 ()。
- 选择 管理中心。
- 选择 概览 > 用户。
- 选择 已禁用 选项卡。
- 选择用户。
- 选择 身份 选项卡。
- 找到 LDAP provider 并选择删除。
激活和冻结用户
极狐GitLab 管理员可以激活和冻结用户。
冻结用户
为了暂时禁止最近没有活动的极狐GitLab 用户访问,管理员可以选择冻结该用户。
冻结用户在功能上与禁用用户相同,但有以下区别:
- 不会禁止用户通过 UI 重新登录。
- 一旦已冻结的用户重新登录到 UI,他们的帐户就会被设置为已激活。
被冻结的用户:
- 无法访问 Git 仓库或 API。
- 无法收到来自极狐GitLab 的任何通知。
- 无法使用斜杠命令。
- 不消耗订阅席位。
已冻结用户的个人项目以及群组和用户历史记录保持不变。
可以在管理中心冻结用户。操作步骤:
- 在左侧边栏上,展开最顶部的向下箭头 ()。
- 选择 管理中心。
- 选择 概览 > 用户。
- 可选。选择一个用户。
- 选择 用户管理 下拉菜单。
- 选择 冻结。
为了使管理员可以看到冻结选项,用户:
- 必须当前处于活动状态。
- 在过去 90 天内不得登录或进行任何活动。
自动冻结休眠用户
- 引入于 14.0 版本。
- 可自定义的时长引入于 15.4 版本。
- 非活动期的下限设置为 90 天,引入于 15.5 版本。
管理员可以启用自动冻结在过去 90 天内未登录或没有活动的如下用户:
- 超过一星期前创建,尚未登录。
- 在指定的时间段内没有活动(默认为 90 天)。
操作步骤:
- 在左侧边栏上,展开最顶部的向下箭头 ()。
- 选择 管理中心。
- 选择 设置 > 通用。
- 展开 账户和限制 部分。
- 在 休眠用户 下,选中 闲置 90 天后冻结休眠用户。
- 在 不活动时长(天数) 下,输入停用前的不活动时长。
- 选择 保存更改。
启用此功能后,极狐GitLab 每天运行一次作业,冻结休眠用户。
每天最多可以冻结 100,000 个用户。
自动删除未确认的用户
- 引入于 16.1 版本,功能标志为
delete_unconfirmed_users_setting
。默认禁用。- 默认启用于 16.2 版本。
先决条件:
- 您必须是管理员。
您可以启用自动删除同时满足以下条件的用户:
- 从未确认过他们的电子邮件地址。
- 过去注册极狐GitLab 的时间超过指定天数。
您可以使用设置 API,或在 Rails 控制台中配置以下设置:
Gitlab::CurrentSettings.update(delete_unconfirmed_users: true)
Gitlab::CurrentSettings.update(unconfirmed_users_delete_after_days: 365)
当启用 delete_unconfirmed_users
设置时,极狐GitLab 每小时运行一次作业来删除未确认的用户。
该作业仅删除过去注册超过 unconfirmed_users_delete_after_days
天的用户。
此作业仅在 email_confirmation_setting
设置为 soft
或 hard
时运行。
每天最多可以删除 240,000 个用户。
激活用户
可以在管理中心激活已冻结的用户。
操作步骤:
- 在左侧边栏上,展开最顶部的向下箭头 ()。
- 选择 管理中心。
- 选择 概览 > 用户。
- 选择 已冻结 选项卡。
- 可选。选择一个用户。
- 选择 用户管理 下拉菜单。
- 选择 激活。
用户的状态设置为激活,他们使用订阅席位。
封禁和解禁用户
极狐GitLab 管理员可以封禁和解禁用户。被封禁的用户处于禁用状态,他们的项目、议题、合并请求和评论被隐藏。
封禁用户
要禁用用户并隐藏他们的贡献,管理员可以封禁该用户。
可以在管理中心禁止用户。操作步骤:
- 在左侧边栏上,展开最顶部的向下箭头 ()。
- 选择 管理中心。
- 选择 概览 > 用户。
- 可选。选择一个用户。
- 选择 用户管理 下拉菜单。
- 选择 封禁用户。
被封禁的用户不消耗订阅席位。
解禁用户
可以在管理中心解禁被封禁的用户。操作步骤:
- 在左侧边栏上,展开最顶部的向下箭头 ()。
- 选择 管理中心。
- 选择 概览 > 用户。
- 选择 已封禁 选项卡。
- 可选。选择一个用户。
- 选择 用户管理 下拉菜单。
- 选择 解禁用户。
用户的状态设置为激活,他们消耗订阅席位。
删除用户
使用管理中心删除用户。
- 在左侧边栏上,展开最顶部的向下箭头 ()。
- 选择 管理中心。
- 选择 概览 > 用户。
- 选择 已封禁 选项卡。
- 可选。选择一个用户。
- 选择 用户管理 下拉列表。
- 选择 删除用户。
- 输入用户名。
- 选择 删除用户。
您还可以删除用户及其贡献,例如合并请求、议题,和他们是唯一群组所有者的群组。
- 在左侧边栏上,展开最顶部的向下箭头 ()。
- 选择 管理中心。
- 选择 概览 > 用户。
- 选择 已封禁 选项卡。
- 可选。选择一个用户。
- 选择 用户管理 下拉列表。
- 选择 删除用户和贡献。
- 输入用户名。
- 选择 删除用户和贡献。
故障排除
修改用户时,您可能需要根据特定条件对他们执行批量操作。以下 Rails 控制台脚本显示了一些示例。您可以启动 Rails 控制台会话,并使用类似于以下内容的脚本:
停用最近没有活动的用户
管理员可以停用最近没有活动的用户。
days_inactive = 90
inactive_users = User.active.where("last_activity_on <= ?", days_inactive.days.ago)
inactive_users.each do |user|
puts "user '#{user.username}': #{user.last_activity_on}"
user.deactivate!
end
禁用最近没有活动的用户
管理员可以禁用最近没有活动的用户。
days_inactive = 90
inactive_users = User.active.where("last_activity_on <= ?", days_inactive.days.ago)
inactive_users.each do |user|
puts "user '#{user.username}': #{user.last_activity_on}"
user.block!
end
禁用或删除没有项目或群组的用户
管理员可以禁用或删除没有项目或群组的用户。
users = User.where('id NOT IN (select distinct(user_id) from project_authorizations)')
# How many users are removed?
users.count
# If that count looks sane:
# You can either block the users:
users.each { |user| user.blocked? ? nil : user.block! }
# Or you can delete them:
# need 'current user' (your user) for auditing purposes
current_user = User.find_by(username: '<your username>')
users.each do |user|
DeleteUserWorker.perform_async(current_user.id, user.id)
end