迁移使用网络标记和服务账号的 VPC 防火墙规则

您的 Virtual Private Cloud (VPC) 防火墙规则可以包含网络标记和来源服务账号。执行以下任务,将包含网络标记和来源服务账号的 VPC 防火墙规则迁移到全球网络防火墙政策:

  1. 评估您的环境
  2. 列出现有网络标记和服务账号
  3. 为每个网络标记和来源服务账号创建标记
  4. 将网络标记和服务账号映射到您创建的标记
  5. 将标记绑定到虚拟机 (VM) 实例
  6. 将 VPC 防火墙规则迁移到全球网络防火墙政策
  7. 查看新的网络防火墙政策
  8. 完成迁移后任务

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 启用 Compute Engine API。

    启用 API

  5. 安装 Google Cloud CLI。
  6. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  7. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  8. 确保您的 Google Cloud 项目已启用结算功能

  9. 启用 Compute Engine API。

    启用 API

  10. 安装 Google Cloud CLI。
  11. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  12. 确保您具有 Compute Security Admin 角色 (roles/compute.securityAdmin)。

评估您的环境

在将 VPC 防火墙规则迁移到全球网络防火墙政策之前,请评估现有环境和 Identity and Access Management (IAM) 角色和权限:

  1. 确定您的 VPC 网络中的 VPC 防火墙规则的数量。
  2. 记下与每条 VPC 防火墙规则关联的优先级。
  3. 确保您拥有创建、关联、修改和查看全球网络防火墙政策所需的 IAM 角色和权限。
  4. 确保您拥有创建、更新和删除安全标记定义所需的 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 文件,将新创建的安全标记绑定到现有网络标记所附加到的虚拟机:

  1. 作为具有 Tag Administrator 角色的主账号,请执行以下操作:

    1. 查看将安全标记附加到 Google Cloud 资源所需的权限
    2. 将 Tag User 角色分配给使用安全标记的主账号并将标记绑定到虚拟机。
  2. 作为具有 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:您的虚拟机的名称。

迁移后的任务

如需激活和使用新的全球网络防火墙政策,请完成迁移后任务。如需了解详情,请参阅迁移后任务

后续步骤