GitLab OpenID ConnectでのVault認証
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed、GitLab Dedicated
Vaultは、HashiCorpが提供するシークレット管理アプリケーションです。これにより、シークレット環境変数、暗号化キー、認証トークンなどの機密情報を保存および管理できます。
VaultはIDベースのアクセスを提供します。つまり、Vaultユーザーは、優先するいくつかのクラウドプロバイダーを介して認証できます。
次のコンテンツでは、VaultユーザーがOpenID Connect認証機能を使用して、GitLabを介して自身を認証する方法について説明します。
前提要件
- Vaultをインストールする。
- Vaultを実行します。
GitLabからOpenID ConnectクライアントID</IDとシークレットを取得します
Vaultに認証するためのアプリケーションIDとシークレットを取得するには、まず、GitLabアプリケーションを作成する必要があります。これを行うには、GitLabにサインインして、次の手順に従います:
- 左側のサイドバーで、自分のアバターを選択します。
- プロファイルの編集を選択します。
- 左側のサイドバーで、アプリケーションを選択します。
- アプリケーションの名前とRedirect URI(リダイレクト)に入力します。
- OpenIDスコープを選択します。
- アプリケーションを保存を選択します。
- Client ID(クライアントID)とClient Secret(クライアントシークレット)をコピーするか、参照できるようにページを開いたままにしておきます。
VaultでOpenID Connectを有効にします
OpenID Connect(OIDC)は、Vaultではデフォルトで有効になっていません。
VaultでOIDC認証プロバイダーを有効にするには、ターミナルセッションを開き、次のコマンドを実行します:
vault auth enable oidcターミナルに次の出力が表示されます:
Success! Enabled oidc auth method at: oidc/OIDC設定を書き込みます
GitLabによって生成されたアプリケーションIDとシークレットをVaultに渡し、VaultがGitLabを通じて認証できるようにするには、ターミナルで次のコマンドを実行します:
vault write auth/oidc/config \
oidc_discovery_url="https://gitlab.com" \
oidc_client_id="<your_application_id>" \
oidc_client_secret="<your_secret>" \
default_role="demo" \
bound_issuer="localhost"<your_application_id>と<your_secret>を、アプリ用に生成されたアプリケーションIDとシークレットに置き換えます。
ターミナルに次の出力が表示されます:
Success! Data written to: auth/oidc/configOIDCロール設定を書き込みます
アプリケーションの作成時にGitLabに指定したRedirect URIs(リダイレクトURI)とスコープをVaultに伝える必要があります。
ターミナルで次のコマンドを実行します:
vault write auth/oidc/role/demo - <<EOF
{
"user_claim": "sub",
"allowed_redirect_uris": "<your_vault_instance_redirect_uris>",
"bound_audiences": "<your_application_id>",
"oidc_scopes": "<openid>",
"role_type": "oidc",
"policies": "demo",
"ttl": "1h",
"bound_claims": { "groups": ["<yourGroup/yourSubgrup>"] }
}
EOF以下の値を置き換えます:
<your_vault_instance_redirect_uris>を実行中のVaultインスタンスと一致するリダイレクトを使用します。<your_application_id>を、アプリ用に生成されたアプリケーションIDに置き換えます。
oidc_scopesフィールドには、openidを含める必要があります。
この設定は、作成するロールの名前で保存されます。この例では、demoロールを作成しています。
GitLab.comなどのパブリックGitLabインスタンスを使用している場合は、グループまたはプロジェクトのメンバーのみがアクセスできるように、bound_claimsを指定する必要があります。そうしないと、パブリックアカウントを持つすべてのユーザーがVaultインスタンスにアクセスできてしまいます。
Vaultにサインインします
Vault UIに移動します。例: http://127.0.0.1:8200/ui/vault/auth?with=oidc。
OIDCメソッドが選択されていない場合は、ドロップダウンリストを開いて選択します。Sign in With GitLab(GitLabでサインイン)を選択します。これにより、モーダルウィンドウが開きます:
VaultがGitLab経由でサインインできるようにするには、許可するを選択します。これにより、認証済みユーザーとしてVault UIにリダイレクトされます。
Vault CLIを使用してサインインします(オプション)
Vault CLIを使用してVaultにサインインすることもできます。
前の例で作成したロール設定を使用してサインインするには、ターミナルで次のコマンドを実行します:
vault login -method=oidc port=8250 role=demoこのコマンドは次を設定します:
role=demoVaultがサインインに使用する設定を認識できるようにします。-method=oidcVaultがOIDC認証方法を使用するように設定します。port=8250GitLabのリダイレクト先のポートを設定します。このポート番号は、リダイレクトをリストするときにGitLabに指定されたポートと一致する必要があります。
このコマンドを実行すると、ターミナルにリンクが表示されます。
このリンクをWebブラウザで開きます:
ターミナルに次のように表示されます:
Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "vault login" again. Future Vault requests will automatically use this token.



