こちらの記事みたいに 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
でログイン中のユーザーの サービス アカウント トークン作成者
権限を付与する必要があるかも。