本頁說明如何從 Cloud Run 啟用 Identity-Aware Proxy,並將流量轉送至 IAP 進行驗證,確保流量安全無虞。從 Cloud Run 啟用 IAP 後,您就能透過預設 run.app
網址和負載平衡器等所有輸入路徑,一鍵轉送流量。
已知限制
- 專案必須位於機構內。
- 身分必須來自同一個機構。
- 您無法同時在負載平衡器和 Cloud Run 服務上設定 IAP。
- 啟用 IAP 後,部分整合功能 (例如 Pub/Sub) 可能會停止運作。
事前準備
透過 Cloud Run 啟用 IAP
您可以透過 Cloud Run 啟用 IAP。
如果您在同一個 Cloud Run 服務上同時使用 IAP 和 IAM,請注意下列條件:
系統會執行 IAP 和 IAM 檢查。
系統會先進行 IAP 檢查,並根據 IAP 設定接受或封鎖要求。
如果要求通過 IAP 檢查,IAP 會使用自己的服務帳戶,向 Cloud Run 的 IAM 檢查進行驗證。
由於系統會優先執行 IAP 檢查,Pub/Sub 等部分服務可能無法向 IAP 驗證。
使用 Google Cloud 控制台、Google Cloud CLI 或 Terraform,從 Cloud Run 啟用 IAP。
控制台
如要透過 Cloud Run 啟用 IAP,請按照下列步驟操作:
前往 Google Cloud 控制台的 Cloud Run 頁面:
如要設定您要部署的新服務,請依序選取「Deploy container」>「Service」。如要設定及部署現有服務,請按一下該服務,然後點選「編輯並部署新修訂版本」。
如要設定新服務,請視需要填寫初始服務設定頁面,然後選取「透過 Identity-Aware Proxy (IAP) 執行進階驗證」。
如要設定及部署現有服務,請按一下該服務,然後選取「透過 Identity-Aware Proxy (IAP) 執行進階驗證」。
按一下「編輯政策」,建立情境感知存取權政策:
新增一或多個主體,並視需要指定每個主體必須符合的存取層級,達到該存取層級才能使用應用程式。
按一下 [儲存]。
按一下 [儲存]。
gcloud
如要直接從 Cloud Run 啟用 IAP,請在部署應用程式時新增 --iap
標記:
使用下列任一指令部署 Cloud Run 服務:
新服務:
gcloud beta run deploy SERVICE_NAME \ --region=REGION \ --image=IMAGE_URL \ --no-allow-unauthenticated \ --iap
現有服務:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --iap
更改下列內容:
- SERVICE_NAME:Cloud Run 服務名稱。
- REGION:Cloud Run 區域名稱。
例如:
europe-west1
。 - IMAGE_URL:容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/hello:latest
。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
。
如要確認服務已啟用 IAP,請執行下列指令:
gcloud beta run services describe SERVICE_NAME
輸出內容應包含下列字串:
Iap Enabled: true
現在,所有傳送至已設定 Cloud Run 服務的流量,都會先轉送至 IAP 進行驗證,然後再傳送至容器。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
新增 IAM 政策,將 Cloud Run 叫用者 (roles/run.invoker
) 授予 IAP 服務代理人。詳情請參閱「管理受 IAP 保護資源的存取權」。
在 Terraform 設定的
google_cloud_run_v2_service_iam_policy
資源中新增下列項目。data "google_cloud_run_v2_service_iam_policy" "policy" { project = google_cloud_run_v2_service.default.project location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name }
在 Terraform 設定中,將下列內容新增至
google_cloud_run_v2_service
資源。resource "google_cloud_run_v2_service" "default" { provider = google-beta name = "cloudrun-iap-service" location = "europe-west1" ingress = "INGRESS_TRAFFIC_ALL" launch_stage = "BETA" iap_enabled = true template { containers { image = "us-docker.pkg.dev/cloudrun/container/hello" } } }
停用 Cloud Run 的 IAP
您可以使用 Google Cloud 控制台或 Google Cloud CLI 停用 IAP。
控制台
如要透過 Cloud Run 停用 IAP,請按照下列步驟操作:
前往 Google Cloud 控制台的 Cloud Run 頁面:
按一下要修改的現有服務。
點選「安全性」,然後清除「透過 Identity-Aware Proxy (IAP) 執行進階驗證」。
按一下 [儲存]。
gcloud
如要直接從 Cloud Run 停用 IAP,請在部署應用程式時新增 --no-iap
旗標:
使用下列任一指令部署 Cloud Run 服務:
新服務:
gcloud beta run deploy SERVICE_NAME \ --region=REGION \ --image=IMAGE_URL \ --no-iap
現有服務:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --no-iap
更改下列內容:
- SERVICE_NAME:Cloud Run 服務名稱。
- REGION:Cloud Run 區域名稱。
- IMAGE_URL:容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/hello:latest
。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
。
如要確認服務已不再啟用 IAP,請執行下列指令:
gcloud beta run services describe SERVICE_NAME
輸出內容不應再包含下列字串:
Iap Enabled: true
您不再將所有傳送至已設定 Cloud Run 服務的流量,先轉送至 IAP 進行驗證,再傳遞至容器。
管理使用者或群組存取權
根據預設,Cloud Run 適用的 IAP 會使用 Google 帳戶的機構內身分。您可以使用 Google Cloud 控制台或 Google Cloud CLI,新增或移除 Cloud Run 服務的存取權。
控制台
如要新增或移除存取權,請按照下列步驟操作:
前往 Google Cloud 控制台的 Cloud Run 頁面:
按一下要修改的現有服務,然後按一下「安全性」。
在「IAP」下方,按一下「編輯政策」。
如要新增存取權,請輸入主體,並視需要輸入要新增的存取層級。
如要移除現有主體的存取權,請按一下「存取層級」旁邊的「刪除政策」圖示。
按一下 [儲存]。
gcloud
如要為機構內的個別使用者或群組新增/移除 Cloud Run 服務的存取權,請執行下列任一指令:
新增存取權的方式如下:
gcloud beta iap web add-iam-policy-binding \ --member=user:USER_EMAIL \ --role=roles/iap.httpsResourceAccessor \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
如何移除存取權:
gcloud beta iap web remove-iam-policy-binding \ --member=user:USER_EMAIL \ --role=roles/iap.httpsResourceAccessor \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
如何查看存取權:
gcloud beta iap web get-iam-policy \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
更改下列內容:
- USER_EMAIL:使用者的電子郵件地址。
- REGION:Cloud Run 區域名稱。
- SERVICE_NAME:Cloud Run 服務名稱。
疑難排解
服務代理失敗導致設定 IAM 錯誤
首次在新專案中啟用 IAP 時,可能會發生下列錯誤:
Setting IAM permissions failed
這是因為 Cloud Run 服務代理人失敗。如要解決這個問題,請重新啟用 IAP,或手動設定 IAM 政策。
後續步驟
- 如要瞭解如何透過後端服務或負載平衡器啟用 IAP,請參閱為 Cloud Run 啟用 IAP。
- 如要瞭解如何排解啟用 Cloud Run 適用的 IAP 時發生的問題,請參閱排解錯誤。
- 啟用外部身分。
- 啟用 OAuth 設定。
- 管理受 IAP 保護資源的存取權。
- 使用機構政策控管是否啟用 IAP。