これは非公式ドキュメントです。本番環境へ適用する前に、公式ドキュメントを参照するかご自身での手順のテストをお願いいたします。
This is not an official document. Before using it as production, you should refer to official documentations or test the instructions on yourself.
Written by Shawn Watanabe (Google Cloud Customer Engineer)
Last modified at 2022-03-04.
--allow-unauthenticated
ではない (--no-allow-unauthenticated
な) Cloud Runのサービスに対して開発者がリクエストを投げる方法です。
開発時以外の認証については次のドキュメントを参照してください。 認証の概要 | Cloud Run のドキュメント | Google Cloud
以下で説明するコマンドはすべて gcloud auth login
済み、gcloud config set project
済みとします。
以下のコマンド内で利用している環境変数について:
RUN_SERVICE
- Cloud Run のサービス名 (例:my-service
)SERVICE_URL
- Cloud Run のサービスのURL (例:https://my-service-xxx.a.run.app
)SERVICE_ACCOUNT
- サービスアカウントのemail (例:[email protected]
)
Cloud Runにアクセスするユーザーに対して、サービスにアクセスする権限を付与します。
gcloud run services add-iam-policy-binding $RUN_SERVICE \
--member user:$(gcloud config get-value account) \
--role roles/run.invoker
gcloud auth print-identity-token
curl $SERVICE_URL -H "Authorization: Bearer $(gcloud auth print-identity-token)"
Cloud Runにアクセスするユーザーに対して、サービスにアクセスする権限を付与します。
gcloud run services add-iam-policy-binding $RUN_SERVICE \
--member serviceAccount:$SERVICE_ACCOUNT \
--role roles/run.invoker
ユーザーに対して、Service Accountになりすますための権限を付与する。
gcloud iam service-accounts add-iam-policy-binding \
$SERVICE_ACCOUNT \
--member user:$(gcloud config get-value account) \
--role roles/iam.serviceAccountTokenCreator
Service AccountになりすましてIDトークンを取得する
gcloud auth print-identity-token \
--impersonate-service-account $SERVICE_ACCOUNT \
--audiences $SERVICE_URL
curl $SERVICE_URL \
-H "Authorization: Bearer $(gcloud auth print-identity-token --impersonate-service-account $SERVICE_ACCOUNT --audiences $SERVICE_URL)"