本頁面說明如何直接在 Cloud Run 服務上啟用 IAP,並將傳送至 Cloud Run 服務的流量轉送至 IAP 進行驗證,藉此保護流量。直接在 Cloud Run 啟用 IAP,即可一鍵保護所有輸入路徑的流量,包括預設 run.app 網址和負載平衡器。
將 IAP 與 Cloud Run 整合後,您可以透過下列方式管理使用者或群組存取權:
- 組織內部:設定與 Cloud Run 服務位於相同組織的使用者存取權
- 組織外部:設定與 Cloud Run 服務不同組織的使用者存取權
- 無組織:在不屬於任何 Google 組織的專案中設定存取權
已知限制
- 您無法同時在負載平衡器和 Cloud Run 服務上設定 IAP。
- Cloud Run 會先強制執行 IAP 政策,再對 IAP 服務帳戶執行 IAM 檢查。由於 IAP 會攔截要求並取代原始呼叫者的身分,因此 Pub/Sub 等依賴自身驗證機制的服務可能會失敗。
事前準備
啟用 IAP API:
必要的角色
如要取得啟用 IAP 所需的權限,請要求管理員授予您下列 IAM 角色:
- 專案的 Cloud Run 管理員 (
roles/run.admin) -
授予已啟用 IAP 的服務存取權:專案的 IAP 政策管理員 (
roles/iap.admin) -
建立已啟用 IAP 的服務,或更新現有服務以啟用 IAP:
- 部署容器映像檔的 Artifact Registry 讀取者 (
roles/artifactregistry.reader) - 服務身分的服務帳戶使用者 (
roles/iam.serviceAccountUser)
- 部署容器映像檔的 Artifact Registry 讀取者 (
-
將專案的 IAP 設定管理員 (
roles/iap.settingsAdmin) 角色授予不屬於 Google 組織的使用者 -
將存取權授予組織外部或不屬於組織的使用者:專案的 OAuth 設定編輯者 (
roles/oauthconfig.editor) -
新增或管理情境感知存取權的存取層級:
- 組織的 Access Context Manager 讀取者 (
roles/accesscontextmanager.policyReader) 和組織檢視者 - 組織的組織檢視者 (
roles/resourcemanager.organizationViewer)
- 組織的 Access Context Manager 讀取者 (
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
透過 Cloud Run 啟用 IAP
建議您直接在 Cloud Run 啟用 IAP。
使用 Google Cloud 控制台、Google Cloud CLI 或 Terraform,從 Cloud Run 啟用 IAP。
控制台
為 Cloud Run 啟用 IAP 時,IAP 需要叫用 Cloud Run 服務的權限。如果使用 Google Cloud 控制台啟用 IAP,系統會將 Cloud Run 叫用者角色 (roles/run.invoker) 指派給 IAP 服務代理,自動授予這項權限。如要透過 Cloud Run 啟用 IAP,請按照下列步驟操作:
前往 Google Cloud 控制台的「Cloud Run」頁面:
從 Cloud Run 導覽選單中選取「Services」(服務):
如要設定新服務,請按一下「Deploy container」(部署容器),然後填寫初始服務設定頁面。
如要設定現有服務,請按一下該服務,然後按一下「Security」(安全性) 分頁標籤。
依序選取「需要驗證」和「Identity-Aware Proxy (IAP)」。
選用:如要授予使用者存取權,請按照操作說明管理 IAP 的使用者或群組存取權。如果為組織外部使用者設定存取權時遇到問題,請參閱「疑難排解」一節。如要儲存設定,請按一下「儲存」。
按一下「建立」,建立新服務。依序點選「查看差異並重新部署」和「部署變更」,即可更新現有服務。
gcloud
如要直接從 Cloud Run 啟用 IAP,請在部署應用程式時新增 --iap 旗標,並將叫用者權限授予 IAP 服務代理:
使用下列其中一個指令部署 Cloud Run 服務:
新服務:
gcloud run deploy
SERVICE_NAME\ --region=REGION\ --image=IMAGE_URL\ --no-allow-unauthenticated \ --iap如果您在沒有組織的專案中首次啟用 IAP,可能會看到下列警告:
Deploying services with IAP enabled in a project without an organization may require initial setup via the Cloud Console. Please use the Cloud Run UI to enable IAP for the first time in the project.出現這則警告,是因為您無法透過程式輔助方式建立 OAuth 用戶端。建議您先直接透過 Google Cloud 控制台在 Cloud Run 上啟用 IAP,或設定自訂 OAuth 用戶端,然後使用 gcloud CLI 新增使用者。
現有服務:
gcloud 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。PROJECT_NUMBER:您的 Google Cloud 專案編號。
將叫用者權限授予 IAP 服務代理:
gcloud run services add-iam-policy-binding
SERVICE_NAME\ --region=REGION\ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap.iam.gserviceaccount.com \ --role=roles/run.invoker更改下列內容:
SERVICE_NAME:Cloud Run 服務的名稱。REGION:Cloud Run 區域名稱。例如:europe-west1。PROJECT_NUMBER:您的 Google Cloud 專案編號。
選用。如要授予使用者存取權,請參閱「管理使用者或群組存取權」一文,瞭解如何管理 IAP。
如要確認服務已啟用 IAP,請執行下列指令:
gcloud run services describe
SERVICE_NAME輸出內容應包含下列字串:
Iap Enabled: true
IAP 現在會將所有前往已設定 Cloud Run 服務的流量,轉送至 IAP 進行驗證,然後再傳送至容器。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
如要使用 Terraform 啟用 IAP,您必須更新服務定義,並新增 IAM 政策繫結,將叫用者權限授予 IAP。
在 Terraform 設定中,將
iap_enabled = true新增至google_cloud_run_v2_service資源,即可在服務上啟用 IAP:resource "google_cloud_run_v2_service" "default" { name = "cloudrun-iap-service" location = "europe-west1" ingress = "INGRESS_TRAFFIC_ALL" iap_enabled = true template { containers { image = "us-docker.pkg.dev/cloudrun/container/hello" } } }新增下列內容,將
roles/run.invoker角色授予 IAP 服務代理。resource "google_cloud_run_v2_service_iam_member" "iap_invoker" { project = google_cloud_run_v2_service.default.project location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name role = "roles/run.invoker" member = "serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap.iam.gserviceaccount.com" }將
PROJECT_NUMBER替換為專案編號。選用。如要擷取目前的 IAM 政策資料,請將下列內容新增至 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 }
管理使用者或群組存取權
根據預設,Cloud Run 適用的 IAP 會使用 Google 代管的 OAuth 用戶端,讓您透過與使用者相關聯的電子郵件地址,新增組織內的身分。您也可以按照下列步驟建立自訂 OAuth 用戶端,使用 IAP 中的 Google Cloud 控制台,管理組織外部或沒有組織的主體。
使用 Google Cloud 控制台、gcloud CLI 或 Terraform,新增或移除 Cloud Run 服務的 IAP 存取權。
機構內部
控制台
如要新增或移除存取權,請按照下列步驟操作:
前往 Google Cloud 控制台的「Cloud Run」頁面:
按一下要修改的現有服務,然後點選「Security」(安全性)。
在「Identity-Aware Proxy (IAP)」下方,按一下「編輯政策」。
如要新增存取權,請輸入主體,並視需要輸入要新增的存取層級,或將存取層級留空。您必須具備 Access Context Manager 的必要角色,才能查看及新增存取層級。
如果政策中只有一個主體,如要移除存取權,請按一下「Access levels」(存取層級) 旁邊的「Delete policy」(刪除政策) 圖示。
如要從政策中移除個別主體,請按一下要移除的主體名稱旁的「X」X圖示。
如要儲存使用者設定,請按一下「儲存」。
gcloud
如要為個別使用者或群組新增或移除 Cloud Run 服務的存取權,請執行下列其中一項指令:
新增存取權的方式如下:
gcloud iap web add-iam-policy-binding \ --member=user:
USER_EMAIL\ --role=roles/iap.httpsResourceAccessor \ --region=REGION\ --resource-type=cloud-run \ --service=SERVICE_NAME如要移除存取權:
gcloud iap web remove-iam-policy-binding \ --member=user:
USER_EMAIL\ --role=roles/iap.httpsResourceAccessor \ --region=REGION\ --resource-type=cloud-run \ --service=SERVICE_NAME如何查看存取權:
gcloud iap web get-iam-policy \ --region=
REGION\ --resource-type=cloud-run \ --service=SERVICE_NAME
更改下列內容:
USER_EMAIL:使用者的電子郵件地址。REGION:Cloud Run 區域的名稱。SERVICE_NAME:Cloud Run 服務的名稱。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
如要向主體清單授予權威性存取權:
使用
google_iap_web_cloud_run_service_iam_binding資源,將角色授予權威主體清單。這項資源可確保只有清單中的成員能獲得角色。獲派該角色的其他主體則會遭到移除。在 Terraform 設定中,將下列內容新增至
google_iap_web_cloud_run_service_iam_binding資源。resource "google_iap_web_cloud_run_service_iam_binding" "binding" { project = "PROJECT_ID" location = "REGION" cloud_run_service_name = "SERVICE_NAME" role = "roles/iap.httpsResourceAccessor" members = [ "PRINCIPAL_A", "PRINCIPAL_B" ] }更改下列內容:
PROJECT_ID:專案名稱。REGION: Google Cloud 區域,例如europe-west1。SERVICE_NAME:Cloud Run 服務的名稱。PRINCIPAL:主體或成員的 ID,通常採用下列格式:PRINCIPAL_TYPE:ID。例如user:my-user@example.com。如需PRINCIPAL可用值的完整清單,請參閱政策繫結參考資料。
如要授予單一主體的存取權:
使用
google_iap_web_cloud_run_service_iam_member資源將角色授予單一主體,而不影響可能具有相同角色的其他主體。在 Terraform 設定中,將下列內容新增至
google_iap_web_cloud_run_service_iam_member資源。resource "google_iap_web_cloud_run_service_iam_member" "member" { project = "/span>PROJECT_ID" location = "REGION" cloud_run_service_name = "SERVICE_NAME" role = "roles/iap.httpsResourceAccessor" member = "PRINCIPAL" }<更改下列內容:
PROJECT_ID:專案名稱。REGION: Google Cloud 區域,例如europe-west1。SERVICE_NAME:Cloud Run 服務的名稱。PRINCIPAL:主體或成員的 ID,通常採用下列格式:PRINCIPAL_TYPE:ID。例如user:my-user@example.com。如需PRINCIPAL可用值的完整清單,請參閱政策繫結參考資料。
機構外部
控制台
如要使用 IAP 新增組織外部的使用者,請完成下列一次性設定程序:
前往 Google Cloud 控制台的「Cloud Run」頁面:
按一下要修改的現有服務,然後按一下「Security」(安全性)。
在 Cloud Run 服務的安全性詳細資料頁面中,按一下「IAP」下方的「Edit policy」(編輯政策)。
按一下「Configure in IAP」(前往 IAP 設定)。系統會開啟 IAP 的資源設定頁面。
按一下「Configure consent screen」(設定同意畫面),設定 OAuth 同意畫面。選取「外部」做為目標對象類型。
如要快速設定,請按一下「自動產生憑證」。
或者,請按照操作說明建立 OAuth 用戶端 ID。選取「Custom OAuth」,然後輸入自訂用戶端 ID 和密鑰。
如要儲存設定,請按一下「儲存」。
現在可以返回 Cloud Run 中的 Cloud Run 服務,新增組織外部的主體。
如要新增或移除使用者存取權,請完成下列步驟:
前往 Google Cloud 控制台的「Cloud Run」頁面:
按一下要修改的現有服務,然後點選「Security」(安全性)。
在「IAP」下方,按一下「編輯政策」。
如要新增存取權,請輸入主體,並視需要輸入要新增的存取層級,或將存取層級留空。您必須具備 Access Context Manager 的必要角色,才能查看及新增存取層級。
如果政策中只有一個主體,如要移除存取權,請按一下「Access levels」(存取層級) 旁邊的「Delete policy」(刪除政策) 圖示。
如要從政策中移除個別主體,請按一下要移除的主體名稱旁的「X」X圖示。
如要儲存使用者設定,請按一下「儲存」。
gcloud
事前準備
- 如要新增組織外部的使用者主體,請先設定 OAuth 用戶端。
如要為個別使用者或群組新增或移除 Cloud Run 服務的存取權,請執行下列其中一項指令:
新增存取權的方式如下:
gcloud iap web add-iam-policy-binding \ --member=user:
USER_EMAIL\ --role=roles/iap.httpsResourceAccessor \ --region=REGION\ --resource-type=cloud-run \ --service=SERVICE_NAME如要移除存取權:
gcloud iap web remove-iam-policy-binding \ --member=user:
USER_EMAIL\ --role=roles/iap.httpsResourceAccessor \ --region=REGION\ --resource-type=cloud-run \ --service=SERVICE_NAME如何查看存取權:
gcloud iap web get-iam-policy \ --region=
REGION\ --resource-type=cloud-run \ --service=SERVICE_NAME
更改下列內容:
USER_EMAIL:使用者的電子郵件地址。REGION:Cloud Run 區域名稱。SERVICE_NAME:Cloud Run 服務的名稱。
Terraform
事前準備
- 如要新增組織外部的使用者主體,您必須先設定 OAuth 用戶端。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
如要向主體清單授予權威性存取權:
使用
google_iap_web_cloud_run_service_iam_binding資源,將角色授予權威主體清單。這項資源可確保只有清單中的成員會獲得角色。其他獲派該角色的主體都會遭到移除。在 Terraform 設定中,將下列內容新增至
google_iap_web_cloud_run_service_iam_binding資源。resource "google_iap_web_cloud_run_service_iam_binding" "binding" { project = "PROJECT_ID" location = "REGION" cloud_run_service_name = "SERVICE_NAME" role = "roles/iap.httpsResourceAccessor" members = [ "PRINCIPAL_A", "PRINCIPAL_B" ] }更改下列內容:
PROJECT_ID:專案名稱。REGION: Google Cloud 區域,例如europe-west1。SERVICE_NAME:Cloud Run 服務的名稱。PRINCIPAL:主體或成員的 ID,通常採用下列格式:PRINCIPAL_TYPE:ID。例如user:my-user@example.com。如需PRINCIPAL可用值的完整清單,請參閱政策繫結參考資料。
如要授予單一主體的存取權:
使用
google_iap_web_cloud_run_service_iam_member資源將角色授予單一主體,而不影響可能具有相同角色的其他主體。在 Terraform 設定中,將下列內容新增至
google_iap_web_cloud_run_service_iam_member資源。resource "google_iap_web_cloud_run_service_iam_member" "member" { project = "/span>PROJECT_ID" location = "REGION" cloud_run_service_name = "SERVICE_NAME" role = "roles/iap.httpsResourceAccessor" member = "PRINCIPAL" }<更改下列內容:
PROJECT_ID:專案名稱。- REGION: Google Cloud 區域,例如
europe-west1。 - SERVICE_NAME:Cloud Run 服務的名稱。
- PRINCIPAL:主體或成員的 ID,通常採用下列格式:PRINCIPAL_TYPE:ID。例如
user:my-user@example.com。如需 PRINCIPAL 可用值的完整清單,請參閱政策繫結參考資料。
無機構
控制台
如要新增或移除存取權,請按照下列步驟操作:
前往 Google Cloud 控制台的「Cloud Run」頁面:
按一下要修改的現有服務,然後點選「Security」(安全性)。
在「IAP」下方,按一下「編輯政策」。
如要新增存取權,請輸入主體,並視需要輸入要新增的存取層級,或將存取層級留空。您必須具備 Access Context Manager 的必要角色,才能查看及新增存取層級。
如果政策中只有一個主體,如要移除存取權,請按一下「Access levels」(存取層級) 旁邊的「Delete policy」(刪除政策) 圖示。
如要從政策中移除個別主體,請按一下要移除的主體名稱旁的「X」X圖示。
如要儲存使用者設定,請按一下「儲存」。
gcloud
事前準備
- 如要將使用者新增至不屬於任何組織的專案,請先按照一次性設定程序設定自訂 OAuth 用戶端。
如要為個別使用者或群組新增或移除 Cloud Run 服務的存取權,請執行下列任一指令:
新增存取權的方式如下:
gcloud iap web add-iam-policy-binding \ --member=user:
USER_EMAIL\ --role=roles/iap.httpsResourceAccessor \ --region=REGION\ --resource-type=cloud-run \ --service=SERVICE_NAME如要移除存取權:
gcloud iap web remove-iam-policy-binding \ --member=user:
USER_EMAIL\ --role=roles/iap.httpsResourceAccessor \ --region=REGION\ --resource-type=cloud-run \ --service=SERVICE_NAME如何查看存取權:
gcloud iap web get-iam-policy \ --region=
REGION\ --resource-type=cloud-run \ --service=SERVICE_NAME
更改下列內容:
USER_EMAIL:使用者的電子郵件地址。REGION:Cloud Run 區域名稱。SERVICE_NAME:Cloud Run 服務的名稱。
Terraform
事前準備
- 如要新增組織外部的使用者主體,您必須先設定 OAuth 用戶端。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
如要向主體清單授予權威性存取權:
使用
google_iap_web_cloud_run_service_iam_binding資源,將角色授予權威主體清單。這項資源可確保只有清單中的成員會獲得角色。其他獲派該角色的主體都會遭到移除。在 Terraform 設定中,將下列內容新增至
google_iap_web_cloud_run_service_iam_binding資源。resource "google_iap_web_cloud_run_service_iam_binding" "binding" { project = "PROJECT_ID" location = "REGION" cloud_run_service_name = "SERVICE_NAME" role = "roles/iap.httpsResourceAccessor" members = [ "PRINCIPAL_A", "PRINCIPAL_B" ] }更改下列內容:
PROJECT_ID:專案名稱。REGION: Google Cloud 區域,例如europe-west1。SERVICE_NAME:Cloud Run 服務的名稱。PRINCIPAL:主體或成員的 ID,通常採用下列格式:PRINCIPAL_TYPE:ID。例如user:my-user@example.com。如需PRINCIPAL可用值的完整清單,請參閱政策繫結參考資料。
如要授予單一主體的存取權:
使用
google_iap_web_cloud_run_service_iam_member資源將角色授予單一主體,而不影響可能具有相同角色的其他主體。在 Terraform 設定中,將下列內容新增至
google_iap_web_cloud_run_service_iam_member資源。resource "google_iap_web_cloud_run_service_iam_member" "member" { project = "/span>PROJECT_ID" location = "REGION" cloud_run_service_name = "SERVICE_NAME" role = "roles/iap.httpsResourceAccessor" member = "PRINCIPAL" }<更改下列內容:
PROJECT_ID:專案名稱。REGION: Google Cloud 區域,例如europe-west1。SERVICE_NAME:Cloud Run 服務的名稱。PRINCIPAL:主體或成員的 ID,通常採用下列格式:PRINCIPAL_TYPE:ID。例如user:my-user@example.com。如需PRINCIPAL可用值的完整清單,請參閱政策繫結參考資料。
透過 Cloud Run 停用 IAP
您可以使用 Google Cloud 控制台或 gcloud CLI 停用 IAP。
控制台
如要停用 Cloud Run 的 IAP,請按照下列步驟操作:
前往 Google Cloud 控制台的「Cloud Run」頁面:
選取要修改的服務。
按一下「安全性」分頁標籤。
取消選取「Identity-Aware Proxy (IAP)」。您的服務受到 IAM 政策保護。不過,如果您未使用 IAM,請選取「Allow Public access」(允許公開存取),將服務設為公開。
依序點選「查看差異並重新部署」和「部署變更」。
gcloud
如要直接從 Cloud Run 停用 IAP,請在部署應用程式時新增 --no-iap 旗標,如下所示:
使用下列任一指令部署 Cloud Run 服務:
新服務:
gcloud run deploy
SERVICE_NAME\ --region=REGION\ --image=IMAGE_URL\ --no-iap現有服務:
gcloud 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 run services describe
SERVICE_NAME輸出內容應不再包含下列字串:
Iap Enabled: true
IAP 不會再將所有目的地為設定 Cloud Run 服務的流量,轉送至 IAP 進行驗證,再傳送至容器。
設定自訂 OAuth 用戶端
建議您在首次啟用 IAP 時使用 Google Cloud 控制台。這樣一來,您就能自動產生憑證,不必手動建立自訂 OAuth 用戶端。直接透過 Google Cloud 控制台在 Cloud Run 上啟用 IAP 時,IAP 會自動在專案層級為您設定自訂 OAuth 用戶端。
如果您使用 gcloud CLI 管理沒有組織的使用者存取權,請直接從 Google Cloud 控制台在 Cloud Run 上啟用 IAP,或按照本節中的步驟手動建立自訂 OAuth 用戶端。
如需處理進階情境,例如自訂同意畫面或在組織層級管理 OAuth 用戶端,請按照下列步驟操作。
設定品牌
前往 Google Cloud 控制台的 OAuth「Branding」(品牌宣傳) 頁面:
按一下「開始使用」。
填寫「應用程式資訊」表單,然後點選「下一步」。
在「目標對象」下方,選取「外部」。
填妥表單其餘部分,然後按一下「建立」。
手動建立自訂 OAuth 用戶端
如果這是您第一次設定 Google 驗證平台:
前往 Google Cloud 控制台的「Clients」(用戶端) 頁面:
如果出現提示訊息,請點按 Google Auth Platform 總覽頁面上的「開始使用」。
- 填寫應用程式資訊詳細資料,然後點選「下一步」。
- 在目標對象類型部分,選取「外部」。
- 填寫聯絡資訊,接受條款,然後按一下「Create」(建立)。
- 按一下「Create client」(建立用戶端)。
- 在「Application type」(應用程式類型) 中,選取「Web application」(網頁應用程式),然後填寫 OAuth 用戶端的名稱。
- 點選「建立」。
- 記下用戶端 ID 和密鑰,然後按一下「OK」。
- 點選新建立的 OAuth 用戶端名稱,即可進行編輯。
- 在「Authorized redirect URIs」(已授權的重新導向 URI) 欄位中,新增下列 URI:
將https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
CLIENT_ID替換為您剛產生的 OAuth 用戶端 ID。 - 按一下 [儲存]。
如果已設定 Google 驗證平台:
前往 Google Cloud 控制台的「Clients」(用戶端) 頁面:
按一下「Create client」(建立用戶端)。
在「Application type」(應用程式類型) 中,選取「Web application」(網頁應用程式),然後填寫 OAuth 用戶端的名稱。
填寫應用程式資訊詳細資料。
點選「建立」。
記下用戶端 ID 和密鑰,然後按一下「OK」。
點選新建立的 OAuth 用戶端名稱,即可進行編輯。
在「Authorized redirect URIs」(已授權的重新導向 URI) 欄位中,新增下列 URI:
將https://iap.googleapis.com/v1/oauth/clientIds/
CLIENT_ID:handleRedirectCLIENT_ID替換為您剛產生的 OAuth 用戶端 ID。按一下 [儲存]。
將 OAuth 用戶端套用至 IAP
您可以在專案或組織層級套用 OAuth 用戶端。
在專案層級執行下列步驟:
建立名為
iap_settings.yaml的檔案,並加入下列內容:access_settings: oauth_settings: client_id:
CLIENT_IDclient_secret:CLIENT_SECRET執行
gcloud iap settings set指令,在專案層級套用 OAuth 用戶端:gcloud iap settings set iap_settings.yaml --project=
PROJECT_ID
更改下列內容:
CLIENT_ID:您在上一步儲存的 OAuth 用戶端 ID。CLIENT_SECRET:您在上一個步驟中儲存的密鑰。PROJECT_ID:專案 ID。
在組織層級執行下列步驟:
如要在組織層級套用 OAuth 用戶端,請執行
gcloud iap settings set指令:gcloud iap settings set iap_settings.yaml --organization=
ORGANIZATION_NUMBER更改下列內容:
CLIENT_ID:您在上一步儲存的 OAuth 用戶端 ID。CLIENT_SECRET:您在上一個步驟中儲存的密鑰。ORGANIZATION_NUMBER:組織編號。
疑難排解
下一節說明如何排解 Cloud Run 的 IAP 問題。
組織外存取權錯誤
為組織外部使用者設定存取權時,可能會遇到下列錯誤。
組織外使用者的存取權:已停用
為確保組織外存取權已停用,建議您在專案層級停用這項功能。其他層級 (服務、資料夾或組織) 的控制選項可能會顯示為已停用,即便可以存取也是如此。
品牌目前設為「內部」
如果自訂 OAuth 用戶端品牌設為內部,則不支援組織外存取權。
如要將品牌設定改為「外部」,透過 IAP 為組織外的主體新增存取權,請完成下列步驟:
在 Google Cloud 控制台中,前往 Google Auth Platform 的「Audience」(目標對象) 頁面:
在「使用者類型」下方,按一下「設為外部」。
服務代理失敗,導致設定 IAM 錯誤
首次在新專案啟用 IAP 時,可能會發生下列錯誤:
Setting IAM permissions failed這是因為 Cloud Run 服務代理失敗。如要解決問題,請再次啟用 IAP,或手動設定 IAM 政策。
後續步驟
- 如要瞭解如何從後端服務或負載平衡器啟用 IAP,請參閱「為 Cloud Run 啟用 IAP」。
- 如果無法為 Cloud Run 啟用 IAP,請參閱「排解錯誤」。
- 管理受 IAP 保護資源的存取權。
- 使用組織政策控管 IAP 啟用狀態。