ユーザーをモデレートする
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed、GitLab Dedicated
インスタンス管理者である場合、ユーザーアクセスをモデレートおよび制御するためのいくつかのオプションがあります。
このトピックは、GitLab Self-Managedでのユーザーモデレーションに特に関連しています。グループに関する情報については、グループドキュメントを参照してください。
ユーザーを表示する
お使いのインスタンス内のすべてのユーザーを表示するには:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
ユーザーを選択して、アカウント情報を表示します。
タイプ別にユーザーを表示
確立されたGitLabインスタンスには、多くの場合、多数の人間ユーザーとボットユーザーが存在します。ユーザーのリストをフィルタリングして、人間またはボットユーザーのみを表示できます。
タイプ別にユーザーを表示するには:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスに、フィルターを入力します。
- 人間ユーザーを表示するには、Type=Humansと入力します。
- ボットユーザーを表示するには、Type=Botsと入力します。
- Enterキーを押します。
請求対象ユーザー
Railsコンソールを通じて、インスタンス内の請求対象ユーザーを表示および更新できます。
毎日および過去の請求対象ユーザー数を確認する
GitLabインスタンス内の日次および過去の請求対象ユーザーのリストを取得するには:
インスタンス内のユーザー数をカウントします。
User.billable.count過去1年間についてインスタンスの過去の最大ユーザー数を取得します。
::HistoricalData.max_historical_user_count(from: 1.year.ago.beginning_of_day, to: Time.current.end_of_day)
毎日および過去の請求対象ユーザー数を更新する
GitLabインスタンス内の日次および過去の請求対象ユーザーの手動更新をトリガーするには:
毎日の請求対象ユーザー数の更新を強制的に実行します。
identifier = Analytics::UsageTrends::Measurement.identifiers[:billable_users] ::Analytics::UsageTrends::CounterJobWorker.new.perform(identifier, User.minimum(:id), User.maximum(:id), Time.zone.now)過去の最大請求対象ユーザー数の更新を強制的に実行します。
::HistoricalDataWorker.new.perform
承認保留中のユーザー
承認保留中状態のユーザーには、管理者によるアクションが必要です。管理者が以下のいずれかのオプションを有効にしている場合、ユーザー登録は承認保留中状態になることがあります:
- 新規ユーザーアカウント作成に対するRequire administrator approval for new user account creation設定。
- User cap。
- Block auto-created users (OmniAuth)
- Block auto-created users (LDAP)
この設定が有効な間にユーザーがアカウントを登録すると:
- ユーザーは承認保留中の状態になります。
- ユーザーには、アカウントが管理者による承認を待っていることを示すメッセージが表示されます。
承認保留中のユーザー:
管理者は、サインインを許可するために、登録を承認する必要があります。
承認保留中のユーザー登録を表示
承認保留中のユーザー登録を表示するには:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスでState=Pending approvalでフィルタリングし、Enterを押します。
新しいユーザーアカウントを承認するまたは拒否する
承認保留中のユーザー登録は、管理者エリアから承認または拒否できます。
ユーザー登録を承認するまたは拒否するには:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスでState=Pending approvalでフィルタリングし、Enterを押します。
- 承認するまたは拒否するユーザー登録に対して、縦方向の省略記号( )を選択し、次に承認するまたは拒否を選択します。
ユーザーを承認すると:
- アカウントが有効化されます。
- ユーザーの状態がアクティブに変更されます。
- サブスクリプションのシートを消費します。
ユーザーを拒否すると:
- ユーザーがサインインしたり、インスタンス情報にアクセスしたりするのを防ぎます。
- ユーザーを削除します。
ロールのプロモート保留中のユーザーを表示
ロールのプロモーションに対する管理者の承認が有効になっている場合、既存のユーザーを請求対象のロールにプロモートするメンバーシップリクエストには、管理者による承認が必要です。
ロールのプロモート保留中のユーザーを表示するには:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
- ロールのプロモートを選択します。
リクエストされた最高のロールを持つユーザーのリストが表示されます。リクエストを承認するか拒否できます。
ユーザーをブロックおよびブロック解除する
GitLab管理者は、ユーザーをブロックおよびブロック解除できます。ユーザーがインスタンスにアクセスするのを望まないが、そのデータを保持したい場合に、ユーザーをブロックする必要があります。
ブロックされたユーザー:
- サインインしたり、リポジトリにアクセスしたりできません。
- 関連付けられたデータは、これらのリポジトリに残ります。
- slash commands in Slackを使用できません。
- シートを占有しません。
ユーザーをブロックする
前提条件:
- インスタンスの管理者である必要があります。
ユーザーのインスタンスへのアクセスをブロックできます。
ユーザーをブロックするには:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
- ブロックしたいユーザーに対して、縦方向の省略記号( )を選択し、次にブロックを選択します。
他のユーザーからの不正行為をレポートするには、不正行為のレポートを参照してください。管理者エリアでの不正行為レポートに関する詳細については、不正行為レポートの解決を参照してください。
ユーザーをブロック解除する
ユーザーをブロック解除して、インスタンスへのアクセスを再度許可できます。
ユーザーをブロック解除するには:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスでState=Blockedでフィルタリングし、Enterを押します。
- ブロック解除したいユーザーに対して、縦方向の省略記号( )を選択し、次にブロック解除を選択します。
ユーザーの状態はアクティブに設定され、シートを消費します。
ユーザーはGitLabAPIを使用してブロック解除することもできます。
ブロック解除オプションは、LDAPユーザーでは利用できない場合があります。ブロック解除オプションを有効にするには、まずLDAPの識別子を削除する必要があります:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスでState=Blockedでフィルタリングし、Enterを押します。
- ユーザーを選択します。
- 識別子タブを選択します。
- LDAPプロバイダーを見つけて削除を選択します。
ユーザーを無効にするおよびアクティブ化する
GitLab管理者は、ユーザーを無効にするおよびアクティブ化できます。最近のアクティビティがない場合や、インスタンスのシートを占有させたくない場合は、ユーザーを無効にする必要があります。
無効化されたユーザー:
- GitLabにサインインできます。
- 無効化されたユーザーがサインインすると、自動的に再アクティブ化されます。
- リポジトリまたはAPIにアクセスできません。
- slash commands in Slackを使用できません。
- シートを占有しません。詳細については、請求対象ユーザーを参照してください。
ユーザーを無効にすると、そのプロジェクト、グループ、および履歴は保持されます。
ユーザーを無効にする
前提条件:
- ユーザーは過去90日間アクティビティがありません。
ユーザーを無効にするには:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 無効にするユーザーに対して、縦方向の省略記号( )を選択し、次に無効にするを選択します。
- 確認ダイアログで、無効にするを選択します。
ユーザーは、アカウントが無効化されたことを知らせるメール通知を受け取ります。このメールの後、彼らは通知を受け取らなくなります。詳細については、user deactivation emailsを参照してください。
GitLabAPIを使用してユーザーを無効にするには、ユーザーを無効にするを参照してください。永続的なユーザー制限に関する情報については、ユーザーをブロックおよびブロック解除するを参照してください。
GitLab.comサブスクリプションからユーザーを削除するには、Remove users from your subscriptionを参照してください。
休止中のユーザーを自動的に無効化する
管理者は、以下のいずれかのユーザーの自動無効化を有効にできます:
- 1週間以上前に作成され、サインインしていないユーザー。
- 指定された期間(デフォルトおよび最小90日)アクティビティがないユーザー。
休止中のメンバーを自動的に無効化するには:
- 右上隅で、管理者を選択します。
- 設定 > 一般を選択します。
- アカウントと制限セクションを展開します。
- 休止中のユーザーの下で、非アクティブな期間後に休眠ユーザーを非アクティブ化するをチェックします。
- アクティブ解除前の非アクティブ期間の下で、非アクティブ化までの日数を入力します。最小値は90日です。
- 変更を保存を選択します。
この機能が有効な場合、GitLabは毎日ジョブを実行して休止中のユーザーを無効化します。
1日あたり最大100,000人のユーザーを無効化できます。
デフォルトでは、アカウントが無効化されるとユーザーはメール通知を受け取ります。user deactivation emailsを無効にできます。
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時間ごとにジョブを実行して未確認ユーザーを削除します。このジョブは、過去unconfirmed_users_delete_after_days日以上前に登録したユーザーのみを削除します。
このジョブは、email_confirmation_settingがsoftまたはhardに設定されている場合にのみ実行されます。
1日あたり最大240,000人のユーザーを削除できます。
ユーザーを再アクティブ化する
ユーザーを再アクティブ化するには:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスでState=Deactivatedでフィルタリングし、Enterを押します。
- 再アクティブ化したいユーザーに対して、縦方向の省略記号( )を選択し、次にアクティブ化を選択します。
ユーザーの状態はアクティブに設定され、シートを消費します。
無効化されたユーザーは、UIを通じて再度ログインすることで、自分でアカウントを再アクティブ化することもできます。ユーザーはGitLabAPIを使用して再アクティブ化することもできます。
ユーザーをBANおよびBANを解除する
GitLab管理者は、ユーザーをBANおよびBANを解除できます。ユーザーをブロックし、インスタンスから彼らのアクティビティを非表示にしたい場合に、そのユーザーをBANする必要があります。
BANされたユーザー:
- サインインしたり、リポジトリにアクセスしたりできません。
- 関連付けられたプロジェクト、イシュー、マージリクエスト、またはコメントは非表示になります。
- slash commands in Slackを使用できません。
- シートを占有しません。
ユーザーをBANする
ユーザーをBANしてブロックし、彼らのコントリビュートを非表示にできます。
ユーザーをBANするには:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
- BANしたいメンバーの隣にある縦方向の省略記号( )を選択します。
- ドロップダウンリストから、メンバーをBANを選択します。
ユーザーのBANを解除する
ユーザーのBANを解除するには:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスでState=Bannedでフィルタリングし、Enterを押します。
- BANしたいメンバーの隣にある縦方向の省略記号( )を選択します。
- ドロップダウンリストから、Unban memberを選択します。
ユーザーの状態はアクティブに設定され、シートを消費します。
ユーザーを削除する
ユーザーを削除するには:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 削除したいユーザーに対して、縦方向の省略記号( )を選択し、次にユーザーを削除を選択します。
- ユーザー名を入力します。
- 次のいずれかを選択します:
- ユーザーのみをユーザーを削除します。
- ユーザーと、そのコントリビュート(マージリクエスト、イシュー、唯一のグループオーナーであるグループなど)をユーザーとコントリビュートを削除します。
ユーザーは、グループの継承された、または直接のオーナーである場合にのみ削除できます。ユーザーが唯一のグループオーナーである場合、そのユーザーは削除できません。
ユーザーを信頼するおよびユーザーの信用を解除する
デフォルトでは、ユーザーは信頼されておらず、スパムと見なされるイシュー、ノート、およびスニペットの作成をブロックされています。ユーザーを信頼すると、ブロックされることなくイシュー、ノート、およびスニペットを作成できます。
ユーザーを信頼する
ユーザーを信頼するには:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
- ユーザーを選択します。
- ユーザー管理ドロップダウンリストから、ユーザーを信頼するを選択します。
- 確認ダイアログで、ユーザーを信頼するを選択します。
ユーザーの信用を解除する
ユーザーの信用を解除するには:
- 右上隅で、管理者を選択します。
- 概要 > ユーザーを選択します。
- 検索ボックスで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