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

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

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

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Compute Engine API.

    Enable the API

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    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 映射文件,请将 compute firewall-rules migrate 命令--export-tag-mapping 标志结合使用。

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:要分配给标记键的值。

例如,如果您的 VPC 防火墙规则具有名为 sql-server 的网络标记,请创建相应的安全标记键值对 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 角色的主账号,请将 compute firewall-rules migrate 命令--bind-tags-to-instances 标志结合使用:

    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:您的虚拟机的名称。

迁移后的任务

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

后续步骤