本页介绍了如何为所有防火墙政策规则(分层防火墙政策和网络防火墙政策)配置批量更新。如需执行批量更新,您可以使用 Google Cloud CLI 或 Compute Engine API。
如需详细了解批量更新,请参阅概览。
如果您使用 gcloud CLI 批量更新防火墙政策规则,请使用以下 gcloud CLI 命令:
export-rules
:可将防火墙政策规则配置导出到 YAML 文件。然后,您可以在 YAML 文件中根据需要添加、修改和移除防火墙政策规则配置。import-rules
:可让您导入修改后的防火墙政策规则配置文件。这会替换指定防火墙政策的现有规则。
如果您使用 REST API 批量更新防火墙政策规则,请使用 patch
方法。借助 patch
方法,您可以在请求中提供 rules
字段,从而替换防火墙政策中的所有规则;您无需创建 YAML 文件。使用 patch
方法时,请将默认 goto_next
规则的优先级保持为最低。
准备工作
如果您尚未设置身份验证,请进行设置。 身份验证是通过其进行身份验证以访问 Trusted Cloud by S3NS 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按本部分所述的方式向 Compute Engine 进行身份验证。
控制台
当您使用 Trusted Cloud 控制台访问 Trusted Cloud by S3NS 服务和 API 时,无需设置身份验证。
gcloud
安装 Google Cloud CLI 后,通过运行以下命令对其进行初始化:
gcloud init
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
在本地客户端中设置默认区域和可用区。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
安装 Google Cloud CLI 后,通过运行以下命令对其进行初始化:
gcloud init
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
如需了解详情,请参阅Trusted Cloud by S3NS 身份验证文档中的使用 REST 时进行身份验证。
创建 YAML 文件
您可以使用 export-rules
命令将现有防火墙政策规则导出到 YAML 文件。如需了解详情,请参阅导出防火墙政策规则。导出的 YAML 文件包含优先级最低的默认 goto_next
规则(优先级大于或等于 2147483644 的规则),请确保您不会修改这些默认 goto_next
规则。
不过,如果您不想使用 export-rules
命令,也可以手动创建新的 YAML 文件来修改规则。如需手动创建新的 YAML 文件,请执行以下操作:
创建 YAML 文件
RULES_YAML_FILE
。将RULES_YAML_FILE
替换为您选择的文件名。将
rules
字段添加到 YAML 文件中。rules
字段包含防火墙政策规则的列表。如需查看用于描述导出或导入格式的架构,请参阅CLOUDSDKROOT/lib/googlecloudsdk/schemas/compute/beta/FirewallPolicy.yaml
。其中CLOUDSDKROOT
是 Google Cloud CLI 安装目录。以下是 YAML 架构的示例。
rules: -action: deny description: priority: 1 disabled: false enable-logging: false kind: compute#firewallPolicyRule ... -action: goto_next priority: 2 disabled: false enable-logging: false ...
如需修改防火墙政策规则,请参阅修改防火墙政策规则。
导出防火墙政策规则
您可以使用 gcloud CLI 或 Compute Engine API 来启动更新。
导出分层防火墙政策
从分层防火墙政策中导出防火墙政策规则。
gcloud
如需从分层防火墙政策导出规则,请使用 gcloud compute firewall-policies export-rules
命令:
gcloud compute firewall-policies export-rules FIREWALL_POLICY \ --destination=DESTINATION \ --organization=ORGANIZATION
替换以下内容:
FIREWALL_POLICY
:要从中导出规则的分层防火墙政策的简称或 IDDESTINATION
:要导出配置的 YAML 文件的路径ORGANIZATION
:要更新组织防火墙政策的组织。如果FIREWALL_POLICY
是简称,则必须设置
API
如需从分层防火墙政策中导出现有规则,请在 Compute Engine API 中使用 firewallPolicies.get
方法:
GET https://compute.googleapis.com/compute/v1/locations/global/firewallPolicy/FIREWALL_POLICY_NAME
替换以下内容:
FIREWALL_POLICY_NAME
:要导出的防火墙政策的名称此请求会返回防火墙政策资源定义。
导出网络防火墙政策
从网络防火墙政策中导出防火墙规则。
gcloud
如需将网络防火墙政策规则配置导出到文件,请使用 gcloud compute network-firewall-policies export-rules
命令:
gcloud compute network-firewall-policies export-rules FIREWALL_POLICY \ --destination=RULES_YAML_FILE_PATH \ --global | --region=REGION
替换以下内容:
FIREWALL_POLICY
:要从中导出规则的网络防火墙政策的名称RULES_YAML_FILE_PATH
:导出配置的 YAML 文件的路径REGION
:如果是全球性政策,请指定--global
;如果是区域性政策,请指定REGION
。
API
如需从全球网络防火墙政策中导出现有规则,请在 Compute Engine API 中使用 networkFirewallPolicies.get
方法:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT/global/firewallPolicies/FIREWALL_POLICY_NAME
替换以下内容:
PROJECT
:您的项目的 IDFIREWALL_POLICY_NAME
:要导出的防火墙政策的名称
如需从区域性网络防火墙政策导出现有规则,请在 Compute Engine API 中使用 regionNetworkFirewallPolicies.get
方法:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/firewallPolicies/FIREWALL_POLICY_NAME
替换以下内容:
PROJECT
:您的项目的 IDREGION
:防火墙政策规则的区域FIREWALL_POLICY_NAME
:要导出的防火墙政策的名称
此请求会返回防火墙政策资源定义。
修改防火墙政策规则
修改您在上一部分中导出的防火墙政策规则。
打开导出的文件。例如
RULES_YAML_FILE
。添加
rules
字段,如以下示例所示。rules: -action: allow description: test-rule1 direction: INGRESS disabled: false enableLogging: false kind: compute#firewallPolicyRule
添加其他配置字段,例如
action
、direction
和priority
。以下是一个基本 YAML 文件示例。rules: -action: allow description: test-rule1 direction: INGRESS disabled: false enableLogging: false kind: compute#firewallPolicyRule match: layer4Configs: -ipProtocol: all srcIpRanges: -192.0.2.0/24 priority: 1 ruleTupleCount: 2 -action: goto_next description: default egress rule direction: EGRESS enableLogging: false kind: compute#firewallPolicyRule match: destIpRanges: -::/0 layer4Configs: -ipProtocol: all priority: 2147483644 ruleTupleCount: 2 -action: goto_next description: default ingress rule direction: INGRESS enableLogging: false kind: compute#firewallPolicyRule match: layer4Configs: -ipProtocol: all srcIpRanges: -::/0 priority: 2147483645 ruleTupleCount: 2 -action: goto_next description: default egress rule direction: EGRESS enableLogging: false kind: compute#firewallPolicyRule match: destIpRanges: -198.51.100.0/24 layer4Configs: -ipProtocol: all priority: 2147483646 ruleTupleCount: 2 -action: goto_next description: default ingress rule direction: INGRESS enableLogging: false kind: compute#firewallPolicyRule match: layer4Configs: -ipProtocol: all srcIpRanges: -192.0.2.0/24 priority: 2147483647 ruleTupleCount: 2
导入防火墙政策规则
使用所需的批量更新更改文件后,将规则导入防火墙政策。导入修改后的文件会将现有防火墙政策规则替换为所提供的规则。
导入分层防火墙政策规则
将防火墙规则导入分层防火墙政策。
gcloud
如需将规则导入分层防火墙政策,请使用 gcloud compute firewall-policies import-rules
命令:
gcloud compute firewall-policies import-rules FIREWALL_POLICY \ --source=RULES_YAML_FILE_PATH \ --organization=ORGANIZATION
替换以下内容:
FIREWALL_POLICY
:要更新的分层防火墙政策的短名称或 IDRULES_YAML_FILE_PATH
:要从中导入规则的 YAML 文件的路径ORGANIZATION
:要更新组织防火墙政策的组织。如果FIREWALL_POLICY
是短名称,则必须设置此项。
API
如需导入防火墙政策规则,请使用 Compute Engine API 中的 firewallPolicies.patch
方法:
PATCH https://compute.googleapis.com/compute/v1/locations/global/firewallPolicy/FIREWALL_POLICY_NAME
替换以下内容:
FIREWALL_POLICY_NAME
:要导出的防火墙政策的名称此请求会返回防火墙政策资源定义。
导入网络防火墙政策
将修改后的防火墙规则 YAML 文件导入到网络防火墙政策。
gcloud
如需将规则导入网络防火墙政策,请使用 gcloud compute network-firewall-policies import-rules
命令:
gcloud compute network-firewall-policies import-rules FIREWALL_POLICY \ --source=RULES_YAML_FILE_PATH \ --global | --region=REGION
替换以下内容:
FIREWALL_POLICY
:要更新的网络防火墙政策的名称RULES_YAML_FILE_PATH
:选择的用于导入规则的路径REGION
:如果是全球性政策,请指定--global
;如果是区域性政策,请指定REGION
。
API
如需导入修改后的网络防火墙政策规则,请使用 Compute Engine API 中的 networkFirewallPolicies.patch
方法:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/global/firewallPolicy/FIREWALL_POLICY_NAME
替换以下内容:
PROJECT
:网络防火墙政策规则的项目 IDFIREWALL_POLICY_NAME
:要导出的网络防火墙政策的名称
如需导入修改后的区域级网络防火墙政策规则,请使用 Compute Engine API 中的 regionNetworkFirewallPolicies.patch
方法:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/firewallPolicies/FIREWALL_POLICY_NAME
替换以下内容:
PROJECT
:区域性网络防火墙政策规则的项目 IDREGION
:防火墙政策规则的区域FIREWALL_POLICY_NAME
:要导出的防火墙政策的名称此请求会返回网络防火墙政策资源定义。