生涯未熟

生涯未熟

プログラミングをちょこちょこと。

cURLでIAP越えするためのトークンを吐き出す

zenn.dev

こちらの記事みたいに gcloud auth print-identity-token で取りたかったが上手く出来なかったので上手く出来るようにやってみた。

どう失敗した?

$ gcloud auth print-identity-token foo@bar.iam.gserviceaccount.com --audiences="hoge.apps.googleusercontent.com"

ERROR: (gcloud.auth.print-identity-token) Your current active account [XXX] does not have any valid credentials
Please run:

  $ gcloud auth login

to obtain new credentials.

For service account, please activate it first:

  $ gcloud auth activate-service-account ACCOUNT

なるほど〜🤔

どう対応した?

これをやった。

$ gcloud auth print-identity-token \
--impersonate-service-account=foo@bar.iam.gserviceaccount.com \
--audiences="hoge.apps.googleusercontent.com" \
--include-email

こんな感じでSAのなりすましでTokenを吐くことが出来る。 --include-email が付いているのはIAPの検証で使われるから(無かったらemailがないぞと叱られる)。
あと、未検証だけども前準備としてなりすますSAに gcloud auth login でログイン中のユーザーの サービス アカウント トークン作成者 権限を付与する必要があるかも。