Cloud Identity-Aware Proxyのサービスアカウント認証
Cloud Identity-Aware Proxyでは、サービスアカウントでの認証が可能
流れとしてはこう
1. 署名付きJWTの取得
2. 1.を使ってID Tokenを取得
3. AuthorizationヘッダにBaerer <2で取得したID Token>を設定してリクエスト
1. 署名付きJWTトークンの取得
gcloudコマンドでID Tokenが一発で取得できる
code: get-id-token
gcloud auth print-identity-token --impersonate-service-account=<許可対象のサービスアカウント> --audiences=<IAPのクライアントID> --include-email
上記のgcloudコマンドを通すには、対象のサービスアカウントで サービス アカウント トークン作成者ロールを付与する必要がある
また、GCEインスタンスからコマンドを実行する場合以下が必要となる
GCEに紐付けるサービスアカウントに、上述したものを指定
アクセススコープを すべてのCloud APIに完全アクセスを許可
必要な権限が、GCEの設定画面から個別に設定できる対象から外れているため
IAM Service Account Credentials APIの有効かも必要
--impersonate-service-accountオプションをつけて実行する場合に有効化してないとエラーになる
しかも、エラーメッセージの内容がサービス アカウント トークン作成者がないという旨なのでわかりにくい
トークンの更新について
トークンには、デフォルトでおそらく1hの有効期限がある
リフレッシュの仕組みを実現する場合は、上述のgcloudコマンドを定期的に実行し、新たにトークンを取得し直す