本文档提供了架构方面的最佳实践,以在 Cloud Next Generation Firewall (Cloud NGFW) 中设计、管理和强制执行安全标记。安全标记通过将防火墙规则评估与虚拟机 (VM) 工作负载身份(而非动态 IP 地址)绑定,提供了一种可识别身份的网络安全方法。安全标记是 Cloud Next Generation Firewall 基本功能版层级中包含的一项基础功能,并且受所有 Cloud NGFW 层级支持。本指南适用于设计和维护云网络安全政策的网络架构师、安全管理员和 DevOps 工程师。
本文档将最佳实践分为安全代码生命周期的四个关键阶段:
- 设计标记架构:将标记与工作负载身份对齐,配置微细分,并保持标记粗粒度,以避免超出安全标记配额限制。
- 配置访问权限控制和治理:建立 Identity and Access Management (IAM) 职责分离机制,选择合适的范围,并在虚拟机预配期间强制执行标记。
- 设计防火墙政策和规则逻辑:优化规则评估、配置分层政策,并实现安全的默认拒绝规则。
- 保护、监控和审核:通过标记保留功能防止意外删除,启用防火墙日志记录,并定期执行访问审核。
在使用本指南之前,请确保您熟悉防火墙安全标记概览和 Cloud NGFW 概览。
最佳做法摘要
下表总结了整个安全标记生命周期的核心最佳实践:
| 生命周期阶段 | 主要建议 | 说明 |
|---|---|---|
| 标记架构设计 | 使标记与工作负载身份保持一致 | 按工作负载角色(例如 env/prod 或 tier/database)定义标记键,强制执行互斥值,并保持标记粗粒度,以保持在配额限制范围内。 |
| 访问权限控制和治理 | 强制执行职责分离 | 仅向安全团队授予 roles/resourcemanager.tagAdmin 角色,将 roles/resourcemanager.tagUser 角色限制为部署流水线,并选择合适的范围(organization=auto 与 network)。 |
| 虚拟机配置 | 在创建时强制执行标记 | 在预配期间将安全标记绑定到虚拟机网络接口,并使用组织政策要求所有新实例都必须具有标记。 |
| 政策架构 | 指定目标安全标记 | 在防火墙规则中使用目标安全标记,以提高静态评估性能。 在分层政策中配置默认拒绝规则,以保护未加标记的资源。 |
| 跨网络安全 | 安全地跨 Virtual Private Cloud (VPC) 进行连接 | 在对等互连的 VPC 网络和 Network Connectivity Center (NCC) spoke 之间保持身份边界,而无需管理静态 CIDR 块。 |
| 保护和监控 | 保护和监控标记 | 应用标记保留以防止意外删除,启用防火墙规则日志记录以进行问题排查,并定期审核 IAM 分配。 |
设计代码架构
结构合理的标记架构可简化防火墙规则、简化安全审核并防止政策冲突。
使标记与工作负载身份保持一致
围绕不同的工作负载角色、应用层或监管分类设计安全标记键:
- 环境层级:
env/prod、env/staging、env/dev - 应用层级:
tier/frontend、tier/backend、tier/database - 合规性状态:
scope/pci-dss、scope/hipaa
示例:三层应用微细分
典型的三层式 Web 应用由 Web 前端、应用后端和数据库组成。为防止未经授权的访问,您可以利用安全标记来强制执行网络微细分,以便每个层级只能与其相邻的层级通信:
[ Web Tier (tag: tier/frontend) ]
|
| Allow port 8080 (Web can communicate with App)
v
[ App Tier (tag: tier/backend) ]
|
| Allow port 5432 (App can communicate with DB)
v
[ Database Tier (tag: tier/database) ]
如需强制执行此流程,请配置两条防火墙政策规则:
- 规则 1(从 Web 到应用):允许在端口
8080上入站,其中来源标记为tier/frontend,目标标记为tier/backend。 - 规则 2(应用到数据库):允许在端口
5432上入站,其中源标记为tier/backend,目标标记为tier/database。
结果:Web 前端无法直接与数据库层通信,因为没有防火墙规则允许 tier/frontend 和 tier/database 之间的流量。Cloud NGFW 会自动强制执行此边界,即使虚拟机实例共享同一 IP 子网也是如此。
从网络标记迁移到安全标记
从 VPC 网络标记升级到防火墙安全标记时,请注意以下架构差异:
| 能力 | 网络标记(VPC 规则) | 安全标记(防火墙政策) |
|---|---|---|
| 目标规范 | targetTags = ["web-tier"] |
targetSecureTags = ["tagValues/1234567890"] |
| 来源规范 | sourceTags = ["db-client"] |
sourceSecureTags = ["tagValues/0987654321"] |
| 违规处置范围 | 仅限单个 VPC 网络 | 跨对等互连的 VPC 网络、NCC spoke 和分层政策 |
| 路由支持 | 您可以将网络标记用作静态路由的下一个跃点(也称为路由标记) | 您无法使用安全标记进行路由。仅用于防火墙流量过滤。 |
| 访问权限控制 | 无法针对单个标记设置 IAM 权限 | Resource Manager 和 IAM 角色严格控制标记访问权限和绑定 |
强制使用互斥的标记值
确保资源针对每个标记键仅接收一个值。例如,虚拟机实例必须分配 env/prod 或 env/dev,但不能同时分配这两者:
做法:分配单个环境标记 (
env/prod),并通过引用目标标记(例如env/shared-logging)的明确防火墙规则允许访问共享服务。请勿在同一虚拟机上堆叠多个环境标记(
env/prod和env/dev)。这样做会导致虚拟机与开发防火墙规则相匹配,从而将生产资源暴露给开发者流量。
保持粗粒度标记,以不超过配额
将类似的虚拟机实例归入共享标记值下,而不是创建唯一的实例专用标记。粗粒度标记可让您轻松管理安全状况,并防止组织超出安全标记配额限制。
在规划标记架构时,请查看以下限制:
对于多 NIC 虚拟机,请使用标记而不是服务账号
我们建议在防火墙政策中将安全标记用作来源或目的地,而不是服务账号。与服务账号不同,您可以将安全标记直接绑定到多宿主虚拟机的各个网络接口 (vNIC)。此方法可让您在每个网络接口上强制执行不同的网络政策。
配置访问权限控制和治理
IAM 可管理安全标记,以提供严格的访问权限控制并明确划分职责分离。
使用 IAM 角色分离职责
在创建标记的管理员与配置工作负载的团队之间建立运营边界:
- Tag Administrator (
roles/resourcemanager.tagAdmin):专门授予中央网络和安全管理员,用于创建、修改和删除标记键和值。 - Tag User (
roles/resourcemanager.tagUser):在特定项目或资源范围内向自动化 CI/CD 部署流水线或预配服务账号授予此角色,以将标记绑定到虚拟机网络接口。 - Tag Viewer (
roles/resourcemanager.tagViewer):授予需要只读访问权限来查看代码配置的操作和审核团队。
防止自我标记和提权
- 操作:在项目或网络接口级别,仅向经过审核的基础设施即代码 (IaC) 部署流水线(例如 Terraform
google_tags_tag_binding工作流)授予roles/resourcemanager.tagUser。 - 请勿:在组织级层向开发者群组授予
roles/resourcemanager.tagUser广泛权限。这样可防止开发者将生产标记(例如env/prod)自行附加到未经授权的开发工作负载。
适当确定范围标记键
在与您的运营治理相匹配的资源层次结构级别定义安全标记键:
- 组织级范围的标记 (
purpose-data=organization=auto):在组织或文件夹级定义键,以便在多个 VPC 网络、对等互连网络和分层防火墙政策中实现集中式安全治理。 - 网络级标记 (
purpose-data=network):仅用于项目级隔离,其中标记必须永久限定在单个 VPC 网络中。
在创建虚拟机期间强制执行标记分配
在创建时将安全标记绑定到虚拟机网络接口可确保工作负载在启动时立即受到保护。
为确保用户和自动化流水线无法在没有必需的安全标记的情况下预配实例,请配置组织政策以在资源创建时强制执行标记。此政策会阻止创建未加标记且不受保护的虚拟机实例。
设计防火墙政策和规则逻辑
将安全标记集成到防火墙政策中,以优化规则评估并保持一致的保护。
使用分层防火墙政策进行集中强制执行
在组织级或文件夹级的分层防火墙政策中定义引用安全标记的防火墙规则。分层政策可强制执行组织范围内的治理,本地项目所有者无法覆盖。
指定目标安全标记以提高效率
创建防火墙政策规则时,请尽可能指定目标安全标记 (targetSecureTags)。Cloud NGFW 对目标标记和来源标记的评估方式有所不同:
目标安全标记(静态匹配):具有目标标记的规则仅静态应用于带有这些标记的虚拟机实例。这样可以减少在每个虚拟机上评估的规则数量,并提高性能。
来源安全标记(根据每个连接动态匹配):仅指定来源标记 (
sourceSecureTags) 而不指定目标标记的规则会针对网络中所有虚拟机实例的每个连接进行动态评估,从而增加处理开销。
通过分层默认拒绝实现安全默认设置
由于虚拟机实例不会从父文件夹或组织继承 GCE_FIREWALL 安全标记,因此请在分层政策中定义安全回退规则,以保护未标记的资源:
默认拒绝规则:在组织或文件夹级别创建优先级较低的规则(例如,优先级为
65000),以默认拒绝所有流量。有条件允许规则:创建优先级较高的规则,仅允许在特定安全标记(例如
tier/frontend到tier/backend)之间传输流量。
如果创建的虚拟机实例没有标记或其标记已分离,则分层默认拒绝规则会自动阻止进出该实例的流量。
在对等互连网络和 NCC 中使用安全标记
使用安全标记来控制通过 VPC 网络对等互连或 NCC VPC Spoke 连接的 VPC 网络之间的流量。安全标记可在连接的网络中保持身份感知边界,而无需您管理不断变化的 CIDR 块。
保护、监控和审核
持续的运营控制措施可确保您的安全标记配置保持安全性和弹性。
使用标记保留功能保护关键标记值
防止因删除正在使用的标记而导致意外中断:
- 对关键安全标记值应用标记保留,以防止删除。
- 在从虚拟机网络接口分离安全标记之前,请验证是否没有有效的防火墙规则依赖于该安全标记。在 Google Cloud 允许您删除安全标记值之前,必须先移除所有资源绑定(以及所有标记保留)。
启用防火墙规则日志记录
为使用安全标记的所有规则启用防火墙政策规则日志记录。这些日志会捕获匹配的流量命中情况,帮助您审核访问模式、验证细分情况并排查连接问题。
定期审核 IAM 角色分配情况
定期审核 roles/resourcemanager.tagAdmin 和 roles/resourcemanager.tagUser 的主账号分配情况。此审核可确保只有已获授权的流水线具有标记绑定权限,从而防止提权并保持环境隔离。