🔓

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

2024/11/03に公開

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