- 前提条件
- GitLab から OpenID Connect のクライアント ID とシークレットを取得します。
- VaultでOpenID Connectを有効化
- OIDC設定の書き込み
- OIDCロール設定の書き込み
- Vaultにサインイン
- Vault CLI を使ってサインイン(オプション)
GitLab OpenID Connect認証プロバイダとしてVaultを使用します。
VaultはHashiCorpが提供するシークレット管理アプリケーションです。シークレット環境変数、暗号化キー、認証トークンなどの機密情報を保存・管理することができます。
VaultはIdentity-based Accessを提供しており、Vaultユーザーは複数の好みのクラウドプロバイダーを通して認証することができます。
以下のコンテンツでは、VaultユーザーがGitLabを通じてOpenID認証機能を使って認証する方法を説明します。
前提条件
- Vaultをインストールします。
- Vaultを実行します。
GitLab から OpenID Connect のクライアント ID とシークレットを取得します。
まず GitLab アプリケーションを作成して、Vault で認証するためのアプリケーション ID とシークレットを取得します。これを行うには、GitLabにサインインして以下の手順に従います:
- 左のサイドバーで、自分のアバターを選択してください。
- プロフィールの編集を選択します。
- 左サイドバーで「アプリケーション」を選択します。
- アプリケーション名とリダイレクトURI.
- OpenIDスコープを選択します。
- Save applicationを選択します。
- クライアントIDとクライアントシークレットをコピーするか、参照用にページを開いておきます。
VaultでOpenID Connectを有効化
Vault では、OpenID Connect(OIDC) はデフォルトでは有効になっていません。
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/config
OIDCロール設定の書き込み
Vaultに リダイレクトURIとスコープを GitLab に伝えなければなりません。
ターミナルで以下のコマンドを実行します:
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
Replace:
-
<your_vault_instance_redirect_uris>
を、Vaultインスタンスが実行されている場所に一致するリダイレクトURIに置き換えてください。 -
<your_application_id>
を、アプリ用に生成されたアプリケーションIDで指定します。
oidc_scopes
フィールドにはopenid
を含める必要があります。
この設定は作成するロールの名前で保存されます。この例では、demo
ロールを作成します。
bound_claims
を指定してグループやプロジェクトのメンバーだけにアクセスを許可する必要があります。そうしないと、公開アカウントを持っている人なら誰でも Vault インスタンスにアクセスできてしまいます。Vaultにサインイン
- Vault UIにアクセスします。例:http://127.0.0.1:8200/ui/vault/auth?with=oidc。
-
OIDC
メソッドが選択されていない場合は、ドロップダウンリストを開いて選択します。 -
Sign in With GitLab を選択すると、モーダルウィンドウが開きます:
-
GitLab 経由でのサインインを Vault に許可するには、Authorize を選択します。これで、認証済みユーザーとして Vault UI にリダイレクトされます。
Vault CLI を使ってサインイン(オプション)
VaultCLI を使用して Vault にサインインすることもできます。
-
前の例で作成したロール設定でサインインするには、ターミナルで以下のコマンドを実行します:
vault login -method=oidc port=8250 role=demo
このコマンドは
-
role=demo
Vaultがどの設定でサインインしたいかを知ることができます。 -
-method=oidc
で、Vault がOIDC
のサインイン方法を使うように設定します。 -
port=8250
GitLab がリダイレクトするポートを設定します。このポート番号は、Redirect URIをリストアップする際にGitLabに与えられたポートと一致する必要があります。
このコマンドを実行すると、ターミナルにリンクが表示されます。
-
-
このリンクをウェブブラウザで開いてください:
ターミナルが表示されます:
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.