您可以建立 Identity and Access Management (IAM) 允許政策,控管代理與 Agent Registry 中註冊資源的通訊。Agent Gateway 會使用 Identity-Aware Proxy (IAP) 強制執行政策。
您可以在 Google Cloud 控制台的「Policies」(政策) 頁面建立 IAM 允許政策。
Google Cloud CLI 和 Terraform 支援建立 IAM 輸出政策。
您也可以建立 IAM 統一存取政策 (UAP),其中可包含允許和拒絕效果規則。
事前準備
建立 IAM 允許政策前:
設定 Google Cloud 帳單專案。
在專案中啟用 Identity-Aware Proxy API (
iap.googleapis.com)。閘道會使用 Identity-Aware Proxy API,驗證及授權代理的輸出流量。瞭解要從何處管理代理的身分。如要使用 Google Cloud 控制台管理整個登錄檔的存取權,請選取包含該登錄檔的專案。
Agent Platform 和 Gemini Enterprise 代理:瞭解代理身分。
DIY 代理 (Cloud Run):瞭解以服務帳戶為基礎的身分。
您要管理存取權的目標代理資源 (代理、MCP 伺服器和端點) 必須註冊於 Agent Registry。
系統會在政策繫結至資源時驗證目標資源,而非在執行階段進行。您無法將政策繫結至未註冊的資源。如果嘗試為未註冊的資源建立政策繫結,會立即失敗,並顯示找不到要求的實體 (
NOT_FOUND) 錯誤。建議您在持續整合和持續部署 (CI/CD) 管道中定義及套用政策。這有助於確保在部署前,整合檢查期間能找出無效的參照或錯字。
設定 Agent Gateway。建議您一開始先在模擬測試模式設定 Agent Gateway。如要瞭解 Agent Gateway,請參閱「Agent Gateway 總覽」。
必要的角色
如要取得為 AI 代理設定 Agent Platform 所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
- IAP 政策管理員 (
roles/iap.admin) - 代理程式登錄檔檢視者 (
roles/agentregistry.viewer) - 專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin) - 網路安全管理員 (
roles/networksecurity.admin) - Service Extensions 管理員 (
roles/serviceextensions.admin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
使用 IAP 建立 IAM 允許政策
您可以為下列類型的代理互動定義輸出政策:
建立代理程式對登錄檔政策
代理對儲存庫政策可讓代理存取目前專案 Agent Registry 中的所有代理、MCP 伺服器和端點。
控制台
Google Cloud 控制台,請執行下列操作:
- 選取來源代理和目標登錄檔。
-
前往 Google Cloud 控制台的「Policies」(政策) 頁面:
- 如要為 Agent Gateway 輸出新增 IAM UAP,請按一下「Add IAM policy」(新增 IAM 政策)。
-
如要選取來源代理,請按照下列步驟操作:
- 如要選取代理登錄檔中目前所選專案的所有代理,請選取「All agents」(所有代理)。
- 如要在目前專案中選取特定代理,請按照下列步驟操作:
- 選取「個別代理」。如要尋找代理程式,請使用 「Filter」(篩選器) 欄位搜尋。
- 選取要授予存取權的來源代理。
- 按一下「OK」選取代理。
- 在「Access target」(存取目標) 中,按一下「Registry」(登錄檔)。
- 如要建立 IAM 允許政策並繫結至登錄檔,請按一下「Create」(建立)。
-
- 如要建立條件,請按照下列步驟操作:
在「條件」中,按一下「新增條件」。
在「Add condition」(新增條件) 對話方塊中,執行下列操作:
- 在「Title」(名稱) 中輸入條件名稱。
- 在「Description」(說明) 中,輸入條件說明。
-
如要使用「條件建構工具」新增條件,請按照下列步驟操作:
-
在「Condition type」(條件類型) 中,選取下列其中一種條件類型:
- 名稱:根據存取的資源名稱,限制代理存取權。
- ReadOnly:代理程式是否只能讀取資料,無法執行寫入作業。
- 破壞性:代理是否能執行有害或不可逆的動作,例如刪除資源。
- Idempotent:是否可覆寫代理存取權。
- 開放世界:代理是否能與外部實體的「開放世界」互動 (例如網頁搜尋工具)。如果將這項條件設為「false」,系統會判定代理互動已結束。
- 在「運算子」中,選取布林運算子。
- 在「值」中,選取條件的值。
-
在「Condition type」(條件類型) 中,選取下列其中一種條件類型:
- 如要新增其他條件,請按一下「新增其他條件」。
- 如要儲存條件,請按一下「儲存」。
gcloud
如要使用 gcloud CLI 建立代理到登錄檔輸出政策,請按照下列步驟操作:
建立包含 IAM 政策的 IAP 政策。
{ "policy": { "bindings": [ { "role": "roles/iap.egressor", "members": [ "AGENT_PRINCIPALS" ], "condition": { CONDITION } } ] } }更改下列內容:
-
AGENT_PRINCIPALS:來源代理身分的主體陣列。主體可以是一或多個個別主體 (principal://...) 或主體集 (principalSet://...) 的陣列,格式如下:- 內建代理身分 (Agent Runtime、Gemini Enterprise 或具備代理身分的 Cloud Run):
principal://TRUST_DOMAIN/AGENT_UNIQUE_IDENTIFIER,例如:- Agent Runtime (推論引擎):
principal://agents.global.org-123456789012.system.id.goog/resources/aiplatform/projects/9876543210/locations/us-central1/reasoningEngines/my-agent - Gemini Enterprise (Discovery Engine):
principal://agents.global.org-123456789012.system.id.goog/resources/discoveryengine/projects/9876543210/locations/global/engines/my-engine/assistants/default_assistant/agents/default/core_assistant - Cloud Run (代理身分):
principal://agents.global.org-123456789012.system.id.goog/resources/run/projects/9876543210/locations/us-central1/services/my-cloud-run-agent
- Agent Runtime (推論引擎):
- Workload Identity Federation (自訂或外部代理程式):
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT,例如principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-agent-identity/subject/ns/default/sa/my-agent
- 內建代理身分 (Agent Runtime、Gemini Enterprise 或具備代理身分的 Cloud Run):
CONDITION:條件參數,格式如下:
"condition": { "title": "CONDITION_TITLE", "description": "CONDITION_DESCRIPTION", "expression": "CEL_EXPRESSION" }更改下列內容:
CONDITION_TITLE:條件的標題CONDITION_DESCRIPTION:條件說明CEL_EXPRESSION:條件運算式。這個運算式必須是有效的 CEL 運算式。評估結果必須為true,才能允許存取。
-
在 IAP 中,為 Agent Registry 的所有資源設定 IAM 允許政策:
gcloud iap web set-iam-policy agents-iap-policy.json \ --project=PROJECT_ID \ --resource-type=agent-registry \ --region=REGION更改下列內容:
PROJECT_ID:資源所在專案的專案 ID。或者,您也可以分別指定--folder或--organization旗標,將政策繫結至資料夾或組織。-
REGION:資源所在的區域
以下範例顯示代理階層的輸出存取權:
{ "policy": { "bindings": [ { "role": "roles/iap.egressor", "members": [ "principalSet://agents.global.org-ORGANIZATION_ID.system.id.goog/attribute.platformContainer/aiplatform/projects/1234" ] } ] } }
Terraform
如要授予 Agent Registry 執行個體中所有資源的輸出存取權,請在託管登錄檔和 Agent Gateway 的專案中設定 google_iap_agent_registry_iam_member 資源:
resource "google_iap_agent_registry_iam_member" "registry_egress" { project = "PROJECT_ID" location = "REGION" role = "roles/iap.egressor" member = "principalSet://agents.global.org-ORGANIZATION_ID.system.id.goog/attribute.platformContainer/aiplatform/projects/AGENT_RUNTIME_PROJECT_NUMBER" }
更改下列內容:
PROJECT_ID:託管 Agent Registry 和 Agent Gateway 的專案 IDREGION:登錄檔位置 (例如us-central1或global)ORGANIZATION_ID:組織 IDAGENT_RUNTIME_PROJECT_NUMBER::託管代理的專案 編號
建立代理對代理輸出政策
控制台
如要使用 Google Cloud 控制台定義代理對代理輸出政策,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「Policies」(政策) 頁面:
- 如要為 Agent Gateway 輸出新增 IAM UAP,請按一下「Add IAM policy」(新增 IAM 政策)。
-
如要選取來源代理,請按照下列步驟操作:
- 如要選取代理登錄檔中目前所選專案的所有代理,請選取「All agents」(所有代理)。
- 如要在目前專案中選取特定代理,請按照下列步驟操作:
- 選取「個別代理」。如要尋找代理程式,請使用 「Filter」(篩選器) 欄位搜尋。
- 選取要授予存取權的來源代理。
- 按一下「OK」選取代理。
- 在「存取目標」中,按一下「代理」。
- 在「Select Agent」(選取代理) 中,選取要讓來源代理存取的目標代理。如要尋找代理,請使用 「Filter」(篩選器) 欄位搜尋。
- 如要建立 IAM 允許政策並繫結至代理,請按一下「Create」(建立)。
gcloud
以 JSON 格式檔案建立 IAM 允許政策。
{ "policy": { "bindings": [ { "role": "roles/iap.egressor", "members": [ "AGENT_PRINCIPALS" ] } ] } }更改下列內容:
-
AGENT_PRINCIPALS:來源代理身分的主體陣列。主體可以是一或多個個別主體 (principal://...) 或主體集 (principalSet://...) 的陣列,格式如下:- 內建代理身分 (Agent Runtime、Gemini Enterprise 或具備代理身分的 Cloud Run):
principal://TRUST_DOMAIN/AGENT_UNIQUE_IDENTIFIER,例如:- Agent Runtime (推論引擎):
principal://agents.global.org-123456789012.system.id.goog/resources/aiplatform/projects/9876543210/locations/us-central1/reasoningEngines/my-agent - Gemini Enterprise (Discovery Engine):
principal://agents.global.org-123456789012.system.id.goog/resources/discoveryengine/projects/9876543210/locations/global/engines/my-engine/assistants/default_assistant/agents/default/core_assistant - Cloud Run (代理身分):
principal://agents.global.org-123456789012.system.id.goog/resources/run/projects/9876543210/locations/us-central1/services/my-cloud-run-agent
- Agent Runtime (推論引擎):
- Workload Identity Federation (自訂或外部代理程式):
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT,例如principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-agent-identity/subject/ns/default/sa/my-agent
- 內建代理身分 (Agent Runtime、Gemini Enterprise 或具備代理身分的 Cloud Run):
-
將 IAM 政策繫結至 IAP。
gcloud iap web set-iam-policy agents-iap-policy.json \ --project=PROJECT_ID \ --resource-type=agent-registry \ --agent=AGENT_ID \ --region=REGION更改下列內容:
PROJECT_ID:資源所在專案的專案 ID。或者,您也可以分別指定--folder或--organization旗標,將政策繫結至資料夾或組織。AGENT_ID:代理 ID-
REGION:資源所在的區域
Terraform
如要將輸出存取權授予特定已註冊的代理,請設定 google_iap_agent_registry_agent_iam_member 資源:
resource "google_iap_agent_registry_agent_iam_member" "agent_egress" { project = "PROJECT_ID" location = "REGION" agent_id = "AGENT_ID" role = "roles/iap.egressor" member = "principalSet://agents.global.org-ORGANIZATION_ID.system.id.goog/attribute.platformContainer/aiplatform/projects/AGENT_RUNTIME_PROJECT_NUMBER" }
更改下列內容:
PROJECT_ID:託管代理程式註冊資料庫的專案 IDREGION:登錄檔位置AGENT_ID:目標註冊代理程式的 IDORGANIZATION_ID:組織 IDAGENT_RUNTIME_PROJECT_NUMBER:呼叫代理專案的專案編號
建立代理到 MCP 伺服器的輸出政策
控制台
如要使用 Google Cloud 控制台定義代理到 MCP 伺服器的輸出政策,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「Policies」(政策) 頁面:
- 如要為 Agent Gateway 輸出新增 IAM UAP,請按一下「Add IAM policy」(新增 IAM 政策)。
-
如要選取來源代理,請按照下列步驟操作:
- 如要選取代理登錄檔中目前所選專案的所有代理,請選取「All agents」(所有代理)。
- 如要在目前專案中選取特定代理,請按照下列步驟操作:
- 選取「個別代理」。如要尋找代理程式,請使用 「Filter」(篩選器) 欄位搜尋。
- 選取要授予存取權的來源代理。
- 按一下「OK」選取代理。
- 在「存取目標」中,按一下「MCP 伺服器」。
- 在「Select MCP server」(選取 MCP 伺服器),選取來源代理要存取的目標 MCP 伺服器。如要尋找 MCP 伺服器,請使用篩選器 「Filter」(篩選器) 欄位搜尋。
- 如要建立 IAM 允許政策並繫結至 MCP 伺服器,請按一下「建立」。
建立條件:
在「條件」中,按一下「新增條件」。 在「Add condition」(新增條件) 對話方塊中,執行下列操作:
- 在「Title」(名稱) 中輸入條件名稱。
- 在「Description」(說明) 中,輸入條件說明。
-
如要使用「條件建構工具」新增條件,請按照下列步驟操作:
-
在「Condition type」(條件類型) 中,選取下列其中一種條件類型:
- 名稱:根據存取的資源名稱,限制代理存取權。
- ReadOnly:代理程式是否只能讀取資料,無法執行寫入作業。
- 破壞性:代理是否能執行有害或不可逆的動作,例如刪除資源。
- Idempotent:是否可覆寫代理存取權。
- 開放世界:代理是否能與外部實體的「開放世界」互動 (例如網頁搜尋工具)。如果將這項條件設為「false」,系統會判定代理互動已結束。
- 在「運算子」中,選取布林運算子。
- 在「值」中,選取條件的值。
-
在「Condition type」(條件類型) 中,選取下列其中一種條件類型:
- 如要新增其他條件,請按一下「新增其他條件」。
- 如要儲存條件,請按一下「儲存」。
gcloud
如要使用 gcloud CLI 建立代理至 MCP 伺服器的輸出政策,請按照下列步驟操作:
以 JSON 格式檔案建立 IAM 允許政策。
{ "policy": { "bindings": [ { "role": "roles/iap.egressor", "members": [ "AGENT_PRINCIPALS" ], "condition": { CONDITION } } ] } }更改下列內容:
-
AGENT_PRINCIPALS:來源代理身分的主體陣列。主體可以是一或多個個別主體 (principal://...) 或主體集 (principalSet://...) 的陣列,格式如下:- 內建代理身分 (Agent Runtime、Gemini Enterprise 或具備代理身分的 Cloud Run):
principal://TRUST_DOMAIN/AGENT_UNIQUE_IDENTIFIER,例如:- Agent Runtime (推論引擎):
principal://agents.global.org-123456789012.system.id.goog/resources/aiplatform/projects/9876543210/locations/us-central1/reasoningEngines/my-agent - Gemini Enterprise (Discovery Engine):
principal://agents.global.org-123456789012.system.id.goog/resources/discoveryengine/projects/9876543210/locations/global/engines/my-engine/assistants/default_assistant/agents/default/core_assistant - Cloud Run (代理身分):
principal://agents.global.org-123456789012.system.id.goog/resources/run/projects/9876543210/locations/us-central1/services/my-cloud-run-agent
- Agent Runtime (推論引擎):
- Workload Identity Federation (自訂或外部代理程式):
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT,例如principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-agent-identity/subject/ns/default/sa/my-agent
- 內建代理身分 (Agent Runtime、Gemini Enterprise 或具備代理身分的 Cloud Run):
CONDITION:條件參數,格式如下:
"condition": { "title": "CONDITION_TITLE", "description": "CONDITION_DESCRIPTION", "expression": "CEL_EXPRESSION" }更改下列內容:
CONDITION_TITLE:條件的標題CONDITION_DESCRIPTION:條件說明CEL_EXPRESSION:條件運算式。這個運算式必須是有效的 CEL 運算式。評估結果必須為true,才能允許存取。
-
將 IAM 政策繫結至 IAP。
gcloud iap web set-iam-policy agents-iap-policy.json \ --project=PROJECT_ID \ --resource-type=agent-registry \ --mcp-server=MCP_SERVER_ID \\ --region=REGION更改下列內容:
PROJECT_ID:資源所在專案的專案 ID。或者,您也可以分別指定--folder或--organization旗標,將政策繫結至資料夾或組織。MCP_SERVER_ID:MCP 伺服器的 ID-
REGION:資源所在的區域
以下範例顯示 IAM 允許政策,允許 DIY 代理使用
MCP授權類型,對名為GitHubTool的工具進行唯讀存取。{ "policy": { "bindings": [ { "role": "roles/iap.egressor", "members": [ "principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool.svc.id.goog/subject/ns/default/sa/my-ae-agent" ], "condition": { "title": "Allow AE Agent Read-Only Egress to GitHub MCP server", "expression": "api.getAttribute('iap.googleapis.com/mcp.toolName', '') == 'GitHubTool' && api.getAttribute('iap.googleapis.com/mcp.tool.isReadOnly', false) == true && api.getAttribute('iap.googleapis.com/request.auth.type', '') == 'MCP'" } } ] } }
Terraform
如要將有條件的輸出存取權授予已註冊的 MCP 伺服器及其工具,請設定 google_iap_agent_registry_mcp_server_iam_member 資源:
resource "google_iap_agent_registry_mcp_server_iam_member" "mcp_egress" { project = "PROJECT_ID" location = "REGION" mcp_server_id = "MCP_SERVER_ID" role = "roles/iap.egressor" member = "principalSet://agents.global.org-ORGANIZATION_ID.system.id.goog/attribute.platformContainer/aiplatform/projects/AGENT_RUNTIME_PROJECT_NUMBER" condition { title = "Allow read-only MCP tool access" expression = "api.getAttribute('iap.googleapis.com/mcp.toolName', '') == 'TOOL_NAME' && api.getAttribute('iap.googleapis.com/mcp.tool.isReadOnly', false) == true" } }
更改下列內容:
PROJECT_ID:託管代理程式註冊資料庫的專案 IDREGION:註冊資料庫位置 (如果是 Google 代管的遠端 MCP 伺服器,請使用global)MCP_SERVER_ID:已註冊 MCP 伺服器的 IDORGANIZATION_ID:組織 IDAGENT_RUNTIME_PROJECT_NUMBER:呼叫代理專案的專案編號TOOL_NAME:允許的 MCP 工具名稱
建立代理程式對端點輸出政策
控制台
如要使用 Google Cloud 控制台定義代理程式對端點輸出政策,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「Policies」(政策) 頁面:
- 如要為 Agent Gateway egress 新增 IAM UAP,請按一下「Add IAM policy」(新增 IAM 政策)。
-
如要選取來源代理,請按照下列步驟操作:
- 如要選取代理登錄檔中目前所選專案的所有代理,請選取「All agents」(所有代理)。
- 如要在目前專案中選取特定代理,請按照下列步驟操作:
- 選取「個別代理」。如要尋找代理程式,請使用 「Filter」(篩選器) 欄位搜尋。
- 選取要授予存取權的來源代理。
- 按一下「OK」選取代理。
- 在「存取目標」中,按一下「端點」。
- 在「Select Endpoint」(選取端點) 中,選取來源代理要存取的目標端點。如要尋找端點,請使用 「Filter」(篩選器) 欄位搜尋。
- 如要建立 IAM 允許政策並繫結至端點,請按一下「Create」(建立)。
建立條件:
在「條件」中,按一下「新增條件」。 在「Add condition」(新增條件) 對話方塊中,執行下列操作:
- 在「Title」(名稱) 中輸入條件名稱。
- 在「Description」(說明) 中,輸入條件說明。
-
如要使用「條件建構工具」新增條件,請按照下列步驟操作:
-
在「Condition type」(條件類型) 中,選取下列其中一種條件類型:
- 名稱:根據存取的資源名稱,限制代理存取權。
- ReadOnly:代理程式是否只能讀取資料,無法執行寫入作業。
- 破壞性:代理是否能執行有害或不可逆的動作,例如刪除資源。
- Idempotent:是否可覆寫代理存取權。
- 開放世界:代理是否能與外部實體的「開放世界」互動 (例如網頁搜尋工具)。如果將這項條件設為「false」,系統會判定代理互動已結束。
- 在「運算子」中,選取布林運算子。
- 在「值」中,選取條件的值。
-
在「Condition type」(條件類型) 中,選取下列其中一種條件類型:
- 如要新增其他條件,請按一下「新增其他條件」。
- 如要儲存條件,請按一下「儲存」。
gcloud
以 JSON 格式檔案建立 IAM 允許政策。
{ "policy": { "bindings": [ { "role": "roles/iap.egressor", "members": [ "AGENT_PRINCIPALS" ] } ] } }更改下列內容:
-
AGENT_PRINCIPALS:來源代理身分的主體陣列。主體可以是一或多個個別主體 (principal://...) 或主體集 (principalSet://...) 的陣列,格式如下:- 內建代理身分 (Agent Runtime、Gemini Enterprise 或具備代理身分的 Cloud Run):
principal://TRUST_DOMAIN/AGENT_UNIQUE_IDENTIFIER,例如:- Agent Runtime (推論引擎):
principal://agents.global.org-123456789012.system.id.goog/resources/aiplatform/projects/9876543210/locations/us-central1/reasoningEngines/my-agent - Gemini Enterprise (Discovery Engine):
principal://agents.global.org-123456789012.system.id.goog/resources/discoveryengine/projects/9876543210/locations/global/engines/my-engine/assistants/default_assistant/agents/default/core_assistant - Cloud Run (代理身分):
principal://agents.global.org-123456789012.system.id.goog/resources/run/projects/9876543210/locations/us-central1/services/my-cloud-run-agent
- Agent Runtime (推論引擎):
- Workload Identity Federation (自訂或外部代理程式):
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT,例如principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-agent-identity/subject/ns/default/sa/my-agent
- 內建代理身分 (Agent Runtime、Gemini Enterprise 或具備代理身分的 Cloud Run):
-
將 IAM 政策繫結至 IAP。
gcloud iap web set-iam-policy agents-iap-policy.json \ --project=PROJECT_ID \ --resource-type=agent-registry \ --endpoint=ENDPOINT_ID \ --region=REGION更改下列內容:
PROJECT_ID:資源所在專案的專案 ID。或者,您也可以分別指定--folder或--organization旗標,將政策繫結至資料夾或組織。ENDPOINT_ID:端點 ID-
REGION:資源所在的區域
Terraform
如要將輸出存取權授予特定已註冊的端點,請設定 google_iap_agent_registry_endpoint_iam_member 資源:
resource "google_iap_agent_registry_endpoint_iam_member" "endpoint_egress" { project = "PROJECT_ID" location = "REGION" endpoint_id = "ENDPOINT_ID" role = "roles/iap.egressor" member = "principalSet://agents.global.org-ORGANIZATION_ID.system.id.goog/attribute.platformContainer/aiplatform/projects/AGENT_RUNTIME_PROJECT_NUMBER" }
更改下列內容:
PROJECT_ID:託管代理程式註冊資料庫的專案 IDREGION:登錄檔位置ENDPOINT_ID:已註冊端點的 IDORGANIZATION_ID:組織 IDAGENT_RUNTIME_PROJECT_NUMBER:呼叫代理專案的專案編號
使用 IAP 驗證 Cloud Run MCP 伺服器
如要為部署在 Cloud Run 的 MCP 伺服器設定 IAP 驗證機制,請按照下列步驟操作:
在 Cloud Run 啟用 IAP。
將叫用者角色授予 IAP 服務代理:
gcloud run services add-iam-policy-binding SERVICE_NAME \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap.iam.gserviceaccount.com' \ --role='roles/run.invoker'更改下列內容:
SERVICE_NAME:服務名稱PROJECT_NUMBER:專案編號
在新的或現有的 Cloud Run 服務上啟用 IAP。
新服務
如要部署新服務,請執行下列指令:
gcloud run deploy SERVICE_NAME \ --image=CONTAINER_IMAGE \ --region=REGION \ --project=PROJECT_ID \ --allow-unauthenticated \ --iap \ --functional-type=mcp-server
更改下列內容:
SERVICE_NAME:服務名稱CONTAINER_IMAGE:容器映像檔REGION:部署服務的區域PROJECT_ID:已啟用 Cloud Run 的專案 ID。
現有服務
如要更新現有服務,請執行下列指令:
gcloud run services update SERVICE_NAME \ --region=REGION \ --iap \ --functional-type=mcp-server
更改下列內容:
SERVICE_NAME:服務名稱。REGION:區域。
建立及設定 OAuth 用戶端。
按照「共用 OAuth 用戶端以進行程式輔助存取」中的操作說明,註冊 OAuth 用戶端的通用用戶端 ID,以便與 IAP 搭配使用。
請務必記錄完成這個步驟時取得的下列值:
- OAuth 用戶端 ID
- OAuth 用戶端密鑰
- 重新導向 URI
編輯 Gemini 主目錄 (
~/.gemini/) 中的settings.json檔案,設定 Gemini CLI 等用戶端或代理,連線至已部署的 MCP 伺服器。以下是
settings.json範本:{ "mcpServers": { "my_mcp_server": { "httpUrl": "https://SERVICE_URL", "oauth": { "enabled": "true", "clientId": "OAUTH_CLIENT_ID", "clientSecret": "OAUTH_CLIENT_SECRET", "scopes": [ "email", "openid" ], "redirectUri": "REDIRECT_URI" } } } }更改下列內容:
SERVICE_URL:Cloud Run 服務網址。OAUTH_CLIENT_ID:步驟 2 的用戶端 ID。OAUTH_CLIENT_SECRET:步驟 2 的用戶端密鑰。REDIRECT_URI:重新導向 URI,必須與步驟 2 相同。
測試是否能連線至 MCP 伺服器。