ユーザーをモデレートする
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed、GitLab Dedicated
インスタンス管理者の場合、ユーザーアクセスをモデレートおよび制御するためのオプションがいくつかあります。
このトピックは、特にGitLab Self-Managedでのユーザーモデレーションに関するものです。グループ関連の情報については、グループドキュメントを参照してください。
タイプ別のユーザーの表示
確立されたGitLabインスタンスは、多くの場合、多数の人間およびボットユーザーが存在する可能性があります。ユーザーのリストをフィルタリングして、人間またはボットユーザーのみを表示できます。
タイプ別にユーザーを表示するには:
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスに、フィルターを入力します。
- 人間のユーザーを表示するには、Type=Humansと入力します。
- ボットユーザーを表示するには、Type=Botsと入力します。
- Enterキーを押します。
承認待ちのユーザー
承認承認待ちの状態のユーザーは、管理者によるアクションを必要とします。管理者が次のオプションのいずれかを有効にしている場合、ユーザーサインアップは承認待ちの状態になる可能性があります:
この設定が有効になっているときにユーザーがアカウントを登録すると:
- ユーザーは承認保留中の状態になります。
- ユーザーには、アカウントが管理者による承認を待機中であるというメッセージが表示されます。
承認待ちのユーザー:
管理者は、サインインを許可するために、サインアップを承認する必要があります。
承認待ちのユーザーサインアップを表示
承認待ちのユーザーサインアップを表示するには:
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスで、State=Pending approval(State=Pending approval)でフィルタリングし、Enterを押します。
ユーザーサインアップの承認または拒否
承認待ちのユーザーサインアップは、管理者エリアから承認または拒否できます。
ユーザーサインアップを承認または拒否するには:
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスで、State=Pending approval(State=Pending approval)でフィルタリングし、Enterを押します。
- 承認または拒否するユーザーサインアップについて、縦方向の省略記号( )を選択し、承認するまたは拒否を選択します。
ユーザーの承認:
- アカウントをアクティブ化します。
- ユーザーの状態をアクティブに変更します。
- サブスクリプションのシートを消費します。
ユーザーの拒否:
- ユーザーがサインインしたり、インスタンス情報にアクセスしたりすることを防ぎます。
- ユーザーを削除します。
ロールプロモーション保留中のユーザーの表示
ロールのプロモーションに対する管理者の承認が有効になっている場合、既存のユーザーを請求対象のロールにプロモートするメンバーシップリクエストには、管理者による承認が必要です。
ロールプロモーション保留中のユーザーを表示するには:
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- ロールの昇格を選択します。
要求された最高のロールを持つユーザーのリストが表示されます。リクエストを承認するまたは拒否できます。
ブロックとブロック解除のユーザー
GitLab管理者は、ユーザーをブロックおよびブロック解除できます。ユーザーにインスタンスへのアクセスを許可したくないが、データを保持したい場合は、ユーザーをブロックする必要があります。
ブロックされたユーザー:
ユーザーをブロック
前提要件:
- インスタンスの管理者である。
ユーザーのインスタンスへのアクセスをブロックできます。
ユーザーをブロックするには:
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- ブロックするユーザーについて、縦方向の省略記号( )を選択し、ブロックを選択します。
他のユーザーからのレポートについては、不正行為のレポートを参照してください。管理者エリアでの不正行為レポートの詳細については、不正行為レポートの解決を参照してください。
ユーザーのブロック解除
ブロックされたユーザーは、管理者エリアからブロック解除できます。これを行うには、次の手順を実行します:
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスで、State=Blocked(State=Blocked)でフィルタリングし、Enterを押します。
- ブロック解除するユーザーについて、縦方向の省略記号( )を選択し、ブロック解除を選択します。
ユーザーの状態はアクティブに設定され、シートを消費します。
ユーザーは、GitLab APIを使用してブロック解除することもできます。
ブロック解除オプションは、LDAPユーザーでは使用できない場合があります。ブロック解除オプションを有効にするには、最初にLDAP識別子を削除する必要があります:
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスで、State=Blocked(State=Blocked)でフィルタリングし、Enterを押します。
- ユーザーを選択します。
- 識別子タブを選択します。
- LDAPプロバイダーを見つけて、削除を選択します。
ユーザーの非アクティブ化と再アクティブ化
GitLab管理者は、ユーザーを非アクティブ化および再アクティブ化できます。最近アクティビティーがなく、インスタンスでシートを占有させたくない場合は、ユーザーを非アクティブ化する必要があります。
非アクティブ化されたユーザー:
- GitLabにサインインできます。
- 非アクティブ化されたユーザーがサインインすると、自動的に再アクティブ化されます。
- リポジトリまたはAPIにアクセスできません。
- スラッシュコマンドを使用できません。詳細については、スラッシュコマンドを参照してください。
- シートを占有しません。詳細については、請求対象ユーザーを参照してください。
ユーザーを非アクティブ化すると、プロジェクト、グループ、および履歴が保持されます。
ユーザーを非アクティブ化
前提要件:
- ユーザーは過去90日間アクティビティーがありません。
ユーザーを非アクティブ化するには:
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 非アクティブ化するユーザーについて、縦方向の省略記号( )を選択し、無効にするを選択します。
- ダイアログで、無効にするを選択します。
ユーザーは、アカウントが非アクティブ化されたというメール通知を受信します。このメールの通知を受信しなくなります。詳細については、ユーザーの非アクティブ化メールを参照してください。
GitLab APIを使用してユーザーを非アクティブ化するには、ユーザーの非アクティブ化を参照してください。ユーザーの永続的な制限については、ブロックとブロック解除のユーザーを参照してください。
GitLab.comサブスクリプションからユーザーを削除するには、サブスクリプションからのユーザーの削除を参照してください。
休止中のユーザーを自動的に非アクティブ化
管理者は、次のいずれかに該当するユーザーの自動非アクティブ化を有効にできます:
- 1週間以上前に作成され、サインインしていない。
- 指定された期間(デフォルトおよび最小値は90日)アクティビティーがない。
これを行うには、次の手順を実行します:
- 左側のサイドバーの下部で、管理者を選択します。
- 設定 > 一般を選択します。
- アカウントと制限セクションを展開します。
- 休止中のユーザーで、非アクティブな期間後に休眠ユーザーを非アクティブ化するをオンにします。
- アクティブ解除前の非アクティブ期間で、アクティブ解除までの日数を入力します。最小値は90日です。
- 変更を保存を選択します。
この機能が有効になっている場合、GitLabは毎日のジョブを実行して、休止中のユーザーを非アクティブ化します。
1日に最大100,000人のユーザーを非アクティブ化できます。
デフォルトでは、ユーザーはアカウントが非アクティブ化されると、メール通知を受信します。ユーザーの非アクティブ化メールを無効にできます。
GitLabで生成されたボットは、休止中のユーザーの自動非アクティブ化から除外されます。
未確認のユーザーを自動的に削除する
- プラン: Premium、Ultimate
- 提供形態: GitLab Self-Managed
前提要件:
- 管理者である必要があります。
次の両方に該当するユーザーの自動削除を有効にできます:
- メールアドレスを確認しなかった。
- 過去に指定された日数を超えてGitLabにサインアップしました。
これらの設定は、設定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人のユーザーを削除できます。
ユーザーを再アクティブ化
非アクティブ化されたユーザーは、管理者エリアから再アクティブ化できます。
これを行うには、次の手順を実行します:
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスで、State=Deactivated(State=Deactivated)でフィルタリングし、Enterを押します。
- 再アクティブ化するユーザーについて、縦方向の省略記号( )を選択し、アクティブ化を選択します。
ユーザーの状態はアクティブに設定され、シートを消費します。
非アクティブ化されたユーザーは、ユーザーインターフェースから再度ログインすることで、自分でアカウントを再アクティブ化することもできます。ユーザーは、GitLab APIを使用して再アクティブ化することもできます。
ユーザーのBANとBAN
GitLab管理者は、ユーザーをBANおよびBANできます。ユーザーをブロックし、アクティビティーをインスタンスから非表示にする場合は、ユーザーをBANする必要があります。
BANされたユーザー:
ユーザーをBAN
ユーザーをブロックし、コントリビュートを非表示にするために、管理者はユーザーをBANできます。
ユーザーをBANするには:
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- BANするメンバーの横にある縦方向の省略記号( )を選択します。
- ドロップダウンリストから、メンバーをBANを選択します。
ユーザーのBAN
ユーザーのBANを解除するには:
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスで、State=Banned(State=Banned)でフィルタリングし、Enterを押します。
- BANするメンバーの横にある縦方向の省略記号( )を選択します。
- ドロップダウンリストから、Unban member(メンバーをBAN)を選択します。
ユーザーの状態はアクティブに設定され、シートを消費します。
ユーザーを削除する
管理者エリアを使用して、ユーザーを削除します。
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 削除するユーザーについて、縦方向の省略記号( )を選択し、ユーザーを削除を選択します。
- ユーザー名を入力します。
- ユーザーを削除を選択します。
ユーザーを削除できるのは、グループの継承されたオーナーまたは直接のオーナーがいる場合のみです。ユーザーが唯一のグループオーナーである場合は、ユーザーを削除できません。
ユーザーとそのコントリビュート(マージリクエスト、イシュー、および唯一のグループオーナーであるグループなど)を削除することもできます。
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 削除するユーザーについて、縦方向の省略記号( )を選択し、ユーザーとコントリビュートを削除を選択します。
- ユーザー名を入力します。
- ユーザーとコントリビュートを削除を選択します。
15.1より前は、削除されたユーザーが直接のメンバーの中で唯一のオーナーであったグループも削除されていました。
ユーザーの信頼と信頼の解除
ユーザーの信頼と信頼の解除は、管理者エリアから行うことができます。
デフォルトでは、ユーザーは信頼されておらず、スパムと見なされるイシュー、ノート、およびスニペットの作成をブロックされています。ユーザーを信頼すると、イシュー、ノート、スニペットをブロックされずに作成できます。
前提要件:
- 管理者である必要があります。
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- ユーザーを選択します。
- ユーザー管理ドロップダウンリストから、ユーザーを信頼するを選択します。
- 確認ダイアログで、ユーザーを信頼するを選択します。
ユーザーは信頼されます。
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスでState=Trusted(State=Trusted)でフィルタリングし、Enterを押します。
- ユーザーを選択します。
- ユーザー管理ドロップダウンリストから、ユーザーの信用を解除を選択します。
- 確認ダイアログで、ユーザーの信用を解除を選択します。
ユーザーの信頼が解除されます。
トラブルシューティング
- 提供形態: GitLab Self-Managed
ユーザーをモデレートする場合、特定の条件に基づいて、ユーザーに対して一括操作を実行する必要がある場合があります。次の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