參考架構
在下列參考架構中,Shared VPC 會部署在服務專案中,並搭配 Gemini 模型,ph-fm-svc-project (基礎模型服務專案) 具有服務政策屬性,可允許從 AWS 私下存取 Agent Platform API:
- 單一 VPC Service Controls 範圍
- 專案定義的使用者身分

選用步驟:建立存取層級
如果使用者需要透過 Cloud de Confiance 主控台存取 Gemini Enterprise Agent Platform,請按照本節中的操作說明建立 VPC Service Controls 存取層級。不過,如果 API 的程式輔助存取來自私人來源 (例如透過 Private Google Access 或 Cloud Workstations 的地端部署),則不需要存取層級。
在本參考架構中,我們使用公司 CIDR 範圍 corp-public-block,允許公司員工流量存取 Cloud de Confiance 控制台。
Access Context Manager 可讓 Cloud de Confiance by S3NS 組織管理員依據屬性,為Cloud de Confiance by S3NS中的專案和資源定義精細的存取控管機制。
存取層級描述接受要求的必要條件,例如:
- 裝置類型和作業系統 (須有 Chrome Enterprise 進階版授權)
- IP 位址
- 使用者身分
如果這是貴機構首次使用 Access Context Manager,管理員必須先定義存取權政策,這是存取層級和服務範圍的容器。
在 Cloud de Confiance 控制台頂端的專案選取器中,按一下「全部」分頁標籤,然後選取您的機構。
按照「建立基本存取層級」頁面的指示建立基本存取層級。指定下列選項:
- 在「建立條件」下方,選擇「基本模式」。
- 在「Access level title」(存取層級標題) 欄位中輸入
corp-public-block。 - 在「條件」部分,將「符合條件時,傳回以下值:」選項設為「TRUE」。
- 在「IP Subnetworks」(IP 子網路) 下方,選擇「Public IP」(公用 IP)。
- 針對 IP 位址範圍,請指定需要存取 VPC Service Controls perimeter 的外部 CIDR 範圍。
建立 VPC Service Controls 服務範圍
建立服務邊界時,您可以指定受保護的專案,允許從邊界外部存取受保護的服務。搭配使用 VPC Service Controls 和 Shared VPC 時,您會建立一個大型範圍,同時包含主專案和服務專案。(如果您只在服務範圍內選取服務專案,服務專案的網路端點會顯示在服務範圍外,因為子網路只與主專案相關聯)。
選取新範圍的設定類型
在本節中,您將以模擬測試模式建立 VPC Service Controls 服務邊界。在模擬測試模式下,perimeter 會記錄違規事項,就好像 perimeter 已強制執行一樣,但不會禁止存取受限制服務。建議您先使用模擬測試模式,再切換至強制執行模式,這是最佳做法。
在 Cloud de Confiance 控制台導覽選單中,依序按一下「Security」(安全性) 和「VPC Service Controls」。
在「VPC Service Controls」頁面中,按一下「Dry run mode」(模擬測試模式)。
按一下「New perimeter」(新增 perimeter)。
在「New VPC Service Perimeter」(新增虛擬私有雲服務範圍) 分頁的「Perimeter Name」(範圍名稱) 方塊中,輸入範圍的名稱。否則請接受預設值。
Perimeter 名稱的長度上限為 50 個字元,開頭須為英文字母,且只能包含 ASCII 拉丁字母 (a-z、A-Z)、數字 (0-9) 或底線 (_)。範圍名稱會區分大小寫,且在存取政策中不得重複。
選取要保護的資源
按一下「要保護的資源」。
如要新增您想在該 perimeter 內保護的專案或虛擬私有雲網路,請按照下列步驟操作:
按一下「新增資源」。
如要將專案新增至範圍,請在「新增資源」窗格中,按一下「新增專案」。
如要選取專案,請在「新增專案」對話方塊中,勾選該專案的核取方塊。在本參考架構中,我們選取下列專案:
infra-host-projectaiml-host-projectph-fm-svc-project
按一下「新增所選資源」。新增的專案會顯示在「Projects」(專案) 部分中。
選取受限制的服務
在本參考架構中,受限 API 的範圍有限,只啟用 Gemini 必要的 API。不過,我們建議您在建立 perimeter 時限制所有服務,以降低Cloud de Confiance by S3NS 服務中發生資料竊取的風險。
如要選取要在 perimeter 內保護的服務,請按照下列步驟操作:
按一下「受限制的服務」。
在「受限制的服務」窗格中,按一下「新增服務」。
在「Specify services to restrict」(指定要限制的服務) 對話方塊中,選取「Agent Platform API」。
按一下「新增 Agent Platform API」。
選用:選取可透過虛擬私有雲存取的服務
「可透過虛擬私有雲存取的服務」設定會限制可從 service perimeter 內部網路端點存取的服務集。在本參考架構中,我們保留「所有服務」的預設設定。
選用:選取存取層級
如果您在先前的章節中建立了公司 CIDR 存取層級,請按照下列步驟操作,允許從 perimeter 外部存取受保護的資源:
按一下「存取層級」。
按一下「選擇存取層級」方塊。
您也可以在建立 perimeter 後新增存取層級。
選取對應存取層級的核取方塊。(在本參考架構中,這是
corp-public-block)。
輸入和輸出政策
在本參考架構中,您不需要在「Ingress Policy」(輸入政策) 或「Egress Policy」(輸出政策) 窗格中指定任何設定。
建立範圍
完成上述設定步驟後,按一下「建立 perimeter」即可建立 perimeter。
設定 AWS 與 Google API 之間的網路連線
設定適用於 Google API 的 Private Service Connect
使用 Private Service Connect 存取 Google API,可取代 Private Google Access 或 Google API 的公開網域名稱。在本例中,製作人是 Google。
使用 Private Service Connect 可執行下列操作:
- 建立一或多個內部 IP 位址,以便存取 Google API,滿足不同用途的需求。
- 存取 Google API 時,將地端部署流量直接導向特定 IP 位址和區域。
- 建立用於解析 Google API 的自訂端點 DNS 名稱。
在參考架構中,名為 restricted 的 Private Service Connect Google API 端點 (IP 位址為 10.10.10.3,) 會與目標 VPC-SC 一併部署,做為虛擬 IP (VIP),用來存取 VPC-SC 周邊設定中受限制的服務。系統不支援使用 VIP 指定非受限制的服務。詳情請參閱「關於存取 Agent Platform API | Cloud de Confiance by S3NS」。
設定 AWS 虛擬私有雲網路
Amazon Web Services (AWS) 與 Cloud de Confiance by S3NS之間的網路連線是透過高可用性 VPN (HA VPN) 通道建立。這項安全連線可促進兩個雲端環境之間的私人通訊。不過,如要在 AWS 和 Cloud de Confiance by S3NS的資源之間啟用無縫轉送和通訊,則會採用邊界閘道協定 (BGP)。
在 Cloud de Confiance by S3NS 環境中,必須使用自訂路徑通告。 這個自訂路徑會向 AWS 網路宣傳 Private Service Connect Google API IP 位址。AWS 宣傳這個 IP 位址後,就能建立前往 Google API 的直接路徑,避開公開網際網路並提升效能。
在參考架構中,Sagemaker 執行個體會與建立 VPN 的 AWS VPC 建立關聯,然後進行部署 Cloud de Confiance by S3NS。邊界閘道通訊協定 (BGP) 用於在 AWS 和 Cloud de Confiance by S3NS 網路之間,透過高可用性 VPN 通告路徑。因此,Cloud de Confiance by S3NS 和 AWS 可以透過 VPN 轉送雙向流量。如要進一步瞭解如何設定高可用性 VPN 連線,請參閱「在 Google Cloud 與 AWS 之間建立高可用性 VPN 連線 Cloud de Confiance by S3NS 」。
設定 Route 53 更新
在 AWS Route 53 中建立名為 p.googleapis.com 的私人代管區域,並新增完整網域名稱 REGION-aiplatform-restricted.p.googleapis.com,其中 IP 位址 10.10.10.3 (Private Service Connect Googleapis IP) 為 DNS A 記錄。當 Jupyter Notebook SDK 對 Agent Platform API 執行 DNS 查詢以連線至 Gemini 時,Route 53 會傳回 Private Service Connect Google API 的 IP 位址。Jupyter Notebook 會使用從 Route 53 取得的 IP 位址,建立與 Private Service Connect Google API 端點的連線,並透過高可用性 VPN 路由至 Cloud de Confiance by S3NS。
設定 SageMaker 更新
這項參考架構使用 Amazon SageMaker Notebook 執行個體存取 Agent Platform API。不過,您可以使用支援 VPC 的其他運算服務 (例如 Amazon EC2 或 AWS Lambda) 達成相同設定。
如要驗證要求,您可以使用 Cloud de Confiance by S3NS 服務帳戶金鑰,也可以使用 Workload Identity 聯盟。如要瞭解如何設定 Workload Identity Federation,請參閱「地端部署或其他雲端服務供應商」。
Jupyter Notebook 執行個體會對自訂 Private Service Connect Google API 完整網域名稱 REGION-aiplatform-restricted.p.googleapis.com 執行 DNS 解析,藉此叫用Cloud de Confiance by S3NS 中代管的 Gemini 模型 API 呼叫,並覆寫預設完整網域名稱 (REGION-aiplatform.googleapis.com)。
您可以使用 Rest、gRPC 或 SDK 呼叫 Agent Platform API。 如要使用 Private Service Connect 客戶完整網域名稱,請在 Jupyter Notebook 中更新 API_ENDPOINT,加入下列內容:
如何使用 Agent Platform SDK for Python
安裝 SDK:
pip install --upgrade google-genai匯入依附元件:
from google.cloud import genai from google.genai.types import ( GenerateContentConfig, HarmBlockThreshold, HarmCategory, Part, SafetySetting )初始化下列環境變數:
PROJECT_ID="ph-fm-svc-projects" # Google Cloud Project ID LOCATION_ID="us-central1" # Enter Agent Platform Gemini region such as us-central1 API_ENDPOINT="https://us-central1-aiplatform-restricted.p.googleapis.com" # PSC Endpoint MODEL_ID="gemini-2.0-flash-001" # Gemini Model ID初始化 Agent Platform SDK for Python:
from google import genai client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT})向 Gemini Enterprise Agent Platform Gemini API 發出下列要求:
prompt = "which weighs more, 1kg feathers or 1kg stones" safety_settings = [ SafetySetting( category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), ] response = client.models.generate_content( model=MODEL_ID, contents=prompt, config=GenerateContentConfig( safety_settings=safety_settings, ), ) # Response will be `None` if it is blocked. print(response.text)此時,您可以從 Jupyter 筆記本對 Gemini 執行 API 呼叫,存取 Cloud de Confiance by S3NS中託管的 Gemini。如果呼叫成功,輸出內容會與以下類似:
They weigh the same. Both weigh 1 kilogram.
如何使用 Gemini Enterprise Agent Platform REST API
在本節中,您將設定一些重要變數,這些變數會在整個過程中用到。這些變數會儲存專案、資源位置、特定 Gemini 模型和要使用的 PSC 端點相關資訊。在 JupyterLab 筆記本中開啟終端機視窗,然後執行下列指令:
在 Jupyter 筆記本中開啟終端機視窗。
初始化下列環境變數:
export PROJECT_ID="ph-fm-svc-projects" export LOCATION_ID="us-central1" export API_ENDPOINT="us-central1-aiplatform-restricted.p.googleapis.com" export MODEL_ID="gemini-1.5-flash-002"使用
vim或nano等文字編輯器,建立名為request.json的新檔案,其中包含 Gemini Enterprise Agent Platform Gemini API 的格式化要求,如下所示:{ "contents": [ { "role": "user", "parts": [ { "text": "which weighs more, 1kg feathers or 1kg stones" } ] } ], "generationConfig": { "temperature": 1, "maxOutputTokens": 8192, "topP": 0.95, "seed": 0 }, "safetySettings": [ { "category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "OFF" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "OFF" }, { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "OFF" }, { "category": "HARM_CATEGORY_HARASSMENT", "threshold": "OFF" } ] }對 Gemini Enterprise Agent Platform Gemini API 提出下列 curl 要求:
curl -v \ -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://$API_ENDPOINT/v1/projects/$PROJECT_ID/locations/$LOCATION_ID/publishers/google/models/$MODEL_ID:streamGenerateContent" -d '@request.json'
在模擬測試模式下驗證 perimeter
在本參考架構中,service perimeter 會以模擬測試模式設定,讓您測試存取權政策的效果,而不強制執行。也就是說,您可以在不中斷正常流量的情況下,查看啟用政策後對環境的影響。
在模擬測試模式中驗證周邊後,請切換至強制執行模式。
後續步驟
- 瞭解如何使用
p.googleapis.comDNS 名稱。 - 如要瞭解如何在模擬測試模式中驗證服務範圍,請觀看 VPC Service Controls 模擬測試記錄影片。
- 瞭解如何使用 Gemini Enterprise Agent Platform REST API。
- 進一步瞭解如何使用 Agent Platform SDK for Python。