🔓

Cloud RunがIAPでよりお手軽に認証できるようになりました!

2024/11/03に公開
4

IAPとは

Identity-Aware Proxy(IAP)はGoogle Cloudが提供するセキュリティ機能で、特定のユーザーのみがリソースにアクセスできるように制御するプロキシサービスです。

これまではCloud RunでIAPによる認証を利用するにはCloud Load Balancerを構築する必要がありましたが、今回のアップデートによりCloud Run単体でIAPを設定できるようになりました!

手順

今のところはgcloudコマンドからしか設定できないようなので、Cloud Shellで実行します。

IAP用サービスアカウントの作成と権限付与

まず、IAPに必要なサービスアカウントを作成し、「run.invoker」権限を付与します。

export PROJECT_ID=<your_project_id>
gcloud beta services identity create \
--service=iap.googleapis.com \
--project=$PROJECT_ID
export PROJECT_NUMBER=<your_project_number>
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-$PROJECT_NUMBER@gcp-sa-iap.iam.gserviceaccount.com" \
--role="roles/run.invoker"

Cloud RunへのデプロイとIAPの有効化

次に、コンテナをCloud Runにデプロイし、IAPを有効にします。

gcloud alpha run deploy my-iap-service \
--image=us-docker.pkg.dev/cloudrun/container/hello \
--region asia-northeast1 \
--iap
・・・
Service URL: https://my-iap-service-XXXXXXXXX.asia-northeast1.run.app

URLにアクセスすると、権限エラーが発生するはずです。

IAPアクセス権の設定

特定のメールアドレスによるアクセスを許可するために、IAPにアクセス権を付与します。

gcloud alpha iap web add-iam-policy-binding \
--member=user:<your_email> \
--role=roles/iap.httpsResourceAccessor \
--region asia-northeast1 \
--resource-type=cloud-run \
--service=my-iap-service

数秒待ってから再度アクセスすると、以下のようにIAPを通過してCloud Runサービスへアクセスできるようになります。

IAPの認証を通してCloud Runサービスにアクセスできました!

アクセス権の削除

アクセス権を削除する場合は、以下のコマンドを実行します。

gcloud alpha iap web remove-iam-policy-binding \
--member=user:<your_email> \
--role=roles/iap.httpsResourceAccessor \
--region asia-northeast1 \
--resource-type=cloud-run \
--service=my-iap-service

既存のCloud RunサービスへのIAP設定

既存のCloud Runサービスに対しても、次のコマンドでIAPを有効化または無効化できます。

gcloud alpha run services update <your_service> --[no-]iap

今回のアップデートにより、Cloud Load Balancerの構築が不要になり、コスト削減と手軽さが大きく向上しました!
GAが待ち遠しいですね!

GitHubで編集を提案
アイレット株式会社

Discussion

しろろしろろ

記事の内容に沿って進めているのですが、デプロイのところで下記のエラーが発生します。

ERROR: (gcloud.alpha.run.deploy) metadata.annotations: Project is not allowed to set run.googleapis.com/iap-enabled annotation

利用申請は行ったのですが、こちらのエラーがでるということは申請が通っていないということになりますでしょうか。。。
もしご存知でしたら教えていただけますと幸いです。

danishidanishi

エラーメッセージから申請が通ってないものと思われます。
おそらく申請が通ればメールが来ると思います!

しろろしろろ

返信ありがとうございます!
やはり申請が通っていないのですね。。。
参考までに教えていただければと思うのですが、申請するとすぐにメール来ましたでしょうか?

yantayanta

こちらの記事に関するGoogle Cloud公式アナウンスや公式ドキュメントはあるでしょうか?
見つけることができなかったので、URLを教えて頂けると幸いです。