正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

2要素認証を適用する

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

2要素認証(2FA)は、ユーザーが自身の身元を証明するために2つの異なる要素を提供する認証方法です:

  • ユーザー名とパスワード。
  • アプリケーションによって生成されたコードなどの2番目の認証方法。

2FAは、不正なユーザーがアカウントにアクセスするのをより困難にします。両方の要素を必要とするためです。

SSOを使用し、適用している場合、Identity Provider(IdP)側ですでに2FAを適用している可能性があります。GitLab側でも2FAを適用するのは不要な場合があります。

すべてのユーザーに2FAを適用する

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed、GitLab Dedicated

管理者は、次の2つの方法ですべてのユーザーに2FAを適用できます:

  • 次回のサインイン時に適用します。

  • 次回のサインイン時に提案しますが、適用前に猶予期間を設けます。

    設定された猶予期間が経過した後、ユーザーはサインインできますが、/-/profile/two_factor_authにある2FA設定エリアを離れることはできません。

UIまたはAPIを使用して、すべてのユーザーに2FAを適用できます。

UIを使用する

  1. 右上隅で、管理者を選択します。
  2. 設定 > 一般を選択します。
  3. 展開サインインの制限:
    • 2要素認証を実施するを選択して、この機能を有効にします。
    • 2要素認証の猶予期間に、時間数を入力します。次回のサインイン試行時に2FAを適用したい場合は、0と入力します。

APIを使用する

アプリケーション設定APIを使用して、次の設定を変更します:

  • require_two_factor_authentication
  • two_factor_grace_period

詳細については、APIコールを介してアクセスできる設定のリストを参照してください。

管理者に2FAを適用する

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed、GitLab Dedicated

管理者は、次の両方に2FAを適用できます:

  • 管理者ユーザー。
  • カスタム管理者ロールを割り当てられている一般ユーザー。
  1. 右上隅で、管理者を選択します。
  2. 左側のサイドバーで、設定 > 一般を選択します。
  3. 展開サインインの制限セクション:
    1. 管理者に2要素認証を適用するを選択します。
    2. 2要素認証の猶予期間に、時間数を入力します。次回のサインイン試行時に2FAを適用したい場合は、0と入力します。
  4. 変更を保存を選択します。

外部プロバイダーを使用してGitLabにサインインする場合、この設定はユーザーに対して2FAを強制しません。2FAはその外部プロバイダーで有効にする必要があります。

グループ内のすべてのユーザーに2FAを適用する

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

グループまたはサブグループ内のすべてのユーザーに2FAを適用できます。

2FAの適用は、直接および継承されたメンバーのグループメンバーの両方に適用されます。サブグループに2FAが適用されている場合、継承されたメンバーは認証要素を登録する必要があります。継承されたメンバーは、祖先グループのメンバーです。

メールOTPは2FAの要件を満たしません。メンバーは、アプリベースのTOTPまたはWebAuthnのいずれかを設定する必要があります。

前提条件:

  • グループのオーナーロールが必要です。

グループに2FAを適用するには:

  1. 上部のバーで、検索または移動先を選択して、グループを見つけます。
  2. 設定 > 一般を選択します。
  3. 権限とグループ機能を展開します。
  4. このグループ内のすべてのユーザーは2要素認証を設定する必要がありますを選択します。
  5. (オプション)任意。**2FA施行の遅延(時間)**で、猶予期間を継続したい時間数を入力します。トップレベルグループとそのサブグループおよびプロジェクトに複数の異なる猶予期間がある場合、最も短い猶予期間が使用されます。
  6. 変更を保存を選択します。

アクセストークンはAPIベースであるため、認証に第2要素を提供する必要はありません。トークンは2FAが適用される前に生成されたものであっても有効です。

GitLabの受信メール機能は2FAの適用に従いません。ユーザーは、イシューの作成やマージリクエストへのコメントなど、受信メール機能を使用できますが、最初に2FAを使用して認証する必要はありません。これは、2FAが適用されている場合でも適用されます。

サブグループでの2FA

デフォルトでは、各サブグループはトップレベルグループとは異なる2FA要件を設定できます。

ユーザーが階層内の複数のグループのメンバーである場合、最も制限の厳しい2FA要件がすべてのレベルに適用されます。

たとえば、トップレベルグループで2FAが適用されている場合:

  • トップレベルグループのすべてのメンバーは2FAを使用する必要があります。
  • 子孫サブグループのすべてのメンバーは2FAを使用する必要があります。

トップレベルグループで2FAが適用されていない場合:

  • サブグループに対して、より厳格な2FA認証の適用を許可するが有効な場合、各サブグループは個別に2FA要件を適用できます。サブグループが2FA要件を有効にする場合:

    • トップレベルグループのすべてのメンバーは2FAを使用する必要があります。
    • 兄弟サブグループのすべてのメンバーは2FAを使用する必要があります。
  • サブグループに対して、より厳格な2FA認証の適用を許可するが無効な場合、サブグループは個別に2FA要件を適用できません。階層内のどのメンバーにも2FAは必要ありません。

このグループ内のすべてのユーザーは2要素認証を設定する必要がありますが有効な場合、常にサブグループに対して、より厳格な2FA認証の適用を許可するよりも優先されます。

サブグループが個別の2FA要件を設定するのを防ぐには:

  1. トップレベルグループの設定 > 一般に移動します。
  2. 権限とグループ機能セクションを展開します。
  3. サブグループに対して、より厳格な2FA認証の適用を許可するチェックボックスをオフにします。

プロジェクトでの2FA

2FAを有効または適用しているグループに属するプロジェクトが、2FAを有効または適用していないグループと共有されている場合、非2FAグループのメンバーは2FAを使用せずにそのプロジェクトにアクセスできます。例:

  • グループAは2FAを有効にして適用しています。グループBは2FAを有効にしていません。
  • グループAに属するプロジェクトPがグループBと共有されている場合、グループBのメンバーは2FAなしでプロジェクトPにアクセスできます。

これを防ぐには、2FAグループのプロジェクト共有を防止します。

2FAが有効になっているグループまたはサブグループのプロジェクトにメンバーを追加しても、個別に追加したメンバーには2FAは必須ではありません

2FAを無効にする

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

単一のユーザーまたはすべてのユーザーに対して2FAを無効にできます。

このアクションは永続的で元に戻せません。ユーザーは、再度使用するために2FAを再有効化する必要があります。

ユーザーの2FAを無効にしても、すべてのユーザーに2FAを適用するまたはグループ内のすべてのユーザーに2FAを適用する設定は無効になりません。また、ユーザーが次回GitLabにサインインするときに2FAの設定を再度求められないように、適用されている2FA設定も無効にする必要があります。

すべてのユーザー向け

強制2FAが無効になっている場合でもすべてのユーザーの2FAを無効にするには、次のRakeタスクを使用します。

  • Linuxパッケージを使用するインストールの場合:

    sudo gitlab-rake gitlab:two_factor:disable_for_all_users
  • セルフコンパイルインストールの場合:

    sudo -u git -H bundle exec rake gitlab:two_factor:disable_for_all_users RAILS_ENV=production

単一のユーザー向け

管理者

Railsコンソールを使用して、単一の管理者の2FAを無効にすることができます:

admin = User.find_by_username('<USERNAME>')
user_to_disable = User.find_by_username('<USERNAME>')

TwoFactor::DestroyService.new(admin, user: user_to_disable).execute

管理者には、2FAが無効になったことが通知されます。

非管理者

RailsコンソールまたはAPIエンドポイントのいずれかを使用して、非管理者の2FAを無効にできます。

自分のアカウントの2FAを無効にできます。

APIエンドポイントを使用して、管理者の2FAを無効にすることはできません。

エンタープライズユーザー

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com

トップレベルグループのオーナーは、エンタープライズユーザーの2要素認証(2FA)を無効にできます。

2FAを無効にするには:

  1. 上部のバーで、検索または移動先を選択して、グループを見つけます。
  2. 管理 > メンバーを選択します。
  3. エンタープライズバッジと2FAバッジが付いているユーザーを探します。
  4. その他のアクション ellipsis_v )を選択し、2要素認証を無効にするを選択します。

APIを使用して、エンタープライズユーザー(グループのメンバーではなくなったエンタープライズユーザーを含む)の2FAを無効にすることもできます。

SSH操作によるGitの2FA

  • プラン: Premium、Ultimate
  • 提供形態: GitLab Self-Managed

デフォルトではこの機能は利用できません。管理者がtwo_factor_for_cliという名前の機能フラグを有効にすると、この機能を使用できるようになります。この機能は本番環境での使用には対応していません。この機能フラグは、2FAが有効な場合のGit操作のセッション期間にも影響します。

SSH操作によるGitの2FAを適用できます。ただし、代わりにED25519_SKまたはECDSA_SKSSHキーを使用する必要があります。詳細については、サポートされているSSHキーの種類を参照してください。2FAはGit操作のみに適用され、GitLab Shellからのpersonal_access_tokenなどの内部コマンドは除外されます。

ワンタイムパスワード(OTP)認証を実行するには、以下を実行します:

ssh git@<hostname> 2fa_verify

その後、次のいずれかの方法で認証します:

認証が成功すると、関連付けられたSSHキーを使用して、15分間(デフォルト)SSHを介したGit操作を実行できます。

セキュリティの制限

2FAは、侵害された秘密SSHキーを持つユーザーを保護しません。

OTPが検証されると、設定されたセッション期間中、誰でもその秘密SSHキーを使用してSSHを介してGitを実行できます。