🔓
Cloud RunがIAPでよりお手軽に認証できるようになりました!
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