はじめに
HCP Vault では監査情報として Audit ログを出力することができます。だだしデフォルトだと OIDC 認証でログインした際の Audit ログにはログイン ID 等個人を特定できる情報が含まれません。そのため、Vault 監査ログからのユーザー追従しやすくするために OIDC プロバイダーから提供されるクレーム情報を metadata として付与します。
前提
Azure AD との OIDC 連携を例に記載します。
なお、基本的な Azure AD との OIDC 連携方法については省略しますので、下記ドキュメントを参考に設定してください。
設定
OIDC プロバイダーから発行される ID トークンにユーザー属性情報をクレーム(claim)として含むことができます。このクレーム情報を Vault の Entity Alias の metadata として付与します。設定は OIDC 用の role に対して行います。
metadata 付与に必要な設定項目は下記となります。
項目 | 説明 |
---|---|
oidc_scopes | OIDC ロールで利用する OIDC スコープのリスト |
claim_mappings | metadata に設定するクレームのマップ |
今回はスコープにクレームグループを指定し、下記クレームを metadata として付与します。
クレームグループ | クレーム名 |
---|---|
profile | name(ユーザー名), preferred_username(任意のユーザー名) |
email(E メールアドレス) |
その他のユーザー情報についてもクレームから取得可能です。
詳細は下記ドキュメントや、OIDC プロバイダーのドキュメントから確認してください。
OIDC 用 role 作成
role に oidc_scopes と claim_mappings 設定します。
vault write auth/oidc/role/your_default_role -<<EOF { "allowed_redirect_uris": [ "http://localhost:8250/oidc/callback", "https://online_version_hostname:port_number/ui/vault/auth/oidc/oidc/callback" ], "bound_audiences": [ "abc123" ], "claim_mappings": { "email": "email", "name": "name", "preferred_username": "preferred_username" }, "groups_claim": "groups", "oidc_scopes": [ "https://graph.microsoft.com/.default", "profile", "email" ], "role_type": "oidc", "token_policies": [ "default" ], "token_type": "default", "user_claim": "sub" } EOF Success! Data written to: auth/oidc/role/your_default_role
※ oidc_scopes: https://graph.microsoft.com/.default
は Azure AD 連携用の設定となります
作成した role は下記コマンドで確認できます。
vault read auth/oidc/role/your_default_role Key Value --- ----- allowed_redirect_uris [http://localhost:8250/oidc/callback https://online_version_hostname:port_number/ui/vault/auth/oidc/oidc/callback] bound_audiences [abc123] bound_claims <nil> bound_claims_type string bound_subject n/a claim_mappings map[email:email name:name preferred_username:preferred_username] clock_skew_leeway 0 expiration_leeway 0 groups_claim groups max_age 0 not_before_leeway 0 oidc_scopes [https://graph.microsoft.com/.default profile email] role_type oidc token_bound_cidrs [] token_explicit_max_ttl 0s token_max_ttl 0s token_no_default_policy false token_num_uses 0 token_period 0s token_policies [default] token_ttl 0s token_type default user_claim sub user_claim_json_pointer false verbose_oidc_logging false
確認
設定後にログインすると Entity Alias の metadata に claim_mappings で設定したデータが追加されています。
Entity ではなく Entity Alias の metadata となりますので注意してください。
% vault list identity/entity-alias/id Keys ---- ********-****-****-****-***********a ********-****-****-****-***********b ********-****-****-****-***********c % vault read identity/entity-alias/id/********-****-****-****-***********c Key Value --- ----- canonical_id ********-****-****-****-************ creation_time 2024-11-27T08:52:20.116834686Z custom_metadata <nil> id ********-****-****-****-***********c last_update_time 2024-11-27T09:26:35.007429791Z local false merged_from_canonical_ids <nil> metadata map[email:audittest@example.com name:auth test preferred_username:audittest@example.com role:your_default_role] mount_accessor ***** mount_path auth/oidc/ mount_type oidc name ***** namespace_id *****
監査ログについても下記の通り metadata にユーザー情報が追加されています。
{ "auth": { "accessor": "*****", "client_token": "*****", "display_name": "*****", "entity_id": "*****", "identity_policies": [ "*****" ], "metadata": { "email": "auidittest@example.com", "name": "auth test", "preferred_username": "audittest@example.com", "role": "your_default_role" }, : }