程式碼研究室簡介
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
來查看所有可用專案的清單。