如何搭配使用 1 鍵 Identity-Aware Proxy (IAP) 與 Cloud Run

如何搭配使用 1 鍵 Identity-Aware Proxy (IAP) 與 Cloud Run

程式碼研究室簡介

subject上次更新時間:6月 12, 2025
account_circle作者:Google 員工

1. 簡介

總覽

本程式碼實驗室會逐步引導您瞭解如何從 Cloud Run 啟用 Identity-Aware Proxy,並將流量轉送至 IAP 進行驗證,以保護 Cloud Run 服務的流量。啟用 Cloud Run 的 IAP 後,您就能透過單鍵操作,將流量從所有輸入路徑 (包括預設的 run.app 網址和負載均衡器) 轉送。

在本程式碼研究室中,您將部署 hello 容器服務。只有使用 IAP 加入許可清單的使用者才能存取這項服務。

如要瞭解其他已知限制,請參閱 Cloud Run 上的 IAP 說明文件

課程內容

  • 如何為 Cloud Run 啟用一鍵 IAP
  • 如何透過 IAP 將 Cloud Run 服務的使用者身分存取權授予使用者

2. 事前準備

啟用 API

開始使用本程式碼研究室前,請先執行以下 API 啟用作業:

gcloud services enable \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    iap.googleapis.com \
    run.googleapis.com \
    cloudresourcemanager.googleapis.com

3. 建立環境變數

設定在本程式碼研究室中會用到的環境變數

export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION=<YOUR_REGION>

export SERVICE_NAME=iap-example
export SERVICE_ACCOUNT_NAME=iap-example-sa
export PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format="value(projectNumber)")

4. 部署已啟用 IAP 的服務

執行下列指令,建立服務帳戶 (用於做為 Cloud Run 服務身分):

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
 
--display-name="IAP codelab CR identity"

部署啟用 IAP 的 hello 容器映像檔。

gcloud beta run deploy ${SERVICE_NAME} \
    --image=us-docker.pkg.dev/cloudrun/container/hello \
    --region=${REGION} \
    --service-account $SERVICE_ACCOUNT_NAME@${PROJECT_ID}.iam.gserviceaccount.com \
    --no-allow-unauthenticated \
    --iap

注意:如果您現在嘗試存取應用程式,就會看到 You don't have access 錯誤頁面。在下一個步驟中,您將透過 IAP 授予使用者存取權。

5. 設定 IAP 存取權控管

建立 IAP 服務代理

gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}

將 Cloud Run 叫用者角色指派給 IAP 服務帳戶

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-iap.iam.gserviceaccount.com" \
  --role="roles/run.invoker"

透過 IAP 允許特定使用者或群組,授予使用者存取權

EMAIL_ADDRESS=<YOUR_EMAIL>

gcloud
beta iap web add-iam-policy-binding \
    --resource-type=cloud-run \
    --service=${SERVICE_NAME} \
    --region=${REGION} \
    --member=user:${EMAIL_ADDRESS} \
    --role=roles/iap.httpsResourceAccessor \
    --condition=None

注意:如有需要,您也可以在 member 參數中使用 group:your-group@example.com。

6. 測試應用程式

驗證應用程式的存取權

取得 Cloud Run 服務範例的網址。

gcloud run services describe ${SERVICE_NAME} --region ${REGION} --format 'value(status.url)'

在瀏覽器中開啟該網址,您應該會看到「It's Running! 恭喜,您已成功將容器映像檔部署至 Cloud Run」

確認已移除應用程式的存取權

您可以執行下列指令,移除對應用程式的存取權。

gcloud beta iap web remove-iam-policy-binding \
    --resource-type=cloud-run \
    --service=${SERVICE_NAME} \
    --region=${REGION} \
    --member=user:${EMAIL_ADDRESS} \
    --role=roles/iap.httpsResourceAccessor

請稍候幾分鐘,讓 IAM 政策生效。接著,請嘗試在瀏覽器中開啟該網址,您會看到 You don't have access 錯誤頁面。

7. 恭喜!

恭喜您完成程式碼研究室!

建議您參閱 Cloud Run IAP 說明文件。

涵蓋內容

  • 如何為 Cloud Run 啟用 1 鍵 IAP
  • 如何透過 IAP 將 Cloud Run 服務的使用者身分存取權授予使用者

8. 清除所用資源

為避免產生意外費用,如果 Cloud Run 服務在您免費方案的 Cloud Run 呼叫次數配額內意外地被呼叫超過次數上限,您可以刪除在步驟 6 中建立的 Cloud Run 服務 iap-example

如要刪除 Cloud Run 服務,請前往 Cloud Run 控制台 (https://console.cloud.google.com/run) 並刪除 iap-example 服務。

如要刪除整個專案,請前往「管理資源」,選取專案,然後選擇「刪除」。如果您刪除專案,就必須在 Cloud SDK 中變更專案。您可以執行 gcloud projects list 來查看所有可用專案的清單。