モデレートユーザー(管理職)

これは管理に関する文書です。グループレベルでのユーザーの管理については、グループレベルのドキュメントを参照してください。

GitLab管理者は、ユーザーを承認者、ブロック者、禁止者、非アクティブ者にすることで、ユーザーのアクセスを管理することができます。

承認待ちのユーザー

_承認_待ち状態のユーザーは、管理者によるアクションが必要です。ユーザー登録が承認待ちの状態になるのは、管理者が以下のいずれかのオプションを有効にしているためです:

この設定が有効な状態でユーザーがアカウント登録した場合:

  • ユーザーは承認待ちの状態になります。
  • ユーザーには、アカウントが管理者による承認待ちであることを伝えるメッセージが表示されます。

承認待ちのユーザー:

  • 機能的にはブロックされたユーザーと同じです。
  • サインインできません。
  • Git リポジトリまたは GitLab API にアクセスできません。
  • GitLabからの通知を受け取りません。
  • 座席を消費しません。

サインインを許可するには、管理者の承認が必要です。

承認待ちのユーザー登録を見る

承認待ちのユーザー登録を表示します:

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 概要 > ユーザーを選択します。
  4. 承認待ちタブを選択します。

ユーザー登録の承認者または拒否者

承認待ちのユーザー登録は、管理エリアから承認または拒否することができます。

ユーザー登録の承認または拒否を行うには、以下の手順に従います:

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 概要 > ユーザーを選択します。
  4. 承認待ちタブを選択します。
  5. オプション。ユーザーを選択します。
  6. 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
  7. 承認者]または[拒否者]を選択します。

ユーザーを承認します:

ユーザーのブロックとブロック解除

GitLab管理者はユーザーをブロックしたりブロック解除したりすることができます。

ユーザーをブロック

GitLabインスタンスへのユーザーのアクセスを完全に防ぐために、管理者はユーザーをブロックすることができます。

ユーザーをブロックするには、不正利用レポーターを経由するか、LDAP で削除するか、管理エリアから直接行います。これを行うには

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 概要 > ユーザーを選択します。
  4. オプション。ユーザーを選択します。
  5. 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
  6. ブロックを選択します。

ブロックされたユーザー:

  • サインインできません。
  • Git リポジトリや API にアクセスできません。
  • GitLabからの通知を受け取りません。
  • スラッシュコマンドが使えません。
  • 座席を消費しません。

ブロックされたユーザーの個人プロジェクト、グループ、ユーザー履歴はそのまま残ります。

note
GitLab APIを使用してユーザーをブロックすることもできます。

ユーザーのブロックを解除

ブロックされたユーザーは、管理エリアからブロックを解除することができます。これを行うには

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 概要 > ユーザーを選択します。
  4. ブロック」タブを選択します。
  5. オプション。ユーザーを選択します。
  6. 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
  7. ブロックの解除]を選択します。

ユーザーの状態がアクティビティに設定され、シートが消費されます。

note
ユーザーはGitLab API を使ってブロックを解除することもできます。

LDAP ユーザーは、ブロック解除オプションを使用できない場合があります。ブロック解除オプションを有効にするには、まず LDAP ID を削除する必要があります:

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 概要 > ユーザーを選択します。
  4. ブロック」タブを選択します。
  5. ユーザーを選択します。
  6. Identitiesタブを選択します。
  7. LDAPプロバイダを検索し、[Delete]を選択します。

ユーザーの有効化と非有効化

GitLab管理者はユーザーのアクティベートとデアクティベートを行うことができます。

ユーザーの無効化

GitLab 12.4で導入されました

最近のアクティビティがないGitLabユーザーのアクセスを一時的に防ぐために、管理者はユーザーを非アクティブにすることができます。

ユーザーを非アクティブにすることは、機能的にはユーザーをブロックすることと同じですが、以下の違いがあります:

  • ユーザーがUIから再ログインすることは禁止されません。
  • 無効化されたユーザーが GitLab UI にログインし直すと、そのアカウントはアクティブに設定されます。

無効化されたユーザー:

  • Git リポジトリや API にアクセスできません。
  • GitLabからの通知を受け取りません。
  • スラッシュコマンドが使えません。
  • 座席を消費しません。

無効化されたユーザーの個人プロジェクト、グループ、ユーザー履歴はそのまま残ります。

note
ユーザー停止メールが有効になっている場合、ユーザーにはアカウントの停止が通知されます。

ユーザーは管理エリアから無効化できます。これを行うには

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 概要 > ユーザーを選択します。
  4. オプション。ユーザーを選択します。
  5. 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
  6. 無効化]を選択します。

非アクティブ化オプションを管理者に表示するには、ユーザー:

  • ユーザーの状態がアクティブであること。
  • 休眠状態であること。
note
ユーザーはGitLab API を使って停止することもできます。

休眠ユーザーを自動的に停止

  • GitLab 14.0 で導入されました
  • GitLab 14.5で導入されたGitLab generate botの除外。
  • GitLab 15.4で導入されたカスタマイズ可能な期間
  • GitLab15.5で導入れた非アクティブ期間の下限を90日に設定できるようになりました。

管理者は、以下のいずれかに該当するユーザーの自動無効化を有効にすることができます:

  • 1週間以上前に作成され、サインインしていないユーザー。
  • 指定された期間アクティビティがない(デフォルト、最低90日間)。

そのためには

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 設定] > [全般]を選択します。
  4. アカウントと制限」セクションを展開します。
  5. 休眠ユーザー]で、[一定期間操作がない場合、休眠ユーザーを無効にする]をチェックします。
  6. 非アクティブ化までの日数]で、非アクティブ化までの日数を入力します。最小値は90日です。
  7. 変更を保存を選択します。

この機能を有効にすると、GitLabは1日1回ジョブを実行して休眠ユーザーを停止します。

1日あたり最大100,000ユーザーを停止させることができます。

note
GitLabが生成したボットは、休眠ユーザーの自動無効化から除外されます。

未確認ユーザーの自動削除

  • GitLab 16.1 でdelete_unconfirmed_users_settingというフラグで導入されました。デフォルトでは無効になっています。
  • GitLab 16.2ではデフォルトで有効

前提条件:

  • 管理者である必要があります。

両方のユーザーを自動的に削除することができます:

  • メールアドレスを確認したことがないユーザー。
  • 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_settingsoft またはhardに設定されている場合にのみ実行されます。

1日あたり最大240,000ユーザーを削除できます。

ユーザーのアクティベート

GitLab 12.4で導入されました

停止したユーザーを管理エリアからアクティブにすることができます。

そのためには

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 概要 > ユーザーを選択します。
  4. 非アクティブ化] タブを選択します。
  5. オプション。ユーザーを選択します。
  6. 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
  7. アクティベートを選択します。

ユーザーの状態がアクティビティに設定され、シートが消費されます。

note
非アクティブになったユーザーは、UIからログインし直すことでアカウントをアクティブにすることができます。GitLab APIを使ってユーザーをアクティブにすることもできます。

ユーザーの禁止と解除

  • 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することができます。

ユーザーを禁止するには、管理者エリアを使用します。これを行うには

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 概要 > ユーザーを選択します。
  4. オプション。ユーザーを選択します。
  5. 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
  6. Banユーザーを選択します。

禁止されたユーザーは席を消費しません。

ユーザーの出禁解除

禁止されたユーザーは、管理エリアを使って禁止を解除することができます。これを行うには、以下の手順に従います:

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 概要 > ユーザーを選択します。
  4. 禁止]タブを選択します。
  5. オプション。ユーザーを選択します。
  6. 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
  7. ユーザー禁止解除]を選択します。

ユーザーの状態がアクティビティに設定され、シートが消費されます。

ユーザーの削除

ユーザーを削除するには、管理エリアを使用します。

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 概要 > ユーザーを選択します。
  4. 禁止]タブを選択します。
  5. オプション。ユーザーを選択します。
  6. 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
  7. ユーザーの削除を選択します。
  8. ユーザー名を入力します。
  9. ユーザーの削除を選択します。
note
ユーザーを削除できるのは、グループの継承オーナーまたは直接オーナーがいる場合のみです。ユーザーが唯一のグループオーナーである場合は削除できません。

また、ユーザーとそのユーザーが唯一のグループオーナーであるマージリクエスト、イシュー、グループなどの貢献者を削除することもできます。

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 概要 > ユーザーを選択します。
  4. 禁止]タブを選択します。
  5. オプション。ユーザーを選択します。
  6. 設定}を選択します。ユーザー管理ドロップダウンリストを選択します。
  7. Delete user and contributionsを選択します。
  8. ユーザー名を入力します。
  9. Delete user and contributionsを選択します。
note
15.1以前では、直接のメンバーのうち、削除されたユーザーが唯一のオーナーであるグループも削除されていました。

トラブルシューティング

ユーザーをモデレートする際に、特定の条件に基づいて一括アクションを実行する必要があるかもしれません。以下のrailsコンソールスクリプトはその例を示しています。railsコンソールセッションを起動して、以下のようなスクリプトを使用することができます:

最近のアクティビティがないユーザーを非アクティブにします。

管理者は、最近のアクティビティがないユーザーを停止することができます。

caution
データを変更するコマンドは、正しく実行しなかったり適切な条件下で実行しなかったりすると、ダメージを与える可能性があります。必ず最初にテスト環境でコマンドを実行し、リストアできるようにバックアップインスタンスを用意してください。
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

最近のアクティビティがないユーザーをブロック

管理者は、最近のアクティビティがないユーザーをブロックできます。

caution
データを変更するコマンドは、正しく実行しなかったり適切な条件下で実行しなかったりすると、ダメージを与える可能性があります。必ず最初にテスト環境でコマンドを実行し、リストアできるようにバックアップインスタンスを用意してください。
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

プロジェクトやグループを持たないユーザーのブロックまたは削除

管理者は、プロジェクトやグループを持たないユーザーをブロックまたは削除できます。

caution
データを変更するコマンドは、正しく実行しなかったり適切な条件下で実行しなかったりすると、ダメージを与える可能性があります。必ず最初にテスト環境でコマンドを実行し、リストアできるようにバックアップインスタンスを用意してください。
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