VPC Service Controls 可協助您降低 Vertex AI 資料遭竊的風險。使用 VPC Service Controls 建立服務範圍,保護您指定的資源和資料。舉例來說,當您使用 VPC Service Controls 保護 Vertex AI 時,下列構件無法離開服務範圍:
- AutoML 模型或自訂模型的訓練資料
- 您建立的模型
- 使用類神經架構搜尋找到的模型
- 線上推論要求
- 批次推論要求的結果
- Gemini 模型
控管 Google API 的存取權
如「從內部部署和多雲環境存取 Vertex AI」一文所述,Vertex AI API 包含一系列存取選項,包括公用網際網路、Google API 的 Private Service Connect,以及私人 Google 存取權。
公開存取權
根據預設,這些公開 API 可從網際網路連線,但必須具備 IAM 權限才能使用。雖然 Google API 適用的 Private Service Connect 和 Private Google Access 等功能可透過混合式網路架構進行私密通訊,但無法完全禁止透過公用網際網路存取 Vertex AI API。
如要精細控管 API 存取權,並明確限制公開網際網路曝光,就必須實作 VPC Service Controls。建立 VPC Service Controls (VPC-SC) 服務範圍,並將 Vertex AI API 納入受保護的服務後,系統會自動封鎖所有對 Vertex AI 執行個體的公開網際網路存取權。因此,除非使用者已加入允許清單,否則嘗試以程式輔助方式或使用 Google Google Cloud 控制台存取 Vertex AI 服務時,系統會拒絕存取要求。
如要還原 perimeter 外部授權來源的存取權 (例如公司辦公室中的使用者),請參閱「允許從 VPC Service Controls perimeter 外部存取受保護資源的公開端點」一文,瞭解部署操作說明。
私人存取權
如要將公開 Google API 限制為私人存取,機構可以搭配使用 VPC Service Controls 與 Google API 的 Private Service Connect (VPC Service Controls 套裝組合) 或 Private Google Access。在混合式網路中部署時,這兩種選項都能讓您從內部部署環境私下存取 Google API。 Google Cloud不過,Google API 適用的 Private Service Connect 也提供彈性,可定義自訂 IP 位址和 DNS 端點名稱。
最佳做法是搭配使用受限制虛擬 IP (VIP) 和 Google API 的 Private Service Connect 或 Private Google Access,為 Google Cloud 服務的要求提供私人網路路由,而不將要求公開至網際網路。受限制 VIP 支援 VPC Service Controls 可保護的所有 API,這些 API 需要考量內部部署和虛擬私有雲網路。下面是部分範例:
透過私人服務存取權控管 API 存取權
透過私人服務存取權部署的下列 Vertex AI API,在受 VPC Service Controls 保護的環境中實作時,需要額外的網路設定:
- Vector Search (索引查詢)
- 自訂訓練 (資料層)
- Vertex AI Pipelines
- 私人的線上預測端點
舉例來說,Vertex AI Pipelines 是 Google 代管 (生產者) 服務,部署在單一租戶專案和虛擬私有雲網路中,可根據消費者需求擴充支援的服務。供應商和消費者網路之間的通訊是透過虛擬私有雲網路對等互連建立,但網際網路輸出除外,這類輸出會透過供應商網路轉送。
生產端網路中存在預設路徑,可允許網際網路輸出,並無限制地存取 Google API。如要更新供應商網路以支援受限制 VIP,必須為對等互連啟用 VPC Service Controls,這項操作會在服務網路供應商網路中部署的所有支援服務上執行下列動作:
- 移除 IPv4 預設路徑 (目的地
0.0.0.0/0,下一個躍點為預設網際網路閘道)。 - 建立 Cloud DNS 代管不公開區域,並授權服務供應商虛擬私有雲網路使用這些區域。這些區域包括
googleapis.com、pkg.dev、gcr.io,以及與 VPC Service Controls 相容的 Google API 和服務所需的其他網域或主機名稱。 - 區域中的記錄資料會將所有主機名稱解析為
199.36.153.4、199.36.153.5、199.36.153.6和199.36.153.7。
如要從生產者網路移除預設路徑,但又不影響現有的 Google 管理服務,可以改用「採用 Cloud Interconnect 的高可用性 VPN」,步驟如下:
- 除了高可用性 VPN 之外,還要在服務虛擬私有雲網路中部署服務,連線至消費者虛擬私有雲網路。
- 在服務虛擬私有雲網路中部署 Google 代管的服務。
- 啟用對等互連的 VPC Service Controls。
- 如果代管服務需要可從地端存取,請從 Cloud Router 將私人服務存取子網路通告為自訂路徑通告。
- 使用匯出自訂路徑選項,更新服務網路虛擬私有雲網路對等互連。
VPC Service Controls 支援生成式 AI 微調管道
下列模型的微調管道提供 VPC Service Controls 支援:
text-bison for PaLM 2BERTT5textembedding-gecko系列模型。
將 VPC Service Controls 和 Vertex AI Pipelines 搭配使用
服務範圍會封鎖 Vertex AI 存取網際網路上的第三方 API 和服務。如果您使用 Google Cloud Pipeline 元件或建立自己的自訂管道元件,以便搭配 Vertex AI Pipelines 使用,則無法從公開的 Python Package Index (PyPI) 登錄檔安裝 PyPI 依附元件。請改用下列任一方法:
使用自訂容器
根據生產軟體的最佳做法,元件作者應使用容器化的 Python 元件,並將依附元件建構到容器映像檔中,這樣在管道執行期間就不需要即時安裝。其中一種做法如下:
- 使用 Kubeflow Pipelines SDK 和其他預先安裝的套件,建構自己的容器映像檔。舉例來說,您可以使用
us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-17:latest做為映像檔的基礎層,並新增額外層,在容器建構時安裝套件。 更新元件定義程式碼,將
base_image路徑和install_kfp_package旗標設為False。這個標記會指示 KFP 編譯器不要將 pip install kfp 指令插入容器指令列,因為映像檔中已安裝 Kubeflow Pipelines SDK 套件。例如:@component( base_image='gcr.io/deeplearning-platform-release/tf-cpu.2-17', install_kfp_package=False, ) def my_component(...): ...
從 Artifact Registry 存放區安裝套件
或者,您也可以在專案中建立 Artifact Registry 存放區,將 Python 套件儲存在其中,然後按照本節所述,設定 Vertex AI 環境從該存放區安裝套件。詳情請參閱「管理 Python 套件」。
設定角色和權限
- Vertex AI 環境的服務帳戶必須具有
iam.serviceAccountUser角色。 - 如果您從專案網路中的存放區安裝自訂 PyPI 套件,且該存放區沒有公開 IP 位址:
- 將存取這個存放區的權限指派給環境的服務帳戶。
- 請確認專案中已設定這個存放區的連線。
建立存放區
- 在專案中以虛擬私有雲模式建立 Artifact Registry 存放區。
- 將必要的 Python 套件儲存在存放區中。
設定 Vertex AI 環境,以便從存放區安裝
如要從一或多個 Artifact Registry 存放區安裝自訂 PyPI 套件,請發出類似下列的 @dsl.component 呼叫:
@dsl.component(packages_to_install=["tensorflow"],
pip_index_urls=['https://us-central1-python.pkg.dev/mygcpproject1/pypi-repo1/simple', 'https://us-central1-python.pkg.dev/mygcpproject2/pypi-repo2/simple'],)
def hello_world(text: str) -> str:
import my_package
import tensorflow
return my_package.hello_world(text)
將 VPC Service Controls 與 PSC 介面搭配使用
在受 VPC Service Controls 保護的環境中實作時,下列透過私人服務連線介面部署的 Vertex AI API 需要額外的網路設定:
- 自訂訓練 (資料層)
- Vertex AI Pipelines
- 私人的線上推論端點
- Vertex AI Agent Engine
Vertex AI 生產者服務能否存取公用網際網路,取決於專案的安全設定,特別是您是否使用 VPC Service Controls:
沒有 VPC Service Controls:代管 Vertex AI 的 Google 管理型租戶會保留預設的網際網路存取權。這項輸出流量會直接從安全無虞的 Google 代管環境輸出,也就是執行生產者服務的環境。但 Vertex AI Agent Engine 例外,因為這項服務不提供網際網路輸出功能。您必須部署具有 RFC 1918 位址的 Proxy VM,才能進行網際網路輸出。
使用 VPC Service Controls:如果專案位於 VPC Service Controls (VPC-SC) 範圍內,代管 Vertex AI 的 Google 管理環境會預設封鎖網際網路存取權。這項限制是為了防止資料外洩而採取的安全措施。如要讓 Vertex AI 在這種情況下存取公開網際網路,您必須明確設定安全輸出路徑,透過 VPC 網路傳送流量。
建議方法如下:
- 在 RFC 1918 子網路中,於虛擬私有雲邊界內部署 Proxy 伺服器。
- 建立 Cloud NAT 閘道,允許 Proxy VM 存取網際網路。
- 在執行階段環境中定義 Proxy 伺服器 (IP 位址或 FQDN)。
這項工作沒有規定或偏好的網路 Proxy。您可以採用任何合適的解決方案。例如: Squid proxy、 HAProxy、 Envoy 和 TinyProxy。
建立服務範圍
如要瞭解如何建立 service perimeter,請參閱 VPC Service Controls 說明文件的「建立 service perimeter」。
在範圍中新增受限制的服務
建立服務 perimeter 時,建議您納入所有受限服務,這是安全性最佳做法。這項全面性的做法有助於盡量減少潛在安全漏洞和未經授權的存取行為。不過,貴機構可能會有特定需求,著重於保護 Vertex AI 和相關聯的 API。在這種情況下,您可以彈性選取並只納入對作業至關重要的特定 Vertex AI API。
您可以納入服務範圍的 Vertex AI API 包括:
- Vertex AI API
支援下列服務和功能:
- 批次推論
- 資料集
- Vertex AI 特徵儲存庫 (Bigtable 線上服務)
- Vertex AI 特徵儲存庫 (最佳化線上服務)
- Vertex AI 生成式 AI (Gemini)
- Vertex AI Model Registry
- 線上推論
- 開啟模型調整功能
- Vector Search (建立索引)
- Vector Search (索引查詢)
- 自訂訓練 (控制層)
- 自訂訓練 (資料層)
- Vertex AI Pipelines
- 私人的線上推論端點
- Colab Enterprise
- Vertex AI Agent Engine
- Notebooks API
支援下列服務:
- Vertex AI Workbench
限制
使用 VPC Service Controls 時,會受到下列限制:
- 如要進行資料標註,請將標註者的 IP 位址新增至存取層級。
- 對於 Google Cloud Pipeline 元件,元件會啟動容器,檢查基本映像檔是否符合所有需求。KFP 套件和
packages_to_install引數中列出的任何套件,都是容器的必要條件。如果基本映像檔 (無論是提供的還是自訂的) 中沒有任何指定需求,這個元件會嘗試從 Python Package Index (PyPI) 下載。由於服務安全防護範圍會封鎖 Vertex AI 對網際網路上第三方 API 和服務的存取權,因此下載作業會失敗並顯示Connection to pypi.org timed out。如要瞭解如何避免這個錯誤,請參閱「搭配 Vertex AI Pipelines 使用 VPC Service Controls」。 - 在 Vertex AI Workbench 中使用 VPC Service Controls 和自訂核心時,您必須改為設定 DNS 對等互連,將
*.notebooks.googleusercontent.com的要求傳送至子網路 199.36.153.8/30 (private.googleapis.com),而非 199.36.153.4/30 (restricted.googleapis.com)。 - 搭配 Vertex AI Inference 使用 VPC Service Controls 時,必須先將專案新增至服務範圍,才能建立端點。如果在不屬於服務範圍的專案中建立端點,然後將該專案新增至服務範圍,嘗試將模型部署至該端點就會失敗。如果端點是共用公開端點,傳送要求至該端點也會失敗。同樣地,如果端點是在屬於服務安全防護範圍的專案中建立,之後專案遭到移除,嘗試將模型部署至端點也會失敗。
- 搭配 Vertex AI Agent Engine 使用 VPC Service Controls 時,專案必須先加入服務範圍,才能部署代理程式。如果專案加入安全範圍前就已部署代理程式,VPC Service Controls 將無法保護代理程式,代理程式仍可存取公用網際網路。
- 在 VPC-SC 環境中,不支援透過模型花園 1 鍵部署公開 (專屬端點)。請改用支援 VPC Service Controls 的私人端點。詳情請參閱「將模型部署至私人端點」。
後續步驟
- 觀看「VPC Service Controls:如何在 Shared VPC 區隔雲端專案」影片。
- 觀看「如何在 VPC Service Controls 使用模擬測試模式」影片。
- 觀看「VPC Service Controls:透過私人 IP 支援,建立精細的存取控管機制」影片。
- 進一步瞭解 VPC Service Controls。
- 進一步瞭解 VPC Service Controls 的必要角色。
- 瞭解如何排解 VPC Service Controls 問題。
- 瞭解如何部署 Proxy VM,從客戶的虛擬私有雲存取網際網路。