2要素認証

2要素認証(2FA)は、GitLabアカウントのセキュリティを強化します。 有効にすると、ユーザー名とパスワードでのログインに加えて、ワンタイムパスワード認証で生成されたコードの入力が求められます。 例えば、お使いのデバイスのパスワードマネージャーなどです。

2要素認証を有効後は、あなた以外の人があなたのアカウントにログインするためには、あなたのユーザー名とパスワードを知りワンタイムパスワードシークレットにアクセスする必要があります。

概要

ヒント:2FAを有効にしたら、リカバリーコードのバックアップをお忘れなく!

時間ベースのワンタイムパスワード(TOTP)に加えて、GitLabはU2F(Universal 2nd Factor)デバイスを第2要素認証としてサポートしています。 有効にすると、ログインするためのユーザー名とパスワードに加えて、U2Fデバイスを有効化するよう促され(通常はデバイスのボタンを押す)、U2Fデバイスがあなたの代わりにセキュリティ認証を行います。

U2Fデバイスを紛失した場合でもアカウントにアクセスできるように、ワンタイムパスワード認証装置U2Fデバイスの両方で2要素認証を設定することを強くお勧めします。

2要素認証の有効化

2要素認証を有効にするには、ワンタイムパスワード認証装置を使用する方法とU2Fデバイスを使用する方法があります。

ワンタイムパスワード認証による2要素認証の実現

2要素認証を有効にするには。

  1. GitLab上の設定。
    1. GitLabアカウントにログインします。
    2. プロファイル設定に移動します。
    3. アカウントに移動します。
    4. 2要素認証の有効化をクリックします
  2. お使いのデバイス(通常は携帯電話)での設定
    1. 以下の例のような、互換性のあるアプリケーションをインストールしてください。
      • Authenticator:iOSデバイス用のオープンソースアプリ。
      • andOTP:PGP暗号化バックアップに対応したAndroid用の機能豊富なオープンソースアプリ。
      • FreeOTP:Android用のオープンソースアプリ。
      • Google Authenticator:iOSおよびAndroid向けのプロプライエタリなアプリ。
      • SailOTP: SailFish OS用のオープンソースアプリ。
    2. アプリケーションでは、次の2つの方法のいずれかで新しいエントリを追加します。
      • GitLabに表示されたコードを端末のカメラでスキャンすると、自動的にエントリーが追加されます。
      • 手動でエントリーを追加する場合は、提供された詳細情報を入力する。
  3. GitLab上の設定。
    1. ピンコードの欄に、端末に入力されている6桁のピン番号を入力してください。
    2. Submit」をクリックします。

入力したピンが正しければ、2要素認証が有効であることを示すメッセージが表示され、リカバリーコードの一覧が表示されます。 必ずダウンロードして、安全な場所に保管してください。

U2Fデバイスによる2要素認証の有効化

GitLab 8.9で導入されました。

GitLabは公式にはYubiKeyU2Fデバイスのみをサポートしていますが、SoloKeysGoogle Titan Security Keyを利用できているユーザーもいます。

U2Fワークフローは、以下のデスクトップブラウザでサポートされています。

  • Chrome
  • Edge
  • Firefox 67+
  • Opera
注:Firefox 47-66 では、about:configで FIDO U2F API を有効にすることができます。security.webauth.u2f を検索し、それをダブルクリックしてtrueに切り替えます。

U2Fデバイスで2要素認証を設定するには

  1. GitLabアカウントにログインします。
  2. プロファイル設定に移動します。
  3. アカウントに移動します。
  4. Enable Two-Factor Authentication」をクリックします。
  5. U2Fデバイスを接続してください。
  6. Set up New U2F Device」をクリックします。
  7. デバイス上でライトが点滅し始めるので、そのボタンを押して起動します。

デバイスの設定に成功したことを示すメッセージが表示されます。U2Fデバイスの登録をクリックして、手続きを完了します。

リカバリーコード

注:U2Fデバイスにはリカバリーコードは生成されません。
注意:各コードは、アカウントへのログインに1回のみ使用できます。

二要素認証を有効にするとすぐに、リカバリーコードをダウンロードするよう促されます。 ワンタイムパスワード認証にアクセスできなくなった場合、リカバリーコードを使用してアカウントにログインすることができます。 安全な場所に保管するため、リカバリーコードをコピー、印刷、またはダウンロードすることをお勧めします。 リカバリーコードをダウンロードする場合、ファイルの名前はgitlab-recovery-codes.txtになります。

リカバリーコードを紛失したり、新しいコードを生成したい場合は、2要素認証のアカウント設定ページから、またはSSHを使って行うことができます。

2要素認証でログインする

2要素認証を有効にしてログインすると、通常のログインと少しだけ異なります。 通常通りにユーザー名とパスワードの認証情報を入力すると、有効にした2要素認証の種類に応じて、2つ目のプロンプトが表示されます。

ワンタイムパスワードでのログイン

ワンタイムパスワード認証アプリのピン、またはリカバリーコードを入力してログインします。

U2Fデバイスでのログイン

U2Fデバイスでログインするには。

  1. Login via U2F Device」をクリックします。
  2. 端末のライトが点滅しますので、ボタンを押して起動してください。

デバイスが認証要求に応答したことを示すメッセージが表示され、自動的にログインします。

2要素認証の無効化

2要素認証を無効にする必要が生じた場合。

  1. GitLabアカウントにログインします。
  2. プロファイル設定に移動します。
  3. アカウントに移動します。
  4. 2要素認証」の「無効」をクリックします。

これにより、モバイルアプリケーションやU2Fデバイスを含むすべての2ファクタ認証登録がクリアされます。

パーソナルアクセストークン

2要素認証を有効にすると、コマンドラインやGitLabのAPIを使用してHTTPS経由でGitを認証する際に、通常のアカウントパスワードを使用できなくなります。 代わりにパーソナルアクセストークンを使用する必要があります。

リカバリーオプション

2要素認証を無効にするには(コード生成デバイスを紛失した場合など)、以下の方法があります。

保存したリカバリーコードの使用

アカウントの2要素認証を有効にすると、いくつかのリカバリーコードが生成されます。 これらのコードを保存している場合は、いずれかのコードを使用してサインインできます。

リカバリーコードを使用するには、GitLabのサインインページでユーザー名/Eメールとパスワードを入力します。 2ファクターコードの入力を求められたら、リカバリーコードを入力します。

一度使用したリカバリーコードは再使用できませんが、保存した他のリカバリーコードは使用できます。

SSHを使った新しいリカバリーコードの生成

2要素認証を有効にする際、ユーザーはリカバリーコードの保存をし忘れることがよくあります。 GitLabアカウントにSSHキーが追加されている場合、SSHを使って新しいリカバリーコードを生成できます。

  1. 以下を実行する:

    ssh git@gitlab.example.com 2fa_recovery_codes
    
  2. 新しいコードを生成したいかというメッセージが表示されます。この処理を続けると、以前に保存したコードは無効になります。

    Are you sure you want to generate new two-factor recovery codes?
    Any existing recovery codes you saved will be invalidated. (yes/no)
    
    yes
    
    Your two-factor authentication recovery codes are:
    
    119135e5a3ebce8e
    11f6v2a498810dcd
    3924c7ab2089c902
    e79a3398bfe4f224
    34bd7b74adbc8861
    f061691d5107df1a
    169bf32a18e63e7f
    b510e7422e81c947
    20dbed24c5e74663
    df9d3b9403b9c9f0
    
    During sign in, use one of the codes above when prompted for your
    two-factor code. Then, visit your Profile Settings and add a new device
    so you do not lose access to your account again.
    
  3. GitLabのサインインページにアクセスし、ユーザー名/メールアドレスとパスワードを入力します。 2ファクターコードの入力を求められたら、コマンドラインの出力から取得したリカバリーコードのいずれかを入力します。

サインイン後すぐに、「プロフィール設定」>「アカウント」で、新しいデバイスで2要素認証を設定してください。

2要素認証リカバリーコードの再生成

2要素認証リカバリーコードを再生成するには、デスクトップのブラウザにアクセスする必要があります。

  1. GitLabに移動します。
  2. GitLabアカウントにサインインします。
  3. プロファイル設定に移動します。
  4. account} Account > Two-Factor Authentication (2FA)を選択します。
  5. すでに2要素認証を設定している場合は、「Manage two-factor authentication」をクリックします。
  6. Register Two-Factor Authenticator」ペインで、「Regenerate recovery codes」をクリックします。
注:2FAのリカバリーコードを再生成した場合は、保存してください。 以前に作成した2FAコードは使用できなくなります。

GitLabの管理者に、あなたのアカウントの2要素認証を無効にしてもらう

保存したリカバリーコードが使えない、または新しいリカバリーコードを生成できない場合は、GitLabのグローバル管理者に依頼してアカウントの 2要素認証を無効にしてください。 これにより、アカウントの安全性が一時的に低下します。 できるだけ早くサインインして、2要素認証を再度有効にしてください。

GitLab管理者への注意事項

  • GitLabのバックアップを復元した後も、2要素認証が機能するように特に注意する必要があります。
  • TOTPサーバーで2要素認証が正しく認証されるようにするには、GitLabサーバーの時刻がNTPなどのサービスで同期されていることを確認するとよいでしょう。 そうしないと、時刻が合わないために認証がいつも失敗してしまう場合があります。
  • GitLab U2Fの実装は、GitLabインスタンスが複数のホスト名やFQDNからアクセスされている場合には機能し_ませ_ん。 U2Fの各登録は、登録時_の現在のホスト名_にリンクされており、他のホスト名/FQDNには使用できません。

    例えば、あるユーザーがfirst.host.xyzsecond.host.xyzからGitLabインスタンスにアクセスを試みた場合、以下のようになります:

    • ユーザーはcccccckdltbvjniijfnuejhjgcedktvribdtjnvfrcgtfirst.host.xyz からログインし、U2F キーを登録します。
    • ユーザーはログアウトし、first.host.xyz からU2F認証でログインをしようとすると、U2F認証が成功します。
    • ユーザーがログアウトし、second.host.xyz からU2F認証でログインしようとすると、U2Fキーがfirst.host.xyzでしか登録されていないため、U2F認証は失敗します。
  • システムレベルまたはグループレベルで2要素認証を強制するには、「2要素認証の強制」を参照してください。

トラブルシューティング

invalid pin code エラーが表示される場合は、認証アプリケーションと GitLab インスタンス自体の間で時刻同期に問題がある可能性があります。

ほとんどの認証アプリの設定には、コード自体の時刻を同期する機能があります。 例えば、Google Authenticatorの場合は、Settings > Time correction for codes で設定します。