2要素認証
2要素認証(2FA)は、GitLabアカウントのセキュリティを強化します。 有効にすると、ユーザー名とパスワードでのログインに加えて、ワンタイムパスワード認証で生成されたコードの入力が求められます。 例えば、お使いのデバイスのパスワードマネージャーなどです。
2要素認証を有効後は、あなた以外の人があなたのアカウントにログインするためには、あなたのユーザー名とパスワードを知り、ワンタイムパスワードシークレットにアクセスする必要があります。
概要
時間ベースのワンタイムパスワード(TOTP)に加えて、GitLabはU2F(Universal 2nd Factor)デバイスを第2要素認証としてサポートしています。 有効にすると、ログインするためのユーザー名とパスワードに加えて、U2Fデバイスを有効化するよう促され(通常はデバイスのボタンを押す)、U2Fデバイスがあなたの代わりにセキュリティ認証を行います。
U2Fデバイスを紛失した場合でもアカウントにアクセスできるように、ワンタイムパスワード認証装置とU2Fデバイスの両方で2要素認証を設定することを強くお勧めします。
2要素認証の有効化
2要素認証を有効にするには、ワンタイムパスワード認証装置を使用する方法とU2Fデバイスを使用する方法があります。
ワンタイムパスワード認証による2要素認証の実現
2要素認証を有効にするには。
-
GitLab上の設定。
- GitLabアカウントにログインします。
- プロファイル設定に移動します。
- アカウントに移動します。
- 2要素認証の有効化をクリックします
-
お使いのデバイス(通常は携帯電話)での設定
- 以下の例のような、互換性のあるアプリケーションをインストールしてください。
- Authenticator:iOSデバイス用のオープンソースアプリ。
- andOTP:PGP暗号化バックアップに対応したAndroid用の機能豊富なオープンソースアプリ。
- FreeOTP:Android用のオープンソースアプリ。
- Google Authenticator:iOSおよびAndroid向けのプロプライエタリなアプリ。
- SailOTP: SailFish OS用のオープンソースアプリ。
- アプリケーションでは、次の2つの方法のいずれかで新しいエントリを追加します。
- GitLabに表示されたコードを端末のカメラでスキャンすると、自動的にエントリーが追加されます。
- 手動でエントリーを追加する場合は、提供された詳細情報を入力する。
- 以下の例のような、互換性のあるアプリケーションをインストールしてください。
-
GitLab上の設定。
- ピンコードの欄に、端末に入力されている6桁のピン番号を入力してください。
- Submit」をクリックします。
入力したピンが正しければ、2要素認証が有効であることを示すメッセージが表示され、リカバリーコードの一覧が表示されます。 必ずダウンロードして、安全な場所に保管してください。
U2Fデバイスによる2要素認証の有効化
GitLab 8.9で導入されました。
GitLabは公式にはYubiKeyU2Fデバイスのみをサポートしていますが、SoloKeysやGoogle Titan Security Keyを利用できているユーザーもいます。
U2Fワークフローは、以下のデスクトップブラウザでサポートされています。
- Chrome
- Edge
- Firefox 67+
- Opera
security.webauth.u2f
を検索し、それをダブルクリックしてtrue
に切り替えます。U2Fデバイスで2要素認証を設定するには
- GitLabアカウントにログインします。
- プロファイル設定に移動します。
- アカウントに移動します。
- Enable Two-Factor Authentication」をクリックします。
- U2Fデバイスを接続してください。
- Set up New U2F Device」をクリックします。
- デバイス上でライトが点滅し始めるので、そのボタンを押して起動します。
デバイスの設定に成功したことを示すメッセージが表示されます。U2Fデバイスの登録をクリックして、手続きを完了します。
リカバリーコード
二要素認証を有効にするとすぐに、リカバリーコードをダウンロードするよう促されます。 ワンタイムパスワード認証にアクセスできなくなった場合、リカバリーコードを使用してアカウントにログインすることができます。 安全な場所に保管するため、リカバリーコードをコピー、印刷、またはダウンロードすることをお勧めします。 リカバリーコードをダウンロードする場合、ファイルの名前はgitlab-recovery-codes.txt
になります。
リカバリーコードを紛失したり、新しいコードを生成したい場合は、2要素認証のアカウント設定ページから、またはSSHを使って行うことができます。
2要素認証でログインする
2要素認証を有効にしてログインすると、通常のログインと少しだけ異なります。 通常通りにユーザー名とパスワードの認証情報を入力すると、有効にした2要素認証の種類に応じて、2つ目のプロンプトが表示されます。
ワンタイムパスワードでのログイン
ワンタイムパスワード認証アプリのピン、またはリカバリーコードを入力してログインします。
U2Fデバイスでのログイン
U2Fデバイスでログインするには。
- Login via U2F Device」をクリックします。
- 端末のライトが点滅しますので、ボタンを押して起動してください。
デバイスが認証要求に応答したことを示すメッセージが表示され、自動的にログインします。
2要素認証の無効化
2要素認証を無効にする必要が生じた場合。
- GitLabアカウントにログインします。
- プロファイル設定に移動します。
- アカウントに移動します。
- 2要素認証」の「無効」をクリックします。
これにより、モバイルアプリケーションやU2Fデバイスを含むすべての2ファクタ認証登録がクリアされます。
パーソナルアクセストークン
2要素認証を有効にすると、コマンドラインやGitLabのAPIを使用してHTTPS経由でGitを認証する際に、通常のアカウントパスワードを使用できなくなります。 代わりにパーソナルアクセストークンを使用する必要があります。
リカバリーオプション
2要素認証を無効にするには(コード生成デバイスを紛失した場合など)、以下の方法があります。
- 保存したリカバリーコードを使用する。
- SSHを使って新しいリカバリーコードを生成する。
- 2要素認証のリカバリーコードを再生成する。
- GitLabの管理者に、あなたのアカウントの2要素認証を無効にしてもらう。
保存したリカバリーコードの使用
アカウントの2要素認証を有効にすると、いくつかのリカバリーコードが生成されます。 これらのコードを保存している場合は、いずれかのコードを使用してサインインできます。
リカバリーコードを使用するには、GitLabのサインインページでユーザー名/Eメールとパスワードを入力します。 2ファクターコードの入力を求められたら、リカバリーコードを入力します。
一度使用したリカバリーコードは再使用できませんが、保存した他のリカバリーコードは使用できます。
SSHを使った新しいリカバリーコードの生成
2要素認証を有効にする際、ユーザーはリカバリーコードの保存をし忘れることがよくあります。 GitLabアカウントにSSHキーが追加されている場合、SSHを使って新しいリカバリーコードを生成できます。
-
以下を実行する:
ssh git@gitlab.example.com 2fa_recovery_codes
-
新しいコードを生成したいかというメッセージが表示されます。この処理を続けると、以前に保存したコードは無効になります。
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.
-
GitLabのサインインページにアクセスし、ユーザー名/メールアドレスとパスワードを入力します。 2ファクターコードの入力を求められたら、コマンドラインの出力から取得したリカバリーコードのいずれかを入力します。
サインイン後すぐに、「プロフィール設定」>「アカウント」で、新しいデバイスで2要素認証を設定してください。
2要素認証リカバリーコードの再生成
2要素認証リカバリーコードを再生成するには、デスクトップのブラウザにアクセスする必要があります。
- GitLabに移動します。
- GitLabアカウントにサインインします。
- プロファイル設定に移動します。
- account} Account > Two-Factor Authentication (2FA)を選択します。
- すでに2要素認証を設定している場合は、「Manage two-factor authentication」をクリックします。
- Register Two-Factor Authenticator」ペインで、「Regenerate recovery codes」をクリックします。
GitLabの管理者に、あなたのアカウントの2要素認証を無効にしてもらう
保存したリカバリーコードが使えない、または新しいリカバリーコードを生成できない場合は、GitLabのグローバル管理者に依頼してアカウントの 2要素認証を無効にしてください。 これにより、アカウントの安全性が一時的に低下します。 できるだけ早くサインインして、2要素認証を再度有効にしてください。
GitLab管理者への注意事項
- GitLabのバックアップを復元した後も、2要素認証が機能するように特に注意する必要があります。
- TOTPサーバーで2要素認証が正しく認証されるようにするには、GitLabサーバーの時刻がNTPなどのサービスで同期されていることを確認するとよいでしょう。 そうしないと、時刻が合わないために認証がいつも失敗してしまう場合があります。
-
GitLab U2Fの実装は、GitLabインスタンスが複数のホスト名やFQDNからアクセスされている場合には機能し_ませ_ん。 U2Fの各登録は、登録時_の現在のホスト名_にリンクされており、他のホスト名/FQDNには使用できません。
例えば、あるユーザーが
first.host.xyz
とsecond.host.xyz
からGitLabインスタンスにアクセスを試みた場合、以下のようになります:- ユーザーはcccccckdltbvjniijfnuejhjgcedktvribdtjnvfrcgt
first.host.xyz
からログインし、U2F キーを登録します。 - ユーザーはログアウトし、
first.host.xyz
からU2F認証でログインをしようとすると、U2F認証が成功します。 - ユーザーがログアウトし、
second.host.xyz
からU2F認証でログインしようとすると、U2Fキーがfirst.host.xyz
でしか登録されていないため、U2F認証は失敗します。
- ユーザーはcccccckdltbvjniijfnuejhjgcedktvribdtjnvfrcgt
- システムレベルまたはグループレベルで2要素認証を強制するには、「2要素認証の強制」を参照してください。
トラブルシューティング
invalid pin code
エラーが表示される場合は、認証アプリケーションと GitLab インスタンス自体の間で時刻同期に問題がある可能性があります。
ほとんどの認証アプリの設定には、コード自体の時刻を同期する機能があります。 例えば、Google Authenticatorの場合は、Settings > Time correction for codes
で設定します。