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を使用する
- 右上隅で、管理者を選択します。
- 設定 > 一般を選択します。
- 展開サインインの制限:
- 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を適用できます:
- 管理者ユーザー。
- カスタム管理者ロールを割り当てられている一般ユーザー。
- 右上隅で、管理者を選択します。
- 左側のサイドバーで、設定 > 一般を選択します。
- 展開サインインの制限セクション:
- 管理者に2要素認証を適用するを選択します。
- 2要素認証の猶予期間に、時間数を入力します。次回のサインイン試行時に2FAを適用したい場合は、
0と入力します。
- 変更を保存を選択します。
外部プロバイダーを使用してGitLabにサインインする場合、この設定はユーザーに対して2FAを強制しません。2FAはその外部プロバイダーで有効にする必要があります。
グループ内のすべてのユーザーに2FAを適用する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
グループまたはサブグループ内のすべてのユーザーに2FAを適用できます。
2FAの適用は、直接および継承されたメンバーのグループメンバーの両方に適用されます。サブグループに2FAが適用されている場合、継承されたメンバーは認証要素を登録する必要があります。継承されたメンバーは、祖先グループのメンバーです。
メールOTPは2FAの要件を満たしません。メンバーは、アプリベースのTOTPまたはWebAuthnのいずれかを設定する必要があります。
前提条件:
- グループのオーナーロールが必要です。
グループに2FAを適用するには:
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- 設定 > 一般を選択します。
- 権限とグループ機能を展開します。
- このグループ内のすべてのユーザーは2要素認証を設定する必要がありますを選択します。
- (オプション)任意。**2FA施行の遅延(時間)**で、猶予期間を継続したい時間数を入力します。トップレベルグループとそのサブグループおよびプロジェクトに複数の異なる猶予期間がある場合、最も短い猶予期間が使用されます。
- 変更を保存を選択します。
アクセストークンは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要件を設定するのを防ぐには:
- トップレベルグループの設定 > 一般に移動します。
- 権限とグループ機能セクションを展開します。
- サブグループに対して、より厳格な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を無効にするには:
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- 管理 > メンバーを選択します。
- エンタープライズバッジと2FAバッジが付いているユーザーを探します。
- その他のアクション( )を選択し、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その後、次のいずれかの方法で認証します:
- 正しいOTPを入力します。
- FortiAuthenticatorが有効な場合は、デバイスのプッシュ通知に応答します。
認証が成功すると、関連付けられたSSHキーを使用して、15分間(デフォルト)SSHを介したGit操作を実行できます。
セキュリティの制限
2FAは、侵害された秘密SSHキーを持つユーザーを保護しません。
OTPが検証されると、設定されたセッション期間中、誰でもその秘密SSHキーを使用してSSHを介してGitを実行できます。