了解如何创建和配置分层防火墙政策,以允许源自文件夹中的特定 Virtual Private Cloud (VPC) 网络的出站流量流向作为目的地的特定 IP 地址。防火墙政策会阻止源自您的文件夹的所有其他出站流量。本页面通过一个示例演示了如何创建两个 VPC 网络、在 VPC 网络中创建虚拟机 (VM) 实例、设置包含防火墙规则的分层防火墙政策,然后测试防火墙政策。
准备工作
- 确保您有权访问组织资源。
- 确保您具有以下 Identity and Access Management (IAM) 角色:
-
Organization Administrator 角色
(roles/resourcemanager.organizationAdmin)
-
Folder Admin 角色
(roles/resourcemanager.folderAdmin)
-
Project Creator 角色
(roles/resourcemanager.projectCreator)
-
Project Deleter 角色
(roles/resourcemanager.projectDeleter)
-
Compute Network Admin 角色 (
roles/compute.networkAdmin
) -
Compute Organization Firewall Policy Admin 角色 (
roles/compute.orgFirewallPolicyAdmin
)
-
Organization Administrator 角色
-
Enable the Compute Engine and Identity-Aware Proxy (IAP) APIs.
创建文件夹
在您的组织中创建文件夹。
在 Google Cloud 控制台中,进入管理资源页面:
点击创建文件夹。
在文件夹名称字段中,输入
test-folder
。在组织列表中,选择组织资源的名称。
在位置字段中,点击浏览,然后选择组织资源。
点击创建。
创建项目
在上一部分中创建的文件夹中创建项目。
在 Google Cloud 控制台中,进入管理资源页面:
点击 Create project。
在项目名称字段中,输入
test-project
。为项目选择结算账号。
在组织列表中,选择组织资源的名称。
在位置字段中,点击浏览,展开组织资源的名称,然后选择 test-folder。
点击创建。
创建两个具有 IPv4 子网的自定义 VPC 网络
在上一部分中创建的项目中创建两个自定义模式 VPC 网络:myvpc
具有一个仅 IPv4 的子网,test-vpc
具有两个仅 IPv4 的子网。
在 Google Cloud 控制台的项目选择器页面上,选择 test-project。
在 Google Cloud 控制台中,进入 VPC 网络页面。
点击创建 VPC 网络。
对于名称,输入
myvpc
。对于子网创建模式,选择自定义。
在新子网部分,为子网指定以下配置参数:
- 名称:输入
myvpc-subnet-1
。 - 区域:选择 us-central1。
- IPv4 范围:输入
10.0.0.0/24
。
- 名称:输入
点击完成,然后点击创建。
如需创建其他 VPC 网络,请点击创建 VPC 网络。
对于名称,输入
test-vpc
。对于子网创建模式,选择自定义。
在新子网部分中,为子网指定以下配置参数,然后点击完成:
- 名称:输入
testvpc-subnet-1
。 - 区域:选择 us-central1。
- IPv4 范围:输入
10.0.0.0/16
。
- 名称:输入
如需向
test-vpc
网络添加其他子网,请点击添加子网。在新子网部分中,为子网指定以下配置参数,然后点击完成:
- 名称:输入
testvpc-subnet-ext
。 - 区域:选择 us-central1。
- IPv4 范围:输入
192.168.1.0/24
。
- 名称:输入
点击创建。
创建虚拟机
在上一部分中配置的子网中创建三个虚拟机。
在 myvpc
网络中创建一个虚拟机
在 myvpc
网络中创建一个没有外部 IP 地址的虚拟机。
在 Google Cloud 控制台中,转到创建实例页面。
点击创建实例。
对于名称,输入
myvpc-vm
。对于区域,选择 us-central1(爱荷华)。
展开高级选项,然后展开网络。
在网络接口部分中,展开现有网络接口并指定以下配置参数:
- 网络:选择
myvpc
。 - 子网:选择 subnet-1 IPv4 (10.0.0.0/24)。
- 外部 IPv4 地址:选择无。
- 网络:选择
点击完成。
点击创建。
在 test-vpc
网络中创建两个虚拟机
创建两个虚拟机,一个没有外部 IP 地址,另一个具有外部 IP 地址。创建具有外部 IP 地址的虚拟机时,请传递启动脚本以在该虚拟机中安装和启动 Apache Web 服务器。
创建一个没有外部 IP 地址的虚拟机:
在 Google Cloud 控制台中,转到创建实例页面。
点击创建实例。
对于名称,输入
testvpc-vm
。对于区域,请选择
us-central1 (Iowa)
。展开高级选项,然后展开网络。
在网络接口部分中,展开现有网络接口并指定以下配置参数:
- 网络:选择 test-vpc。
- 子网:选择 testvpc-subnet-1 IPv4 (10.0.0.0/16)。
- 外部 IPv4 地址:选择无。
点击完成。
点击创建。
创建一个具有临时外部 IP 地址的虚拟机,并传递启动脚本以安装和启动 Apache Web 服务器:
- 点击创建实例。
- 对于名称,输入
testvpc-apache-vm
。 - 对于区域,请选择
us-central1 (Iowa)
。 - 展开高级选项,然后展开网络。
- 在网络接口部分中,展开现有网络接口并指定以下配置参数:
- 网络:选择 test-vpc。
- 子网:选择 testvpc-subnet-ext IPv4 (192.168.1.0/24)。
- 外部 IPv4 地址:选择临时。
- 展开管理。
在元数据部分的启动脚本字段中输入以下脚本:
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl # Read VM network configuration: md_vm="http://169.254.169.254/computeMetadata/v1/instance/" vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )" filter="{print \$NF}" vm_network="$(curl $md_vm/network-interfaces/0/network \ -H "Metadata-Flavor:Google" | awk -F/ "${filter}")" vm_zone="$(curl $md_vm/zone \ -H "Metadata-Flavor:Google" | awk -F/ "${filter}")" # Apache configuration: echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \ tee /var/www/html/index.html systemctl restart apache2
上述脚本会在此虚拟机中部署和启动 Apache Web 服务器。
点击完成。
点击创建。
记下虚拟机实例页面中分配给此虚拟机的临时外部 IP 地址。您稍后需要使用此外部 IP 地址。
创建 Cloud Router 路由器和 Cloud NAT 网关
在上一部分的 myvpc
网络中,您创建了没有任何外部 IP 地址的 myvpc-vm
虚拟机。如需使 myvpc-vm
虚拟机能够通过公共互联网访问 testvpc-apache-vm
中运行的 Apache Web 服务器,请在您创建 myvpc-vm
虚拟机所在的子网上创建 Cloud Router 路由器和 Cloud NAT 网关。
在 Google Cloud 控制台中,转到 Cloud NAT 页面。
点击开始使用或创建 Cloud NAT 网关。
注意:如果这是您创建的第一个 Cloud NAT 网关,请点击开始。如果您已有网关,Google Cloud 会显示创建 Cloud NAT 网关按钮。如需创建其他网关,请点击创建 Cloud NAT 网关。
对于网关名称,输入
myvpc-gateway
。在 NAT 类型列表中,选择公共。
在选择 Cloud Router 路由器部分中,指定以下配置参数:
- 网络:选择 myvpc。
- 区域:选择 us-central1(爱荷华)。
- Cloud Router:点击创建新路由器。
- 对于名称,输入
myvpc-router
。 - 点击创建。
- 对于名称,输入
点击创建。
创建分层防火墙政策并添加防火墙规则
创建分层防火墙政策并向其添加以下防火墙政策规则:
- 为
test-folder
中的所有虚拟机启用 IAP,以启用对虚拟机的管理员权限。 - 允许流向
test-vpc
网络中所有虚拟机的入站流量。 - 将来自
myvpc
网络的出站流量委托给层次结构中的下一层规则,即VPC firewall implied IPv4 rule egress all
规则。 - 拒绝源自
test-folder
中所有其他 VPC 网络的出站流量。
如需创建分层防火墙政策,请按照以下步骤操作:
在 Google Cloud 控制台中,前往项目选择器页面,然后选择 test-folder。
在 Google Cloud 控制台中,转到防火墙页面。
点击创建防火墙政策。
在配置政策部分的政策名称字段中,输入
fw-egress-specific-vpc
。对于说明,输入
example-firewall-policy
。点击继续。
在添加规则部分中,点击继续。您将在本快速入门的后续部分中添加防火墙规则。
在将政策与资源相关联部分中,点击添加。
展开您的组织,选择 test-folder,然后点击添加。
点击创建。
添加防火墙规则以在 test-folder
中的所有虚拟机中启用 IAP
如需使 IAP 能够连接到 test-folder
中的所有虚拟机,您需要分层防火墙政策中具有以下特征的防火墙规则:
- 适用于
test-folder
中您希望可以使用 IAP TCP 转发访问的所有虚拟机。 - 允许 IP 地址范围
35.235.240.0/20
的入站流量。 此范围包含 IAP 用于 TCP 转发的所有 IP 地址。 - 允许与您希望可以使用 IAP TCP 转发访问的所有端口(例如,用于 SSH 的端口
22
)的连接。
如需添加防火墙规则,请按照以下步骤操作:
在 Google Cloud 控制台中,转到防火墙页面。
点击 fw-egress-specific-vpc,然后点击添加规则。
在优先级字段中,输入
100
。对于说明,输入
enable-iap
。对于流量方向,选择入站。
对于对匹配项执行的操作,选择允许。
在来源部分的 IP 范围中,输入
35.235.240.0/20
。在协议和端口部分中,选择指定的协议和端口。
选中 TCP 复选框,在端口字段中,输入
22
。点击创建。
添加防火墙规则以允许 test-vpc
网络中的入站流量
添加防火墙规则,以允许 TCP 端口 80 上的传入 HTTP Web 流量进入 test-vpc
网络中的所有虚拟机:
在 Google Cloud 控制台中,转到防火墙页面。
点击 fw-egress-specific-vpc,然后点击添加规则。
在优先级字段中,输入
200
。对于说明,输入
allow-ingress-testvpc
。对于流量方向,选择入站。
对于对匹配项执行的操作,选择允许。
在目标部分中,点击添加网络。
选择包含
test-vpc
网络的测试项目,然后选择 test-vpc 作为网络。在来源部分的 IP 范围中,输入
0.0.0.0/0
。在协议和端口部分中,选择指定的协议和端口。
选中 TCP 复选框,在端口字段中,输入
80
。点击创建。
添加防火墙规则以将来自 myvpc
网络的出站流量委托给层次结构中的下一层规则
添加使用 goto_next
操作的防火墙规则,以将来自 myvpc
网络的出站流量委托给防火墙中的下一层规则,即隐式 IPv4 允许出站流量 VPC 防火墙规则。
在 Google Cloud 控制台中,转到防火墙页面。
点击 fw-egress-specific-vpc,然后点击添加规则。
在优先级字段中,输入
300
。对于说明,输入
delegate-egress-myvpc
。在流量方向列表中,选择出站。
在对匹配项执行的操作字段中,选择转到下一层。
在目标部分中,点击添加网络。
选择包含
myvpc
的测试项目名称,然后选择myvpc
作为网络。在目的地部分的 IP 范围字段中,输入运行 Apache Web 服务器的虚拟机的临时外部 IP 地址。您已在
test-vpc
网络中创建两个虚拟机部分中记下此 IP 地址。点击创建。
添加防火墙规则以拒绝源自所有其他 VPC 网络的出站流量
最后,添加一条防火墙规则,以拒绝从 test-folder
中的所有其他 VPC 网络传出的流量。
在 Google Cloud 控制台中,转到防火墙页面。
点击 fw-egress-specific-vpc,然后点击添加规则。
在优先级字段中,输入
400
。对于说明,输入
block-egress-all-traffic
。在流量方向列表中,选择出站。
在对匹配项执行的操作部分,选择拒绝。
在目的地部分的 IP 范围中,输入
0.0.0.0/0
。点击创建。
测试分层防火墙政策
配置分层防火墙政策后,请按照以下步骤来测试该政策:
转到 Google Cloud 控制台。
从页面顶部的项目选择器中,选择您在其中创建 VPC 网络的
test-project
。在 Google Cloud 控制台中,转到虚拟机实例页面。
在
myvpc-vm
的连接列中,点击 SSH。在 SSH-in-browser 对话框中,点击授权并等待连接建立。
如需验证是否允许从
myvpc
流向testvpc-apache-vm
的出站流量,请运行以下命令:curl <external_ephemeral_IP_testvpc_apache_vm> -m 2
上述命令会返回您为 Apache Web 服务器的
index.html
页面指定的内容,这意味着允许来自myvpc
的出站连接。如需验证来自组织中的任何其他 VPC 网络的出站流量是否被阻止,请执行以下操作:
在 Google Cloud 控制台中,转到虚拟机实例页面。
在
testvpc-vm
的连接列中,点击 SSH。在 SSH-in-browser 对话框中,点击授权并等待连接建立。
如需验证从
testvpc-vm
到testvpc-apache-vm
的出站流量是否被阻止,请运行以下命令:curl <internal_IP_testvpc_apache_vm> -m 2
上述命令会返回
Connection timed out
消息,这是正常的,因为您创建了防火墙规则来拒绝组织中除myvpc
之外的所有其他 VPC 网络的出站流量。
清理
为避免因本快速入门中使用的资源导致您的 Google Cloud 账号产生费用,请逐个删除资源,然后删除项目和文件夹。
如需删除在本快速入门中创建的资源,请完成以下任务。
删除分层防火墙政策
转到 Google Cloud 控制台。
从页面顶部的项目选择器中,选择您在其中为本快速入门创建资源的
test-folder
。在 Google Cloud 控制台中,转到防火墙页面。
在与该节点关联或者由该节点继承的防火墙政策部分中,点击 fw-egress-specific-vpc。
点击关联标签页。
选中 test-folder 对应的复选框,然后点击移除关联。
在移除与
test-folder
的关联对话框中,点击删除。点击删除。
在删除
fw-egress-specific-vpc
对话框中,点击删除。
删除虚拟机
转到 Google Cloud 控制台。
从页面顶部的项目选择器中,选择 test-project。
在 Google Cloud 控制台中,转到虚拟机实例页面。
选中 myvpc-vm、testvpc-vm 和 testvpc-apache-vm 对应的复选框。
点击删除。
在删除 3 个实例对话框中,点击删除。
删除 Cloud Router 路由器和 Cloud NAT 网关
在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。
选中 myvpc-router 对应的复选框。
点击删除。
在删除
myvpc-router
对话框中,点击删除。
删除 Cloud Router 路由器时,关联的 Cloud NAT 网关也会被删除。
删除 VPC 网络及其子网
在 Google Cloud 控制台中,转到 VPC 网络页面。
在名称列中,点击 myvpc。
点击删除 VPC 网络。
在删除网络对话框中,点击删除。
同样,删除
test-vpc
网络。
删除 VPC 网络时,其子网也会被删除。
删除项目
- In the Google Cloud console, go to the Manage resources page.
- If the project that you plan to delete is attached to an organization, expand the Organization list in the Name column.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
删除文件夹
在 Google Cloud 控制台中,进入管理资源页面:
如果您打算删除的项目已附加到某个组织,请展开名称列中的组织列表。
在文件夹列表中,选择 test-folder,然后点击删除。
在对话框中输入文件夹 ID,然后点击仍要删除以删除项目。
后续步骤
- 如需了解防火墙政策的概念,请参阅防火墙政策概览。
- 如需了解防火墙政策规则的概念,请参阅防火墙政策规则概览。
- 如需创建、更新、监控和删除 VPC 防火墙规则,请参阅使用 VPC 防火墙规则。
- 如需确定费用,请参阅 Cloud NGFW 价格。