本页面简要介绍了 Google Distributed Cloud (GDC) 气隙环境中的项目网络政策。
项目网络政策定义入站流量或出站流量规则。与 Kubernetes 网络政策不同,您只能为一项政策指定一种政策类型。政策中的每条规则都可以配置为“允许”(默认)或“拒绝”操作。
对于项目内的流量,GDC 默认将预定义的项目网络策略(即项目内政策)应用于每个项目。
默认情况下,项目中的服务和工作负载与外部服务和工作负载隔离。不过,来自不同项目命名空间且位于同一组织内的服务和工作负载可以通过应用跨项目流量网络政策相互通信。
同样,将服务和工作负载连接到不同组织中项目之外的目标需要明确批准。您必须停用数据渗漏防护功能,才能允许组织外部流量。
入站和出站防火墙规则是项目网络政策的主要组成部分,用于确定允许或拒绝哪些类型的流量进出您的网络。如需在 GDC 中为项目命名空间设置防火墙规则,请使用 GDC 控制台。
安全性和连接性
默认情况下,项目中的服务和工作负载在该项目内是隔离的。如果不配置网络策略,它们将无法与外部服务和工作负载通信。
如需在 GDC 中为项目命名空间设置网络策略,请使用 ProjectNetworkPolicy 资源。借助此资源,您可以定义政策,以允许项目内通信、项目间通信、与外部 IP 地址通信以及从外部 IP 地址通信。此外,只有在为项目停用数据渗漏防护功能后,您才能将工作负载从项目中移出。
GDC 项目网络政策是叠加的。对于工作负载,最终的强制执行结果是,针对应用于该工作负载的所有政策的并集,流量流的 任何 匹配项。如果存在多项政策,则每项政策的规则会叠加组合,如果流量与至少一条规则匹配,则允许流量。
明确的 Deny 规则的优先级绝对高于 Allow 规则。如果流量流与 Deny 规则匹配,则会被丢弃,即使它被另一条规则或默认平台政策允许也是如此。
此外,在应用选择工作负载的单个政策后,所有未指定的流量都会被拒绝(默认拒绝模式)。因此,当您应用一项或多项选择工作负载作为正文的政策时,系统只会允许明确允许(且未明确拒绝)的流量。
当您使用为项目分配的已知 IP 地址时,系统会对来自组织的出站流量执行源网络地址转换 (NAT)。
全局项目网络政策
您可以创建全局项目网络政策。全局项目网络政策的范围涵盖整个 GDC 世界。每个 GDC 世界可以包含多个 GDC 可用区,这些可用区按区域组织,相互连接并共享一个控制平面。例如,一个包含两个区域(每个区域有三个可用区)的世界可能如下所示:us-virginia1-a、us-virginia1-b、us-virginia1-c 和 eu-ams1-a、eu-ams1-b、eu-ams1-c。
可用区级项目网络政策的范围仅限于创建时指定的可用区。每个可用区都是一个独立的灾难域。可用区管理使用本地控制平面的基础架构、服务、API 和工具。
如需详细了解 GDC 世界中的全局资源,请参阅 多可用区概览。
您可以使用 Networking Kubernetes 资源模型 (KRM) API 创建全局项目网络政策。使用 API 版本 networking.global.gdc.goog 创建全局资源。
您可以使用 KRM API 或 GDC 控制台创建可用区级项目网络政策。使用 API 版本 networking.gdc.goog 创建可用区级资源。
允许所有网络政策
您可以创建允许所有网络政策,为项目建立广泛的默认访问规则。
您可以配置以下类型的允许所有网络政策:
- 允许所有网络政策:允许与任何来源(包括其他项目和外部 IP)之间的流量。
- 允许所有外部网络政策:允许与组织外部的 IP 地址之间的流量。
- 允许所有项目网络政策:允许与组织内的所有项目之间的流量。
如需了解详情,请参阅创建允许所有流量网络政策。
明确拒绝网络政策
您可以在项目网络政策中配置明确拒绝规则,以限制指定项目或 CIDR 块之间的连接。
拒绝规则的主要功能和限制:
- 优先级:拒绝规则的优先级绝对高于允许规则(包括基本平台政策)。
- 出站流量安全规则:为防止意外阻止关键基础架构流量,出站流量拒绝规则会自动排除系统命名空间和非项目命名空间。
- 对等互连限制:为确保安全配置,入站流量拒绝规则需要明确指定来源对等互连。您无法通过将来源对等互连留空来选择所有来源。不允许将来源对等互连留空,否则政策将被拒绝。
- 启用 DEP 时无法拒绝出站流量:如果为项目启用了数据渗漏防护 (DEP),则无法配置出站流量拒绝规则。
如需了解详情,请参阅创建拒绝网络政策。
工作负载级网络政策
您可以创建工作负载级网络政策,为项目中的各个虚拟机和 Pod 定义精细的访问权限控制。这些政策就像工作负载的防火墙一样,根据标签控制流量,以增强安全性并隔离应用。这种精细度可以更严格地控制哪些工作负载可以在项目内和跨项目相互通信。
工作负载级网络政策还提供沿单个可用区强制执行 PNP 的功能。
如需了解详情,请参阅创建工作负载级项目内政策和创建工作负载级跨项目政策。
准备预定义角色和访问权限
如需配置项目网络政策,您必须拥有必要的身份和访问权限角色:
- 项目 NetworkPolicy 管理员:管理项目命名空间中的项目网络政策。请让组织 IAM 管理员向您授予项目 NetworkPolicy 管理员 (
project-networkpolicy-admin) 集群角色。 - 全局 PNP 管理员:对全局项目命名空间中的所有多可用区 PNP 资源拥有写入权限。请让组织 IAM 管理员向您授予全局 PNP 管理员 (
global-project-networkpolicy-admin) 角色。如需了解详情,请参阅预定义角色说明。
节点选择和扩缩注意事项
在配置项目网络政策以定位特定节点或使用广泛的 CIDR 范围时,您的政策配置选择可能会影响可伸缩性和性能。请考虑以下事项:
广泛的 CIDR 范围对可伸缩性的影响
- 0.0.0.0/0 的行为:在
ipBlocks规则中使用0.0.0.0/0等广泛的 CIDR,除了外部 IP 之外,还会匹配集群中的所有节点。 - 规模:集群中的每个节点都会分配一个唯一的 CIDR 身份。每个工作负载端点(虚拟机或 Pod)都有一个底层内部政策表(BPF 映射),用于存储其网络规则。在大型集群中,广泛的
ipBlocks规则(如0.0.0.0/0)会按节点数量级增加政策映射使用量,因为系统必须为每个唯一的节点 CIDR 身份创建条目。 - 最佳实践:如果您有大量节点或大量复杂政策,请避免在
ipBlocks中使用过宽的 CIDR 范围,因为您可能会达到每个端点的政策映射限制。如果端点达到此限制,则新的网络政策将无法应用,这可能会中断网络连接或阻止对该工作负载强制执行政策。