2要素認証
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
2要素認証(2FA)を使用すると、GitLabアカウントのセキュリティがさらに強化されます。あなたのアカウントに他のユーザーがアクセスするには、ユーザー名とパスワードに加えて、2番目の認証要素へのアクセスが必要になります。
GitLabでは、2番目の認証要素として以下をサポートしています:
- ワンタイムパスワード認証アプリ(OTP)。有効にすると、サインイン時にコードの入力を求められます。コードは、OTP認証アプリ(お使いのデバイスのパスワードマネージャーなど)で生成されます。
- WebAuthnデバイス。サインインするためにユーザー名とパスワードを入力すると、WebAuthnデバイスをアクティブにする(通常はデバイスのボタンを押す)ように求められます。これにより、お客様に代わって安全な認証が実行されます。
デバイスを設定する場合は、OTPも設定して、デバイスを紛失した場合でもアカウントにアクセスできるようにしてください。
2要素認証にパーソナルアクセストークンを使用する
2FAが有効になっている場合、HTTPS経由のGitまたはGitLab APIでパスワードを使用して認証することはできません。代わりにパーソナルアクセストークンを使用できます。
OAuth認証情報ヘルパー
次のGit認証情報ヘルパーは、OAuthを使用してGitLabに対して認証を行います。これは2要素認証に対応しています。初回認証時に、ヘルパーがWebブラウザを開き、GitLabがアプリを承認するように求めます。2回目以降の認証に操作は必要ありません。
Git Credential Manager
Git Credential Manager(GCM)では、OAuthがデフォルトで認証に使用されます。手動で設定しなくてもGCMはGitLab.comをサポートします。GitLab Self-ManagedでGCMを使用するには、GitLabサポートを参照してください。
プッシュのたびに再認証する必要がないように、GCMはキャッシュと、セッション間で永続化するさまざまなプラットフォーム固有の認証情報ストアをサポートしています。この機能は、パーソナルアクセストークンを使用するかOAuthを使用するかにかかわらず役立ちます。
Git for WindowsにはGit Credential Managerが含まれています。
Git Credential Managerは、主にGitHub, Inc.によって開発されています。これはオープンソースプロジェクトであり、コミュニティによってサポートされています。
git-credential-oauth
git-credential-oauthは、手動設定なしでGitLab.comといくつかの一般的なパブリックホストをサポートします。GitLab Self-Managedで使用するには、git-credential-oauthカスタムホストのドキュメントを参照してください。
多くのLinuxディストリビューションには、git-credential-oauthがパッケージとして含まれています。
git-credential-oauthはオープンソースプロジェクトで、コミュニティによってサポートされています。
2要素認証を有効にする
2FAは、次のいずれかを使用して有効にできます:
- OTP認証アプリ。2FAを有効にした後、リカバリーコードをバックアップしてください。
- WebAuthnデバイス。
2FAを有効にするには、アカウントのメールアドレスを確認する必要があります。
ワンタイムパスワード認証アプリを有効にする
OTP認証アプリで2FAを有効にするには、次の手順を実行します:
- GitLab全体で:
- ユーザー設定にアクセスします。
- アカウントを選択します。
- Enable Two-factor Authentication(2要素認証を有効にする)を選択します。
- On your device (usually your phone)(デバイス(通常はお使いの携帯電話)の場合):
- 互換性のあるアプリケーションをインストールします。次に例を示します:
- クラウドベース(ハードウェアデバイスを紛失した場合にアクセスを復元できるため推奨されています):
- その他(プロプライエタリ):
- その他(無料ソフトウェア)
- アプリケーションで、次のいずれかの方法を使って新しいエントリを追加します:
- GitLabに表示されたコードをデバイスのカメラでスキャンして、エントリを自動的に追加します。
- 提供された詳細を入力して、エントリを手動で追加します。
- 互換性のあるアプリケーションをインストールします。次に例を示します:
- GitLab全体で:
- デバイスのエントリからの6桁のピン番号をPin codeに入力します。
- 現在のパスワードを入力します。
- 送信を選択します。
正しいピンを入力すると、リカバリーコードのリストが表示されます。それらをダウンロードして、安全な場所に保管してください。
FortiAuthenticatorを使用してワンタイムパスワード認証アプリを有効にする
- 提供形態: GitLab Self-Managed
GitLab Self-Managedでは、デフォルトでこの機能は使用できません。管理者がforti_authenticatorという名前の機能フラグを有効にすると、ユーザーごとにこの機能を使用できるようになります。GitLab.comとGitLab Dedicatedでは、この機能は使用できません。
GitLabでFortiAuthenticatorをOTPプロバイダーとして使用できます。ユーザーは次の条件を満たしている必要があります:
- FortiAuthenticatorとGitLabの両方に、同じユーザー名で存在すること。
- FortiAuthenticatorでFortiTokenが設定されていること。
FortiAuthenticatorのユーザー名とアクセストークンが必要です。以下に示すaccess_tokenは、FortiAuthenticatorのアクセスキーです。トークンを取得するには、FortinetドキュメントライブラリにあるREST APIソリューションガイドを参照してください。FortiAuthenticatorバージョン6.2.0でテスト済み。
GitLabでFortiAuthenticatorを設定します。GitLabサーバーで:
設定ファイルを開きます。
Linuxパッケージインストールの場合:
sudo editor /etc/gitlab/gitlab.rb自己コンパイルインストールの場合:
cd /home/git/gitlab sudo -u git -H editor config/gitlab.ymlプロバイダー設定を追加します。
Linuxパッケージインストールの場合:
gitlab_rails['forti_authenticator_enabled'] = true gitlab_rails['forti_authenticator_host'] = 'forti_authenticator.example.com' gitlab_rails['forti_authenticator_port'] = 443 gitlab_rails['forti_authenticator_username'] = '<some_username>' gitlab_rails['forti_authenticator_access_token'] = 's3cr3t'自己コンパイルインストールの場合:
forti_authenticator: enabled: true host: forti_authenticator.example.com port: 443 username: <some_username> access_token: s3cr3t設定ファイルを保存します。
Cisco Duoを使用してワンタイムパスワード認証アプリを有効にする
- 提供形態: GitLab Self-Managed
GitLabでCisco DuoをOTPプロバイダーとして使用できます。
DUO®は、米国およびその他の特定の国におけるCisco Systems, Inc.、および/またはその関連会社の登録商標です。
前提要件
Cisco DuoをOTPプロバイダーとして使用するには:
- アカウントがCisco DuoとGitLabの両方に存在し、両方のアプリケーションで同じユーザー名が使用されている必要があります。
- Cisco Duoが設定済みで、統合キー、シークレットキー、およびAPIホスト名が必要です。
詳細については、Cisco Duo APIドキュメントを参照してください。
GitLab 15.10は、Cisco DuoバージョンD261.14でテスト済みです。
GitLabでCisco Duoを設定する
GitLabサーバーで:
設定ファイルを開きます。
Linuxパッケージインストールの場合:
sudo editor /etc/gitlab/gitlab.rb自己コンパイルインストールの場合:
cd /home/git/gitlab sudo -u git -H editor config/gitlab.ymlプロバイダー設定を追加します。
Linuxパッケージインストールの場合:
gitlab_rails['duo_auth_enabled'] = false gitlab_rails['duo_auth_integration_key'] = '<duo_integration_key_value>' gitlab_rails['duo_auth_secret_key'] = '<duo_secret_key_value>' gitlab_rails['duo_auth_hostname'] = '<duo_api_hostname>'自己コンパイルインストールの場合:
duo_auth: enabled: true hostname: <duo_api_hostname> integration_key: <duo_integration_key_value> secret_key: <duo_secret_key_value>設定ファイルを保存します。
Linuxパッケージインストールの場合、GitLabを再設定します。自己コンパイルインストールの場合、GitLabを再起動します。
FortiToken Cloudを使用してワンタイムパスワード認証アプリを有効にする
- 提供形態: GitLab Self-Managed
GitLab Self-Managedでは、デフォルトでこの機能は使用できません。管理者がforti_token_cloudという名前の機能フラグを有効にすると、ユーザーごとにこの機能を使用できるようになります。GitLab.comとGitLab Dedicatedでは、この機能は使用できません。この機能は本番環境での使用には対応していません。
GitLabでFortiToken CloudをOTPプロバイダーとして使用できます。ユーザーは次の条件を満たしている必要があります:
- FortiToken CloudとGitLabの両方に、同じユーザー名で存在すること。
- FortiToken CloudでFortiTokenが設定されていること。
FortiToken Cloudを設定するには、client_idとclient_secretが必要です。これらを取得するには、FortinetドキュメントライブラリにあるREST APIガイドを参照してください。
GitLabでFortiToken Cloudを設定します。GitLabサーバーで:
設定ファイルを開きます。
Linuxパッケージインストールの場合:
sudo editor /etc/gitlab/gitlab.rb自己コンパイルインストールの場合:
cd /home/git/gitlab sudo -u git -H editor config/gitlab.ymlプロバイダー設定を追加します。
Linuxパッケージインストールの場合:
gitlab_rails['forti_token_cloud_enabled'] = true gitlab_rails['forti_token_cloud_client_id'] = '<your_fortinet_cloud_client_id>' gitlab_rails['forti_token_cloud_client_secret'] = '<your_fortinet_cloud_client_secret>'自己コンパイルインストールの場合:
forti_token_cloud: enabled: true client_id: YOUR_FORTI_TOKEN_CLOUD_CLIENT_ID client_secret: YOUR_FORTI_TOKEN_CLOUD_CLIENT_SECRET設定ファイルを保存します。
WebAuthnデバイスをセットアップする
WebAuthnは以下でサポートされています:
- デスクトップブラウザ:
- Chrome
- Edge
- Firefox
- Opera
- Safari
- モバイルブラウザ:
- Chrome for Android
- Firefox for Android
- iOS Safari(iOS 13.3以降)
WebAuthn互換デバイスで2FAを設定するには:
- (オプション)OTP認証アプリを設定します。
- ユーザー設定にアクセスします。
- アカウントを選択します。
- Enable Two-Factor Authentication(2要素認証を有効にする)を選択します。
- WebAuthnデバイスを接続します。
- デバイス名とGitLabアカウントのパスワードを入力します(GitLab 15.10以降)。Identity Provider経由でサインインしている場合は、このパスワードの入力は不要になることがあります。
- Set up New WebAuthn Device(新しいWebAuthnデバイスのセットアップ)を選択します。
- デバイスによっては、ボタンを押したり、センサーに触れたりする必要があるかもしれません。
デバイスが正常にセットアップされたことを示すメッセージが表示されます。
WebAuthn互換デバイスで2FAをセットアップすると、そのデバイスは特定のコンピューター上の特定のブラウザーにリンクされます。ブラウザとWebAuthnデバイスによっては、別のブラウザまたはコンピューターでWebAuthnデバイスを使用するように設定できる場合があります。
今回初めて2FAを設定する場合は、アクセスを失った場合にアカウントへのアクセスを回復できるように、リカバリーコードをダウンロードする必要があります。
ブラウザデータをクリアすると、アカウントへのアクセスを失う可能性があります。
リカバリーコード
OTP認証アプリで2FAを有効にするとすぐに、生成された一連のリカバリーコードをダウンロードするように求めるプロンプトが表示されます。OTP認証アプリへのアクセスを失った場合、これらのリカバリーコードのいずれかを使用してアカウントにサインインできます。
各コードをアカウントへのサインインに使用できるのは1回のみです。
コードをコピーして印刷するか、コードをダウンロードして安全な場所に保存することをお勧めします。ダウンロードを選択した場合、ファイル名はgitlab-recovery-codes.txtです。
- リカバリーコードは、WebAuthnデバイスでは生成されません。
gitlab-sshdはリカバリーコードの再生成には適していません。
リカバリーコードを紛失した場合、または新しいコードを生成する場合は、次のいずれかを使用できます:
- 2FAアカウント設定ページ。
- SSH。
2要素認証リカバリーコードを再生成する
2FAリカバリーコードを再生成するには、デスクトップブラウザへのアクセスが必要です:
- ユーザー設定にアクセスします。
- アカウント > Two-Factor Authentication (2FA)(2要素認証(2FA))を選択します。
- 2FAをすでに設定している場合は、2要素認証の管理を選択します。
- 二要素認証の無効化セクションで、リカバリコードの再発行を選択します。
- ダイアログで現在のパスワードを入力し、リカバリコードの再発行を選択します。
2FAリカバリーコードを再生成する場合は、保存してください。以前に作成した2FAコードは使用できません。
2要素認証が有効になっている状態でサインインする
2FAを有効にしたサインインは、一般的なサインインプロセスとわずかに異なります。ユーザー名とパスワードを入力すると、有効にした2FAの種類に応じて、2番目のプロンプトが表示されます。
ワンタイムパスワード認証アプリを使用してサインインする
求められた時点で、OTP認証アプリからのピンコードまたはリカバリーコードを入力してサインインします。
WebAuthnデバイスを使用してサインインする
サポートされているブラウザでは、認証情報を入力した後、WebAuthnデバイスをアクティブにする(たとえば、ボタンに触れたり押したりする)ように求めるプロンプトが自動的に表示されます。
デバイスが認証リクエストに応答したことを示すメッセージが表示され、自動的にサインインされます。
2要素認証を無効にする
OTP認証アプリとWebAuthnデバイスは、個別にも同時にも無効にできます。同時に無効にするには:
- ユーザー設定にアクセスします。
- アカウントを選択します。
- 2要素認証の管理を選択します。
- 二要素認証の無効化セクションで、二要素認証の無効化を選択します。
- ダイアログで現在のパスワードを入力し、二要素認証の無効化を選択します。
これにより、モバイルアプリケーションやWebAuthnデバイスなど、すべての2FA登録がクリアされます。
GitLab管理者向けの情報
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed、GitLab Dedicated
GitLabバックアップの復元後も2FAが動作し続けるように注意してください。
2FAがOTPサーバーで正しく認証されるようにするには、NTPなどのサービスを使用してGitLabサーバーの時刻を同期します。そうしないと、時刻のずれが原因で認証が常に失敗する可能性があります。
GitLabインスタンスに複数のホスト名またはFQDNからアクセスする場合、GitLab WebAuthnの実装は正常に機能しません。各WebAuthn登録は、登録時の現在のホスト名にリンクされており、他のホスト名またはFQDNには使用できません。
たとえば、ユーザーが
first.host.xyzとsecond.host.xyzからGitLabインスタンスにアクセスしようとしている場合:- ユーザーは
first.host.xyzを使用してサインインし、WebAuthnキーを登録します。 - ユーザーはサインアウトし、
first.host.xyzを使用してサインインを試みます。WebAuthn認証は成功します。 - ユーザーはサインアウトし、
second.host.xyzを使用してサインインを試みます。WebAuthnキーはfirst.host.xyzにのみ登録されているため、WebAuthn認証は失敗します。
- ユーザーは
システムまたはグループレベルで2FAを強制するには、2要素認証の強制を参照してください。