第 7 章 网络安全性
7.1. 了解网络策略 API
Kubernetes 提供了两个用户可用于强制实施网络安全的功能。允许用户强制执行网络策略的一个功能是 NetworkPolicy
API,主要用于应用程序开发人员和命名空间租户,通过创建命名空间范围的策略来保护其命名空间。
第二个功能是 AdminNetworkPolicy
,它由两个 API 组成:AdminNetworkPolicy
(ANP) API 和 BaselineAdminNetworkPolicy
(BANP) API。ANP 和 BANP 是为集群和网络管理员设计的,以通过创建集群范围的策略来保护其整个集群。集群管理员可以使用 ANPs 来强制实施优先于 NetworkPolicy
对象的不可覆盖的策略。管理员可以使用 BANP 设置并强制实施可选的集群范围的网络策略规则,当需要时,用户可以使用 NetworkPolicy
对象覆盖它。当一起使用时,ANP、BANP 和网络策略可以实现完整的多租户隔离,管理员可使用这个功能保护集群。
OpenShift Container Platform 中的 OVN-Kubernetes CNI 使用访问控制列表(ACL) Tiers 实施这些网络策略,以评估并应用它们。ACL 按照从 Tier 1 到 Tier 3 的降序进行评估。
第 1 级评估 AdminNetworkPolicy
(ANP)对象。第 2 级评估 NetworkPolicy
对象。第 3 级评估 BaselineAdminNetworkPolicy
(BANP)对象。
首先评估 ANP。当匹配是 ANP allow
或 deny
规则时,集群中的任何现有 NetworkPolicy
和 BaselineAdminNetworkPolicy
(BANP)对象将不会被评估。当匹配是 ANP pass
,评估会从 ACL 的第 1 层移到第 2 层,在其中评估 NetworkPolicy
策略。如果没有 NetworkPolicy
与流量匹配,则评估从第 2 层 ACL 移到评估 BANP 的第 3 层 ACL。
7.1.1. AdminNetworkPolicy 和 NetworkPolicy 自定义资源之间的主要区别
下表解释了集群范围的 AdminNetworkPolicy
API 和命名空间范围 NetworkPolicy
API 之间的主要区别。
策略元素 | AdminNetworkPolicy | NetworkPolicy |
---|---|---|
适用的用户 | 集群管理员 | 命名空间所有者 |
影响范围 | Cluster | Namespaced |
丢弃流量 |
当显式 |
在策略创建时通过隐式 |
委派流量 |
| Not applicable |
允许流量 |
显式 | 所有规则的默认操作都是 allow。 |
策略中的规则优先级 | 取决于它们出现在 ANP 中的顺序。位置更高的规则有更高的优先级。 | 规则的效果是叠加的 |
策略优先级 |
在 ANP 中, | 在策略之间没有策略排序。 |
功能优先级 | 首先通过 1 层 ACL 和 BANP 评估,最后通过第 3 层 ACL 评估。 | 在 ANP 之后,BANP 之前强制实施,它们会在 ACL 层 2 中进行评估。 |
匹配 pod 选择 | 在命名空间之间可应用不同的规则。 | 可以在单一命名空间中的 pod 之间应用不同的规则。 |
集群出口流量 |
通过 |
通过 |
集群入口流量 | 不支持 | 不支持 |
完全限定域名 (FQDN) 对等支持 | 不支持 | 不支持 |
命名空间选择器 |
支持通过使用 |
支持使用 |