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 可从互联网上访问;不过,使用这些 API 需要拥有 IAM 权限。虽然 Private Service Connect 和专用 Google 访问通道等功能可通过混合网络架构实现专用通信,但它们并不能消除 Vertex AI API 的公共互联网可访问性。
为了对 API 访问进行精细控制并明确限制公开互联网暴露,实现 VPC Service Controls 变得至关重要。借助此安全层,管理员可以定义和强制执行访问权限政策,有选择地启用对 Google API 的公开或专用连接,以满足组织要求。
私人访问
如果组织需要将公开 Google API 的访问权限限制为专用访问,则可以将 VPC Service Controls 与 Private Service Connect Google API(VPC Service Controls 捆绑包)或专用 Google 访问通道结合使用。通过混合网络部署并在 Google Cloud中部署时,这两种方式都可以从本地私下访问 Google API。不过,Private Service Connect 还可让您灵活地定义自定义 IP 地址和 DNS 端点名称。
最佳做法是将受限虚拟 IP (VIP) 与 Private Service Connect Google API 或专用 Google 访问通道搭配使用,以便为向 Google Cloud 服务发出的请求提供专用网络路由,而无需将请求公开给互联网。受限 VIP 支持 VPC Service Controls 可以保护的所有需要考虑内部部署和 VPC 网络的 API。以下是一些示例:
通过专用服务访问通道控制 API 访问权限
在受 VPC Service Controls 保护的环境中实现时,以下通过专用服务访问通道部署的 Vertex AI API 需要进行额外的网络配置:
- Vector Search(索引查询)
- 自定义训练(数据平面)
- Vertex AI Pipelines
- 专用在线预测端点
例如,Vertex AI Pipelines 是一种 Google 托管式(提供方)服务,部署在单租户项目和 VPC 网络中,能够根据使用方要求扩缩支持的服务。通过 VPC 网络对等互连建立了提供方网络和使用方网络之间的通信,但互联网出口除外,互联网出口通过提供方网络进行路由。
在提供方网络中,除了可不受限制地访问 Google API 之外,还存在允许互联网出站的默认路由。若要更新提供方网络以支持受限 VIP,您需要为对等互连启用 VPC Service Controls,这会对服务网络提供方网络中部署的所有受支持的服务执行以下操作:
- 移除 IPv4 默认路由(目的地
0.0.0.0/0
,下一个跃点默认互联网网关)。 - 创建 Cloud DNS 托管式专用区域,并针对服务提供方 VPC 网络为这些区域授权。这些区域包括
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,其中包含以下步骤:
- 将服务 VPC 网络以及 HA VPN 部署到使用方 VPC 网络。
- 在服务 VPC 网络中部署 Google 托管式服务。
- 为对等互连启用 VPC Service Controls。
- 如果托管式服务需要在本地可访问,请将专用服务访问通道子网作为 Cloud Router 的自定义路由通告进行通告。
- 使用导出自定义路由选项更新 Service Networking VPC 网络对等互连。
服务边界创建
如需了解创建服务边界的概览,请参阅 VPC Service Controls 文档中的创建服务边界。
将受限服务添加到边界
在建立服务边界时,我们建议您根据安全最佳实践添加所有受限服务。这种全面的方法有助于最大限度地减少潜在漏洞和未经授权的访问。不过,在某些情况下,您的组织可能有特定的要求,侧重于保护 Vertex AI 及其相互关联的 API。在这种情况下,您可以灵活地选择并仅包含对您的操作至关重要的特定 Vertex AI API。
您可以将以下 Vertex AI API 纳入服务边界:
- Vertex AI API 支持以下服务和功能:
- 批量预测
- 数据集
- Vertex AI Feature Store(Bigtable 在线传送)
- Vertex AI Feature Store(优化在线传送)
- Vertex AI 上的生成式 AI (Gemini)
- Vertex AI Model Registry
- 在线预测
- Vector Search(索引创建)
- Vector Search(索引查询)
- 自定义训练(控制平面)
- 自定义训练(数据平面)
- Vertex AI Pipelines
- 专用在线预测端点
- Colab Enterprise
- Notebooks API 支持以下服务:
- Vertex AI Workbench
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 流水线组件或创建自己的自定义流水线组件以便与 Vertex AI Pipelines 搭配使用,则无法从公共 Python 软件包索引 (PyPI) 注册表安装 PyPI 依赖项。您必须改为执行以下操作之一:
使用自定义容器
作为生产软件最佳实践,组件作者应使用容器化的 Python 组件,并将依赖项构建到其容器映像中,以便在流水线运行期间无需进行实时安装。Kubeflow Pipelines SDK 提供了一种将 Python 代码容器化的方案。如需了解详情,请参阅容器化的 Python 组件。
从 Artifact Registry 代码库安装软件包
或者,您也可以在项目中创建 Artifact Registry 制品库,在其中存储 Python 软件包,并按照本部分所述将 Vertex AI 环境配置为从该制品库安装软件包。如需了解详情,请参阅管理 Python 软件包。
配置角色和权限
Vertex AI 环境的服务账号必须具有
iam.serviceAccountUser
角色。如果您从项目网络中的存储库安装自定义 PyPI 软件包,并且此存储库没有公共 IP 地址:
向环境的服务账号分配访问此代码库的权限。
请确保已在项目中配置与此代码库的连接。
创建代码库
- 在项目中使用 VPC 模式创建 Artifact Registry 代码库。
- 将所需的 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)
限制
使用 VPC Service Controls 时,存在以下限制:
- 对于数据标签,您必须将标签添加者的 IP 地址添加到访问权限级别。
- 对于 Google Cloud 流水线组件,组件会启动检查其基础映像是否满足所有要求的容器。KFP 软件包以及
packages_to_install
参数中列出的所有软件包都是容器需要满足的要求。如果基础映像(无论是提供的映像还是自定义映像)中尚未包含任何指定要求,则该组件会尝试从 Python Package Index (PyPI) 下载这些要求。由于服务边界会阻止 Vertex AI 访问互联网上的第三方 API 和服务,因此下载失败,并显示Connection to pypi.org timed out
。如需了解如何避免此错误,请参阅将 VPC Service Controls 与 Vertex AI Pipelines 搭配使用。 - 在 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
)。
后续步骤
- 观看 VPC Service Controls:如何在共享 VPC 中对云项目进行细分视频。
- 观看如何在 VPC Service Controls 中使用试运行模式视频。
- 观看 VPC Service Controls:支持使用专用 IP 创建精细访问权限控制视频。
- 详细了解 VPC Service Controls。
- 详细了解 VPC Service Controls 所需角色。
- 了解如何排查 VPC Service Controls 问题。