本页面介绍如何创建服务边界。
准备工作
了解如何配置服务边界。
了解如何管理服务边界中的 VPC 网络。
如果要在创建边界时配置对受保护服务的外部访问权限,请在创建边界之前创建一个或多个访问权限级别。
创建服务边界
本部分介绍如何创建服务边界、将项目或 VPC 网络添加到边界以及保护服务。
创建服务边界时,您可以选择允许从边界外访问受保护的服务,并为边界内的其他服务和用户指定可以访问的服务。如果您愿意,也可以在创建边界后配置这些设置。
创建服务边界或更新现有服务边界后,更改最多可能需要 30 分钟才能传播完毕并生效。在此期间,边界可能会阻止请求,并显示以下错误消息:Error 403: Request is prohibited by organization's policy.
控制台
在 Google Cloud 控制台导航菜单中,点击安全性,然后点击 VPC Service Controls。
如果出现提示,请选择您的组织、文件夹或项目。
选择现有访问权限政策或创建新访问权限政策。 确保访问权限政策范围包含您要添加到边界的所有项目和 VPC 网络。
在 VPC Service Controls 页面上,选择一种边界模式。默认情况下选中的是强制模式。如果要创建试运行边界,请点击试运行模式。
强制实施边界会主动阻止对受保护服务的访问。试运行边界会记录对边界的违规,虽然看起来服务像是受到保护,但实际上并不会阻止对这些服务的访问。如需详细了解强制模式和试运行模式,请参阅服务边界。
点击新建边界。
在新建 VPC 服务边界页面的边界名称框中,为边界输入一个名称。
边界名称的最大长度为 50 个字符,必须以字母开头,并且只能包含 ASCII 拉丁字母(a-z、A-Z)、数字 (0-9) 或下划线 (
_
)。边界名称区分大小写,并且在访问政策中必须是唯一的。如需添加您要在边界内保护的项目或 VPC 网络,请执行以下操作:
点击添加资源。
如需向边界添加项目,请在添加资源窗格中,点击添加项目。
如需选择项目,请在添加项目对话框中选中相应项目的复选框。
点击添加所选资源。添加的项目会显示在项目部分中。
如需将 VPC 网络添加到边界,请在添加资源窗格中,点击添加 VPC 网络。
- 在项目列表中,点击包含 VPC 网络的项目。
- 如需添加 VPC 网络,请在添加资源对话框中,选中相应 VPC 网络的复选框。
- 点击添加所选资源。添加的网络会显示在 VPC 网络部分中。
如需选择您想要在边界内保护的服务,请执行以下操作:
点击受限的服务。
在受限的服务窗格中,点击添加服务。
要保护边界内的服务,请在指定要限制的服务对话框中,选中服务对应的复选框。
点击添加 n 个服务 (Add n Services),其中 n 是您在上一步中选中的服务数量。
可选:如果要定义在边界内可访问的服务,请执行以下操作:
点击 VPC 可访问服务。
在 VPC 可访问服务窗格中,选择选定的服务。
要快速将边界保护的所有受限服务包括在可访问服务列表中,请选择包括所有受限的服务。除受限的服务之外,此选项还允许您添加独立的服务。
点击添加 VPC 可访问服务。
您还可以在创建边界后添加可访问的服务。
在指定可访问的服务页面中,选择要设为在边界内可访问的服务。
点击添加 n 个服务 (Add n Services),其中 n 是您在上一步中选中的服务数量。
可选:如需使用访问权限级别从边界外访问受保护的资源,请执行以下操作:
点击访问权限级别。
在“入站流量政策:访问权限级别”窗格中,点击选择访问权限级别框。
您也可以在创建边界后添加访问权限级别。
选择与要应用于边界的访问权限级别对应的复选框。
如需允许从边界外的 API 客户端访问边界内的资源,请执行以下操作:
点击入站流量政策。
在入站流量规则窗格中,点击添加规则。
在 API 客户端的“来自于”属性中指定需要访问权限的边界外来源。您可以将项目、访问权限级别和 VPC 网络指定为来源。
在 Google Cloud 资源/服务的属性中指定来源可以访问的边界内的资源。
如需查看入站规则特性的列表,请参阅入站规则参考。
如需允许涉及边界内的 API 客户端或资源访问边界外的资源,请执行以下操作:
点击出站流量政策。
在出站流量规则窗格中,点击添加规则。
指定所需的 API 客户端的“来自于”特性和 Google Cloud 资源/服务的“至”特性。
如需查看出站规则特性的列表,请参阅出站规则参考。
点击创建边界。
gcloud
如需在强制模式下创建新边界,请使用 gcloud access-context-manager perimeters create
命令。
gcloud access-context-manager perimeters create NAME \ --title=TITLE \ --resources=RESOURCES \ --restricted-services=RESTRICTED-SERVICES \ --ingress-policies=INGRESS-FILENAME.yaml \ --egress-policies=EGRESS-FILENAME.yaml \ [--access-levels=LEVELS] \ [--enable-vpc-accessible-services] \ [--vpc-allowed-services=ACCESSIBLE-SERVICES] \ --policy=POLICY_NAME
如需在试运行模式下创建新边界,请使用 gcloud access-context-manager perimeters dry-run create
命令。
gcloud access-context-manager perimeters dry-run create NAME \ --perimeter-title=TITLE \ --perimeter-type=TYPE \ --perimeter-resources=RESOURCES \ --perimeter-restricted-services=RESTRICTED-SERVICES \ --perimeter-ingress-policies=INGRESS-FILENAME.yaml \ --perimeter-egress-policies=EGRESS-FILENAME.yaml \ [--perimeter-access-levels=LEVELS] \ [--perimeter-enable-vpc-accessible-services] \ [--perimeter-vpc-allowed-services=ACCESSIBLE-SERVICES] \ --policy=POLICY_NAME
替换以下内容:
NAME 是边界的名称。
边界名称的最大长度为 50 个字符,必须以字母开头,并且只能包含 ASCII 拉丁字母(a-z、A-Z)、数字 (0-9) 或下划线 (
_
)。边界名称区分大小写,并且在访问政策中必须是唯一的。TITLE 是直观易懂的边界标题。
TYPE 是边界的类型。例如,“常规”边界或“网桥”边界。
RESOURCES 是一个或多个项目编号或 VPC 网络名称的列表(以英文逗号分隔)。例如
projects/12345
或//compute.googleapis.com/projects/my-project/global/networks/vpc1
。 仅允许选择项目和 VPC 网络。项目格式:projects/project_number
。VPC 格式://compute.googleapis.com/projects/project-id/global/networks/network_name
。 如果您指定项目,则仅支持项目编号。 不能使用项目名称或项目 ID。RESTRICTED-SERVICES 是一个或多个服务的列表(以英文逗号分隔)。例如
storage.googleapis.com
或storage.googleapis.com,bigquery.googleapis.com
。INGRESS-FILENAME 是一个 JSON 或 YAML 文件,其中包含来源、身份、项目和服务特性的值。如需查看入站规则特性的列表,请参阅入站规则参考。
EGRESS-FILENAME 是一个 JSON 或 YAML 文件,其中包含身份、项目和服务特性的值。如需查看出站规则特性的列表,请参阅出站规则参考。
POLICY_NAME 是您的组织的访问权限政策的数字名称。例如
330193482019
。只有在您尚未设置默认访问权限政策时,才需要包括政策名称。
其他选项:
只有在创建边界时要添加访问权限级别时,才需要
--access-levels
或--perimeter-access-levels
。LEVELS 是您要应用于服务边界的一个或多个访问权限级别的列表(以英文逗号分隔)。您也可以在创建边界后添加访问权限级别。
只有在创建边界时要添加 VPC 可访问服务时,才需要
--enable-vpc-accessible-services
和--vpc-allowed-services
或--perimeter-enable-vpc-accessible-services
和--perimeter-vpc-allowed-services
。ACCESSIBLE-SERVICES 是您要允许边界内网络访问的一个或多个服务的列表(以英文逗号分隔)。对此列表中未包含的任何服务的访问都会被阻止。只有在配置边界时对一项服务实施了保护的情况下,您才能将该服务设置为可访问。
如需快速添加受边界保护的所有服务,请在 ACCESSIBLE-SERVICES 列表中指定
RESTRICTED-SERVICES
。例如--perimeter-vpc-allowed-services=RESTRICTED-SERVICES
。您也可以在创建边界后定义 VPC 可访问服务。
例如,以下命令会创建一个名为 ProdPerimeter
的新试运行模式边界,其中包含项目 example-project
和 example-project2
,并限制 Cloud Storage API 和 BigQuery API。
gcloud access-context-manager perimeters \ dry-run create ProdPerimeter --perimeter-title="Production Perimeter" \ --perimeter-type="regular" \ --perimeter-resources=projects/12345,projects/67890 \ --perimeter-restricted-services=storage.googleapis.com,bigquery.googleapis.com \ --perimeter-ingress-policies=ingress.yaml \ --perimeter-egress-policies=egress.yaml \ --policy=330193482019
API
要创建服务边界,请调用 accessPolicies.servicePerimeters.create
。
POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/servicePerimeters
其中:
- POLICY_NAME 是您的组织的访问权限政策的数字名称。例如
330193482019
。
请求正文
请求正文必须包含用于定义服务边界的 ServicePerimeter
资源。
对于 ServicePerimeter
资源,请为 perimeterType
指定 PERIMETER_TYPE_REGULAR
。
试运行模式
要创建的边界必须添加为 spec
,并且将 useExplicitDryRunSpec
设为 true。
响应正文
如果成功,调用的响应正文将包含一个 Operation
资源,用于提供与 POST
操作相关的详细信息。
后续步骤
- 了解如何使用试运行模式测试服务边界的影响。
- 了解如何管理现有服务边界。
- 了解如何排查常见的 VPC Service Controls 问题。
- 完成此 Codelab,了解如何使用 VPC Service Controls 保护项目及其服务。