搭配 Vertex AI 使用 VPC Service Controls

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 和私人 Google 存取權等功能,可透過混合式網路架構促進私密通訊,但無法完全避免 Vertex AI API 透過公用網際網路存取。

如要精細控管 API 存取權,並明確限制公開網際網路曝光,就必須實作 VPC Service Controls。建立 VPC Service Controls (VPC-SC) 範圍,並將 Vertex AI API 納入受保護的服務後,系統會自動封鎖所有對 Vertex AI 執行個體的公開網際網路存取權。因此,除非使用者已加入允許清單,否則嘗試以程式輔助方式或使用 Google Google Cloud 控制台存取 Vertex AI 服務時,系統會拒絕存取要求。

如要還原範圍外授權來源的存取權 (例如公司辦公室的使用者),請參閱「允許從 VPC Service Controls 範圍外存取受保護資源的公開端點」一文,瞭解部署操作說明。

私人存取權

如要將公開 Google API 限制為私人存取,機構可以搭配使用 VPC Service Controls 和 Google API 適用的 Private Service Connect (VPC Service Controls 套裝組合) 或私人 Google 存取權。在混合式網路和 Google Cloud中部署時,這兩種選項都能從內部部署環境私下存取 Google API。不過,Google API 適用的 Private Service Connect 也提供彈性,可定義自訂 IP 位址和 DNS 端點名稱。

最佳做法是搭配私人服務連線使用受限制的虛擬 IP (VIP),以便透過 Google API 或私人 Google 存取權,為服務要求提供私人網路路徑,同時避免要求暴露在網路上。 Google Cloud 受限 VIP 支援 VPC Service Controls 可保護的所有 API,但需要考量地端和 VPC 網路。下面是部分範例:

透過私人服務存取權控管 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.compkg.devgcr.io,以及與 VPC Service Controls 相容的 Google API 和服務所需的其他網域或主機名稱。
  • 區域中的記錄資料會將所有主機名稱解析為 199.36.153.4199.36.153.5199.36.153.6199.36.153.7

如要從生產者網路移除預設路徑,但又不影響現有的 Google 管理服務,可以改用「採用 Cloud Interconnect 的高可用性 VPN」,步驟如下:

  1. 除了高可用性 VPN 之外,還要在服務虛擬私有雲網路中部署服務,並連線至消費者虛擬私有雲網路。
  2. 在服務虛擬私有雲網路中部署 Google 代管的服務。
  3. 啟用對等互連的 VPC Service Controls
  4. 如果代管服務需要可從地端存取,請從 Cloud Router 將私人服務存取子網路通告為自訂路徑通告
  5. 使用匯出自訂路徑選項,更新服務網路虛擬私有雲網路對等互連。

VPC Service Controls 支援生成式 AI 微調管道

下列模型的微調管道提供 VPC Service Controls 支援:

  • text-bison for PaLM 2
  • BERT
  • T5
  • textembedding-gecko 系列模型。

將 VPC Service Controls 與 Vertex AI Pipelines 搭配使用

服務範圍會封鎖 Vertex AI 存取網際網路上第三方 API 和服務的權限。如果您使用 Google Cloud Pipeline 元件或建立自己的自訂管道元件,以便搭配 Vertex AI Pipelines 使用,則無法從公開的 Python Package Index (PyPI) 登錄檔安裝 PyPI 依附元件。請改用下列任一方法:

使用自訂容器

根據生產軟體的最佳做法,元件作者應使用容器化 Python 元件,並將依附元件建構到容器映像檔中,這樣在管道執行期間就不需要即時安裝。其中一種做法如下:

  1. 使用 Kubeflow Pipelines SDK 和其他預先安裝的套件,建構自己的容器映像檔。舉例來說,您可以使用 us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-17:latest 做為映像檔的基礎層,並新增額外層,在建構容器時安裝套件。
  2. 更新元件定義程式碼,將 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 套件」。

設定角色和權限

  1. Vertex AI 環境的服務帳戶必須具有 iam.serviceAccountUser 角色。
  2. 如果您從專案網路中的存放區安裝自訂 PyPI 套件,且該存放區沒有公開 IP 位址:
    1. 將存取這個存放區的權限指派給環境的服務帳戶。
    2. 請確認專案中已設定這個存放區的連線。

建立存放區

  1. 在專案中以虛擬私有雲模式建立 Artifact Registry 存放區
  2. 將必要的 Python 套件儲存在存放區中。

設定 Vertex AI 環境,以便從存放區安裝

如要從一或多個 Artifact Registry 存放區安裝自訂 PyPI 套件,請對 @dsl.component 進行類似下列的呼叫:

@dsl.component(packages_to_install=["tensorflow"],
pip_index_urls=['http://myprivaterepo.com/simple', 'http://pypi.org/simple'],)
def hello_world(text: str) -> str:
    import my_package
    import tensorflow

    return my_package.hello_world(text)

透過 PSC 介面使用 VPC Service Controls

透過私人服務連線介面部署的下列 Vertex AI API,在受 VPC Service Controls 保護的環境中實作時,需要額外的網路設定:

  • 自訂訓練 (資料層)
  • 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 網路傳送流量。

建議方法包括:

  1. 在 RFC 1918 子網路中,於虛擬私有雲邊界內部署 Proxy 伺服器。
  2. 建立 Cloud NAT 閘道,允許 Proxy VM 存取網際網路。
  3. 在執行階段環境中定義 Proxy 伺服器 (IP 位址或 FQDN)。

這項工作沒有規定或偏好的網路 Proxy。您可以採用任何合適的解決方案。例如: Squid proxyHAProxyEnvoyTinyProxy

建立服務範圍

如要瞭解如何建立服務範圍,請參閱 VPC Service Controls 說明文件中的「建立服務範圍」。

在範圍中新增受限制的服務

建立服務安全防護範圍時,建議您納入所有受限服務,這是安全方面的最佳做法。這項全面做法有助於盡量減少潛在安全漏洞和未經授權的存取行為。不過,貴機構可能會有特定需求,著重於保護 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 就無法保護代理程式,代理程式也會繼續存取公用網際網路。

後續步驟