モデレートユーザー(管理職)
これは管理に関する文書です。グループレベルでのユーザーの管理については、グループレベルのドキュメントを参照してください。
GitLab管理者は、ユーザーを承認者、ブロック者、禁止者、非アクティブ者にすることで、ユーザーのアクセスを管理することができます。
承認待ちのユーザー
_承認_待ち状態のユーザーは、管理者によるアクションが必要です。ユーザー登録が承認待ちの状態になるのは、管理者が以下のいずれかのオプションを有効にしているためです:
この設定が有効な状態でユーザーがアカウント登録した場合:
- ユーザーは承認待ちの状態になります。
- ユーザーには、アカウントが管理者による承認待ちであることを伝えるメッセージが表示されます。
承認待ちのユーザー:
サインインを許可するには、管理者の承認が必要です。
承認待ちのユーザー登録を見る
承認待ちのユーザー登録を表示します:
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 概要 > ユーザーを選択します。
- 承認待ちタブを選択します。
ユーザー登録の承認者または拒否者
承認待ちのユーザー登録は、管理エリアから承認または拒否することができます。
ユーザー登録の承認または拒否を行うには、以下の手順に従います:
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 概要 > ユーザーを選択します。
- 承認待ちタブを選択します。
- オプション。ユーザーを選択します。
- 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
- 承認者]または[拒否者]を選択します。
ユーザーを承認します:
- ユーザーのアカウントがアクティビティになります。
- ユーザーの状態をアクティブに変更します。
- サブスクリプションシートを消費します。
ユーザーのブロックとブロック解除
GitLab管理者はユーザーをブロックしたりブロック解除したりすることができます。
ユーザーをブロック
GitLabインスタンスへのユーザーのアクセスを完全に防ぐために、管理者はユーザーをブロックすることができます。
ユーザーをブロックするには、不正利用レポーターを経由するか、LDAP で削除するか、管理エリアから直接行います。これを行うには
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 概要 > ユーザーを選択します。
- オプション。ユーザーを選択します。
- 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
- ブロックを選択します。
ブロックされたユーザー:
ブロックされたユーザーの個人プロジェクト、グループ、ユーザー履歴はそのまま残ります。
ユーザーのブロックを解除
ブロックされたユーザーは、管理エリアからブロックを解除することができます。これを行うには
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 概要 > ユーザーを選択します。
- ブロック」タブを選択します。
- オプション。ユーザーを選択します。
- 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
- ブロックの解除]を選択します。
ユーザーの状態がアクティビティに設定され、シートが消費されます。
LDAP ユーザーは、ブロック解除オプションを使用できない場合があります。ブロック解除オプションを有効にするには、まず LDAP ID を削除する必要があります:
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 概要 > ユーザーを選択します。
- ブロック」タブを選択します。
- ユーザーを選択します。
- Identitiesタブを選択します。
- LDAPプロバイダを検索し、[Delete]を選択します。
ユーザーの有効化と非有効化
GitLab管理者はユーザーのアクティベートとデアクティベートを行うことができます。
ユーザーの無効化
GitLab 12.4で導入されました。
最近のアクティビティがないGitLabユーザーのアクセスを一時的に防ぐために、管理者はユーザーを非アクティブにすることができます。
ユーザーを非アクティブにすることは、機能的にはユーザーをブロックすることと同じですが、以下の違いがあります:
- ユーザーがUIから再ログインすることは禁止されません。
- 無効化されたユーザーが GitLab UI にログインし直すと、そのアカウントはアクティブに設定されます。
無効化されたユーザー:
無効化されたユーザーの個人プロジェクト、グループ、ユーザー履歴はそのまま残ります。
ユーザーは管理エリアから無効化できます。これを行うには
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 概要 > ユーザーを選択します。
- オプション。ユーザーを選択します。
- 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
- 無効化]を選択します。
非アクティブ化オプションを管理者に表示するには、ユーザー:
- ユーザーの状態がアクティブであること。
- 休眠状態であること。
休眠ユーザーを自動的に停止
管理者は、以下のいずれかに該当するユーザーの自動無効化を有効にすることができます:
- 1週間以上前に作成され、サインインしていないユーザー。
- 指定された期間アクティビティがない(デフォルト、最低90日間)。
そのためには
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 設定] > [全般]を選択します。
- アカウントと制限」セクションを展開します。
- 休眠ユーザー]で、[一定期間操作がない場合、休眠ユーザーを無効にする]をチェックします。
- 非アクティブ化までの日数]で、非アクティブ化までの日数を入力します。最小値は90日です。
- 変更を保存を選択します。
この機能を有効にすると、GitLabは1日1回ジョブを実行して休眠ユーザーを停止します。
1日あたり最大100,000ユーザーを停止させることができます。
未確認ユーザーの自動削除
前提条件:
- 管理者である必要があります。
両方のユーザーを自動的に削除することができます:
- メールアドレスを確認したことがないユーザー。
- GitLabに登録してから指定された日数以上経過している場合。
これらの設定はSettings APIか Rails コンソールで行います:
Gitlab::CurrentSettings.update(delete_unconfirmed_users: true)
Gitlab::CurrentSettings.update(unconfirmed_users_delete_after_days: 365)
delete_unconfirmed_users
の設定を有効にすると、GitLab は1時間に1回ジョブを実行して未確認ユーザーを削除します。このジョブはunconfirmed_users_delete_after_days
日以上前にサインアップしたユーザーのみを削除します。
このジョブは、email_confirmation_setting
がsoft
またはhard
に設定されている場合にのみ実行されます。
1日あたり最大240,000ユーザーを削除できます。
ユーザーのアクティベート
GitLab 12.4で導入されました。
停止したユーザーを管理エリアからアクティブにすることができます。
そのためには
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 概要 > ユーザーを選択します。
- 非アクティブ化] タブを選択します。
- オプション。ユーザーを選択します。
- 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
- アクティベートを選択します。
ユーザーの状態がアクティビティに設定され、シートが消費されます。
ユーザーの禁止と解除
- GitLab 14.2 で
ban_user_feature_flag
というフラグで導入されました。デフォルトでは無効になっています。- GitLab14.8で一般的にユーザーのBanとUnbanが可能に。機能フラグ
ban_user_feature_flag
は削除されました。- GitLab 15.8で導入された禁止ユーザーのマージリクエストを隠すフラグ
hide_merge_requests_from_banned_users
。デフォルトでは無効。- GitLab 15.11で導入された、
hidden_notes
というフラグで禁止されたユーザーのコメントを隠すこと。デフォルトで無効。- GitLab 16.2 で導入された、
hide_projects_of_banned_users
というフラグで禁止されたユーザーのプロジェクトを非表示。デフォルトで無効。
GitLab管理者はユーザーを禁止したり解除したりすることができます。禁止されたユーザーはブロックされ、そのプロジェクト、イシュー、マージリクエスト、コメントは非表示になります。
ユーザーを禁止
ユーザーをブロックして貢献者を非表示にするには、管理者はそのユーザーをBANすることができます。
ユーザーを禁止するには、管理者エリアを使用します。これを行うには
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 概要 > ユーザーを選択します。
- オプション。ユーザーを選択します。
- 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
- Banユーザーを選択します。
禁止されたユーザーは席を消費しません。
ユーザーの出禁解除
禁止されたユーザーは、管理エリアを使って禁止を解除することができます。これを行うには、以下の手順に従います:
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 概要 > ユーザーを選択します。
- 禁止]タブを選択します。
- オプション。ユーザーを選択します。
- 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
- ユーザー禁止解除]を選択します。
ユーザーの状態がアクティビティに設定され、シートが消費されます。
ユーザーの削除
ユーザーを削除するには、管理エリアを使用します。
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 概要 > ユーザーを選択します。
- 禁止]タブを選択します。
- オプション。ユーザーを選択します。
- 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
- ユーザーの削除を選択します。
- ユーザー名を入力します。
- ユーザーの削除を選択します。
また、ユーザーとそのユーザーが唯一のグループオーナーであるマージリクエスト、イシュー、グループなどの貢献者を削除することもできます。
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 概要 > ユーザーを選択します。
- 禁止]タブを選択します。
- オプション。ユーザーを選択します。
- 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
- Delete user and contributionsを選択します。
- ユーザー名を入力します。
- Delete user and contributionsを選択します。
トラブルシューティング
ユーザーをモデレートする際に、特定の条件に基づいて一括アクションを実行する必要があるかもしれません。以下の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