您的 Virtual Private Cloud (VPC) 防火墙规则可以包含网络标记和来源服务账号。执行以下任务,将包含网络标记和来源服务账号的 VPC 防火墙规则迁移到全球网络防火墙政策:
- 评估您的环境。
- 列出现有网络标记和服务账号。
- 为每个网络标记和来源服务账号创建标记。
- 将网络标记和服务账号映射到您创建的标记。
- 将标记绑定到虚拟机 (VM) 实例。
- 将 VPC 防火墙规则迁移到全球网络防火墙政策。
- 查看新的网络防火墙政策。
- 完成迁移后任务。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
启用 Compute Engine API。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
启用 Compute Engine API。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
- 确保您具有 Compute Security Admin 角色 (
roles/compute.securityAdmin
)。
评估您的环境
在将 VPC 防火墙规则迁移到全球网络防火墙政策之前,请评估现有环境和 Identity and Access Management (IAM) 角色和权限:
- 确定您的 VPC 网络中的 VPC 防火墙规则的数量。
- 记下与每条 VPC 防火墙规则关联的优先级。
- 确保您拥有创建、关联、修改和查看全球网络防火墙政策所需的 IAM 角色和权限。
确保您拥有创建、更新和删除安全标记定义所需的 IAM 角色和权限。
下表汇总了创建和管理标记所需的各种角色:
角色名称 执行的任务 Tag Administrator 角色 ( roles/resourcemanager.tagAdmin
)创建、更新和删除标记定义。如需了解详情,请参阅管理标记。 Tag Viewer 角色 ( roles/resourcemanager.tagViewer
)查看标记定义和附加到资源的标记。 Tag User 角色 ( roles/resourcemanager.tagUser
)添加和移除关联到资源的标记。
列出现有网络标记和服务账号
确定您的 VPC 防火墙规则是否使用任何网络标记或服务账号,并创建一个 JSON 文件来保存现有网络标记和服务账号的详细信息。
如需将网络中的网络标记和服务账号导出到映射 JSON 文件,请使用带有 --export-tag-mapping
标志的 compute firewall-rules migrate
命令。
gcloud beta compute firewall-rules migrate \ --source-network=NETWORK_NAME \ --export-tag-mapping \ --tag-mapping-file=TAG_MAPPING_FILE
替换以下内容:
NETWORK_NAME
:包含要迁移的 VPC 防火墙规则的 VPC 网络的名称。TAG_MAPPING_FILE
:映射 JSON 文件的名称。
如果您的 VPC 防火墙规则仅包含服务账号,则生成的 JSON 文件将仅包含服务账号。同样,如果您的 VPC 防火墙规则仅包含网络标记,则生成的 JSON 文件将仅包含网络标记。服务账号的前缀为 sa
,而网络标记没有任何前缀。
例如,以下生成的 JSON 文件包含网络标记 sql-server
和服务账号 example@example.com
。
{"network-tag-1": null, "sa:service@account1.com": null}
创建标记
根据映射文件中列出的网络标记和来源服务账号,您必须在网络中创建相应的安全标记。
新的安全标记可替代网络标记和服务账号,并在迁移后保留原始的网络配置。
作为具有 Tag Administrator 角色的主账号,请为每个网络标记和服务账号创建相应的安全标记键值对。
gcloud resource-manager tags keys create TAG_KEY \ --parent organizations/ORGANIZATION_ID \ --purpose GCE_FIREWALL \ --purpose-data network=PROJECT_ID/NETWORK_NAME gcloud resource-manager tags values create TAG_VALUE \ --parent ORGANIZATION_ID/TAG_KEY
替换以下内容:
TAG_KEY
:标记键的名称。ORGANIZATION_ID
:您的组织的 ID。PROJECT_ID
:您的项目的 ID。NETWORK_NAME
:您的 VPC 网络的名称。TAG_VALUE
:要分配给标记键的值。
例如,如果您有一个名为 sql-server
的网络标记的 VPC 防火墙规则,请创建相应的安全标记键值对 sql-server:production
。
gcloud resource-manager tags keys create sql-server \ --parent organizations/123456 \ --purpose GCE_FIREWALL \ --purpose-data network=test-project/test-network gcloud resource-manager tags values create production \ --parent 123456/sql-server
将网络标记和服务账号映射到标记
为 VPC 防火墙规则使用的每个网络标记和服务账号创建 IAM 治理的安全标记后,您必须将标记映射到 JSON 映射文件中相应的网络标记和服务账号。
修改 JSON 文件,将网络标记和服务账号映射到相应的安全标记。
{"sql-server": "tagValues/yyyyy", "sa:example@example.com": "tagValues/zzzzz"}
例如,以下 JSON 文件将网络标记 sql-server
映射到键 sql-server
的标记值,并将服务账号 example@example.com
映射到键 example@example.com
的标记值:
{"sql-server": "tagValues/production", "sa:example@example.com": "tagValues/example"}
将标记绑定到虚拟机
根据标记映射 JSON 文件,将新创建的安全标记绑定到现有网络标记所附加到的虚拟机:
作为具有 Tag Administrator 角色的主账号,请执行以下操作:
- 查看将安全标记附加到 Google Cloud 资源所需的权限。
- 将 Tag User 角色分配给使用安全标记的主账号并将标记绑定到虚拟机。
作为具有 Tag User 角色的主账号,请使用带有
--bind-tags-to-instances
标志的compute firewall-rules migrate
命令:gcloud beta compute firewall-rules migrate \ --source-network=NETWORK_NAME \ --bind-tags-to-instances \ --tag-mapping-file=TAG_MAPPING_FILE
替换以下内容:
NETWORK_NAME
:您的 VPC 网络的名称。TAG_MAPPING_FILE
:映射 JSON 文件的名称。
将 VPC 防火墙规则迁移到全球网络防火墙政策
将 VPC 防火墙规则迁移到全球网络防火墙政策。使用 compute-firewall-rules migrate
命令。
gcloud beta compute firewall-rules migrate \ --source-network=NETWORK_NAME \ --target-firewall-policy=POLICY_NAME \ --tag-mapping-file=TAG_MAPPING_FILE
替换以下内容:
NETWORK_NAME
:包含要迁移的 VPC 防火墙规则的 VPC 网络的名称。POLICY_NAME
:要在迁移期间创建的全球网络防火墙政策的名称。
查看新的全球网络防火墙政策
在将新创建的政策关联到 VPC 网络之前,Google 建议您查看该政策,以确保迁移过程已准确完成。
请验证以下内容:
防火墙政策规则配置正确,并且为每条规则正确迁移以下规则组件:
- 相对优先级
- 流量方向
- 对匹配项执行的操作
- 日志设置
- 目标参数
- 来源参数(适用于入站规则)
- 目标参数(适用于出站规则)
- 协议和端口限制
验证安全标记是否已附加到正确的虚拟机。使用
resource-manager tags bindings list
命令。gcloud resource-manager tags bindings list \ --location=ZONE_ID \ --parent //compute.googleapis.com/projects/PROJECT_ID/zones/ZONE_ID/instances/INSTANCE_NAME \ --effective
替换以下内容:
ZONE_ID
:您的虚拟机所在的可用区。PROJECT_ID
:您的项目的 ID。INSTANCE_NAME
:您的虚拟机的名称。
迁移后的任务
如需激活和使用新的全球网络防火墙政策,请完成迁移后任务。如需了解详情,请参阅迁移后任务。
后续步骤
- 详细了解迁移 VPC 防火墙规则。
- 迁移没有任何依赖项的 VPC 防火墙规则。