設定 IAM 代理程式政策

您可以建立 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 允許政策前:

  1. 設定 Google Cloud 帳單專案。

  2. 在專案中啟用 Identity-Aware Proxy API (iap.googleapis.com)。閘道會使用 Identity-Aware Proxy API,驗證及授權代理的輸出流量。

  3. 瞭解要從何處管理代理的身分。如要使用 Google Cloud 控制台管理整個登錄檔的存取權,請選取包含該登錄檔的專案。

    • Agent Platform 和 Gemini Enterprise 代理:瞭解代理身分。

    • DIY 代理 (Cloud Run):瞭解以服務帳戶為基礎的身分。

  4. 您要管理存取權的目標代理資源 (代理、MCP 伺服器和端點) 必須註冊於 Agent Registry。

    系統會在政策繫結至資源時驗證目標資源,而非在執行階段進行。您無法將政策繫結至未註冊的資源。如果嘗試為未註冊的資源建立政策繫結,會立即失敗,並顯示找不到要求的實體 (NOT_FOUND) 錯誤。

    建議您在持續整合和持續部署 (CI/CD) 管道中定義及套用政策。這有助於確保在部署前,整合檢查期間能找出無效的參照或錯字。

  5. 設定 Agent Gateway。建議您一開始先在模擬測試模式設定 Agent Gateway。如要瞭解 Agent Gateway,請參閱「Agent Gateway 總覽」。

必要的角色

如要取得為 AI 代理設定 Agent Platform 所需的權限,請要求管理員在專案中授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

使用 IAP 建立 IAM 允許政策

您可以為下列類型的代理互動定義輸出政策:

建立代理程式對登錄檔政策

代理對儲存庫政策可讓代理存取目前專案 Agent Registry 中的所有代理、MCP 伺服器和端點。

控制台

Google Cloud 控制台,請執行下列操作:

  1. 選取來源代理和目標登錄檔。
    1. 前往 Google Cloud 控制台的「Policies」(政策) 頁面:

      前往「政策」

    2. 如要為 Agent Gateway 輸出新增 IAM UAP,請按一下「Add IAM policy」(新增 IAM 政策)。
    3. 如要選取來源代理,請按照下列步驟操作:
      1. 如要選取代理登錄檔中目前所選專案的所有代理,請選取「All agents」(所有代理)。
      2. 如要在目前專案中選取特定代理,請按照下列步驟操作:
        1. 選取「個別代理」。如要尋找代理程式,請使用 「Filter」(篩選器) 欄位搜尋。
        2. 選取要授予存取權的來源代理。
        3. 按一下「OK」選取代理。
    4. 在「Access target」(存取目標) 中,按一下「Registry」(登錄檔)。
    5. 如要建立 IAM 允許政策並繫結至登錄檔,請按一下「Create」(建立)。
  2. 如要建立條件,請按照下列步驟操作: 在「條件」中,按一下「新增條件」。 在「Add condition」(新增條件) 對話方塊中,執行下列操作:
    1. 在「Title」(名稱) 中輸入條件名稱。
    2. 在「Description」(說明) 中,輸入條件說明。
    3. 如要使用「條件建構工具」新增條件,請按照下列步驟操作:
      1. 在「Condition type」(條件類型) 中,選取下列其中一種條件類型:
        1. 名稱:根據存取的資源名稱,限制代理存取權。
        2. ReadOnly:代理程式是否只能讀取資料,無法執行寫入作業。
        3. 破壞性:代理是否能執行有害或不可逆的動作,例如刪除資源。
        4. Idempotent:是否可覆寫代理存取權。
        5. 開放世界:代理是否能與外部實體的「開放世界」互動 (例如網頁搜尋工具)。如果將這項條件設為「false」,系統會判定代理互動已結束。
      2. 在「運算子」中,選取布林運算子。
      3. 在「值」中,選取條件的值。
    4. 如要新增其他條件,請按一下「新增其他條件」。
    5. 如要儲存條件,請按一下「儲存」。

gcloud

如要使用 gcloud CLI 建立代理到登錄檔輸出政策,請按照下列步驟操作:

  1. 建立包含 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
      • 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
    • CONDITION:

      條件參數,格式如下:

      "condition": {
        "title": "CONDITION_TITLE",
        "description": "CONDITION_DESCRIPTION",
        "expression": "CEL_EXPRESSION"
      }
      

      更改下列內容:

      • CONDITION_TITLE:條件的標題
      • CONDITION_DESCRIPTION:條件說明
      • CEL_EXPRESSION:條件運算式。這個運算式必須是有效的 CEL 運算式。評估結果必須為 true,才能允許存取。

  2. 在 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 的專案 ID
  • REGION:登錄檔位置 (例如 us-central1 或 global)
  • ORGANIZATION_ID:組織 ID
  • AGENT_RUNTIME_PROJECT_NUMBER::託管代理的專案 編號

建立代理對代理輸出政策

控制台

如要使用 Google Cloud 控制台定義代理對代理輸出政策,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Policies」(政策) 頁面:

    前往「政策」

  2. 如要為 Agent Gateway 輸出新增 IAM UAP,請按一下「Add IAM policy」(新增 IAM 政策)。
  3. 如要選取來源代理,請按照下列步驟操作:
    1. 如要選取代理登錄檔中目前所選專案的所有代理,請選取「All agents」(所有代理)。
    2. 如要在目前專案中選取特定代理,請按照下列步驟操作:
      1. 選取「個別代理」。如要尋找代理程式,請使用 「Filter」(篩選器) 欄位搜尋。
      2. 選取要授予存取權的來源代理。
      3. 按一下「OK」選取代理。
  4. 在「存取目標」中,按一下「代理」。
  5. 在「Select Agent」(選取代理) 中,選取要讓來源代理存取的目標代理。如要尋找代理,請使用 「Filter」(篩選器) 欄位搜尋。
  6. 如要建立 IAM 允許政策並繫結至代理,請按一下「Create」(建立)。

gcloud

  1. 以 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
      • 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

  2. 將 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:託管代理程式註冊資料庫的專案 ID
  • REGION:登錄檔位置
  • AGENT_ID:目標註冊代理程式的 ID
  • ORGANIZATION_ID:組織 ID
  • AGENT_RUNTIME_PROJECT_NUMBER:呼叫代理專案的專案編號

建立代理到 MCP 伺服器的輸出政策

控制台

如要使用 Google Cloud 控制台定義代理到 MCP 伺服器的輸出政策,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Policies」(政策) 頁面:

    前往「政策」

  2. 如要為 Agent Gateway 輸出新增 IAM UAP,請按一下「Add IAM policy」(新增 IAM 政策)。
  3. 如要選取來源代理,請按照下列步驟操作:
    1. 如要選取代理登錄檔中目前所選專案的所有代理,請選取「All agents」(所有代理)。
    2. 如要在目前專案中選取特定代理,請按照下列步驟操作:
      1. 選取「個別代理」。如要尋找代理程式,請使用 「Filter」(篩選器) 欄位搜尋。
      2. 選取要授予存取權的來源代理。
      3. 按一下「OK」選取代理。
  4. 在「存取目標」中,按一下「MCP 伺服器」。
  5. 在「Select MCP server」(選取 MCP 伺服器),選取來源代理要存取的目標 MCP 伺服器。如要尋找 MCP 伺服器,請使用篩選器 「Filter」(篩選器) 欄位搜尋。
  6. 如要建立 IAM 允許政策並繫結至 MCP 伺服器,請按一下「建立」。
  1. 建立條件:

    在「條件」中,按一下「新增條件」。 在「Add condition」(新增條件) 對話方塊中,執行下列操作:

    1. 在「Title」(名稱) 中輸入條件名稱。
    2. 在「Description」(說明) 中,輸入條件說明。
    3. 如要使用「條件建構工具」新增條件,請按照下列步驟操作:
      1. 在「Condition type」(條件類型) 中,選取下列其中一種條件類型:
        1. 名稱:根據存取的資源名稱,限制代理存取權。
        2. ReadOnly:代理程式是否只能讀取資料,無法執行寫入作業。
        3. 破壞性:代理是否能執行有害或不可逆的動作,例如刪除資源。
        4. Idempotent:是否可覆寫代理存取權。
        5. 開放世界:代理是否能與外部實體的「開放世界」互動 (例如網頁搜尋工具)。如果將這項條件設為「false」,系統會判定代理互動已結束。
      2. 在「運算子」中,選取布林運算子。
      3. 在「值」中,選取條件的值。
    4. 如要新增其他條件,請按一下「新增其他條件」。
    5. 如要儲存條件,請按一下「儲存」。

gcloud

如要使用 gcloud CLI 建立代理至 MCP 伺服器的輸出政策,請按照下列步驟操作:

  1. 以 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
      • 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
    • CONDITION:

      條件參數,格式如下:

      "condition": {
        "title": "CONDITION_TITLE",
        "description": "CONDITION_DESCRIPTION",
        "expression": "CEL_EXPRESSION"
      }
      

      更改下列內容:

      • CONDITION_TITLE:條件的標題
      • CONDITION_DESCRIPTION:條件說明
      • CEL_EXPRESSION:條件運算式。這個運算式必須是有效的 CEL 運算式。評估結果必須為 true,才能允許存取。

  2. 將 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:託管代理程式註冊資料庫的專案 ID
  • REGION:註冊資料庫位置 (如果是 Google 代管的遠端 MCP 伺服器,請使用 global)
  • MCP_SERVER_ID:已註冊 MCP 伺服器的 ID
  • ORGANIZATION_ID:組織 ID
  • AGENT_RUNTIME_PROJECT_NUMBER:呼叫代理專案的專案編號
  • TOOL_NAME:允許的 MCP 工具名稱

建立代理程式對端點輸出政策

控制台

如要使用 Google Cloud 控制台定義代理程式對端點輸出政策,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Policies」(政策) 頁面:

    前往「政策」

  2. 如要為 Agent Gateway egress 新增 IAM UAP,請按一下「Add IAM policy」(新增 IAM 政策)。
  3. 如要選取來源代理,請按照下列步驟操作:
    1. 如要選取代理登錄檔中目前所選專案的所有代理,請選取「All agents」(所有代理)。
    2. 如要在目前專案中選取特定代理,請按照下列步驟操作:
      1. 選取「個別代理」。如要尋找代理程式,請使用 「Filter」(篩選器) 欄位搜尋。
      2. 選取要授予存取權的來源代理。
      3. 按一下「OK」選取代理。
  4. 在「存取目標」中,按一下「端點」。
  5. 在「Select Endpoint」(選取端點) 中,選取來源代理要存取的目標端點。如要尋找端點,請使用 「Filter」(篩選器) 欄位搜尋。
  6. 如要建立 IAM 允許政策並繫結至端點,請按一下「Create」(建立)。
  1. 建立條件:

    在「條件」中,按一下「新增條件」。 在「Add condition」(新增條件) 對話方塊中,執行下列操作:

    1. 在「Title」(名稱) 中輸入條件名稱。
    2. 在「Description」(說明) 中,輸入條件說明。
    3. 如要使用「條件建構工具」新增條件,請按照下列步驟操作:
      1. 在「Condition type」(條件類型) 中,選取下列其中一種條件類型:
        1. 名稱:根據存取的資源名稱,限制代理存取權。
        2. ReadOnly:代理程式是否只能讀取資料,無法執行寫入作業。
        3. 破壞性:代理是否能執行有害或不可逆的動作,例如刪除資源。
        4. Idempotent:是否可覆寫代理存取權。
        5. 開放世界:代理是否能與外部實體的「開放世界」互動 (例如網頁搜尋工具)。如果將這項條件設為「false」,系統會判定代理互動已結束。
      2. 在「運算子」中,選取布林運算子。
      3. 在「值」中,選取條件的值。
    4. 如要新增其他條件,請按一下「新增其他條件」。
    5. 如要儲存條件,請按一下「儲存」。

gcloud

  1. 以 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
      • 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

  2. 將 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:託管代理程式註冊資料庫的專案 ID
  • REGION:登錄檔位置
  • ENDPOINT_ID:已註冊端點的 ID
  • ORGANIZATION_ID:組織 ID
  • AGENT_RUNTIME_PROJECT_NUMBER:呼叫代理專案的專案編號

使用 IAP 驗證 Cloud Run MCP 伺服器

如要為部署在 Cloud Run 的 MCP 伺服器設定 IAP 驗證機制,請按照下列步驟操作:

  1. 在 Cloud Run 啟用 IAP。

  2. 將叫用者角色授予 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:專案編號
  3. 在新的或現有的 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:區域。
  4. 建立及設定 OAuth 用戶端。

    按照「共用 OAuth 用戶端以進行程式輔助存取」中的操作說明,註冊 OAuth 用戶端的通用用戶端 ID,以便與 IAP 搭配使用。

    請務必記錄完成這個步驟時取得的下列值:

    • OAuth 用戶端 ID
    • OAuth 用戶端密鑰
    • 重新導向 URI
  5. 編輯 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 相同。
  6. 測試是否能連線至 MCP 伺服器。

後續步驟

總覽

概略瞭解 Agent Gateway。

指南

瞭解如何設定內容和業務政策。

指南

瞭解如何測試政策。