Cloud RunでIAPを有効にしようとしてハマったこと
Cloud Runには大変お世話になっているのですが、IAPで認証を入れようとしてハマったのでメモ。
以下のように、gcloud run deployしてブラウザからアクセス。抜粋です。
internal-and-cloud-load-balancing
として、内部ネットワークとロードバランサーからのアクセスのみを許容し、さらに--no-allow-unauthenticated
で未認証のリクエストは許可しない形にした。
gcloud run deploy app-with-iap \
--image gcr.io/sample/app-with-iap:latest \
--region asia-northeast1 \
--platform managed \
--ingress internal-and-cloud-load-balancing \
--no-allow-unauthenticated
でもって、IAPを有効にしてデプロイしたんだけど 、IAPの認証を通過した後にCloud Runの実行のところで、Permission denied的なメッセージが出てしまった。
しばらく調べて見つけた答えは以下。
公式のドキュメントにもちゃんと書いてありましたw
以下、ドキュメントから抜粋です。
3.IAM によるアクセス制御の手順に沿って、IAP がトラフィックを Cloud Run バックエンド サービスに送信することを承認します。
プリンシパル: service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
ロール: Cloud Run 起動元
Cloud Run 起動元というのはroles/run.invoker
っていう権限ですね。
書いてあるとおりに、プロジェクトのサービスアカウントにCloud Run 起動元のロールを付与したらちゃんと通りました。
忘れてた。忘れてた。
この記事の環境情報
- 2023年6月時点のGCP
GCPに関する他の記事を読む
最近の記事を読む
- Flutterでcontextを使わずにlocale情報を取得する
- slimでtype='application/ld+json'のscriptタグを書く
- タグマネージャーでjsのloadイベントを発火させたいとき
- mysqlコマンドを実行してERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)と言われたら
- 「ibproxyは、開発元を検証できないため開けません」の対処方法