Kubernetes提供两种功能,用户可以使用它们来强制执行网络安全。允许用户强制执行网络策略的一种功能是NetworkPolicy
API,该API主要设计用于应用程序开发人员和命名空间租户通过创建命名空间范围的策略来保护其命名空间。
第二个功能是AdminNetworkPolicy
,它包含两个API:AdminNetworkPolicy
(ANP) API和BaselineAdminNetworkPolicy
(BANP) API。ANP和BANP专为集群和网络管理员设计,他们可以通过创建集群范围的策略来保护整个集群。集群管理员可以使用ANP强制执行不可覆盖的策略,这些策略优先于NetworkPolicy
对象。管理员可以使用BANP设置和强制执行可选的集群范围网络策略规则,这些规则在必要时可被用户使用NetworkPolicy
对象覆盖。当一起使用时,ANP、BANP和网络策略可以实现管理员可以使用来保护其集群的完全多租户隔离。
OpenShift Container Platform中的OVN-Kubernetes CNI使用访问控制列表(ACL)层来评估和应用这些网络策略。ACL按从1层到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移动到3层ACL,在那里评估BANP。
下表解释了集群范围的AdminNetworkPolicy
API和命名空间范围的NetworkPolicy
API之间的主要区别。
策略元素 | AdminNetworkPolicy | NetworkPolicy |
---|---|---|
适用用户 |
集群管理员或等效用户 |
命名空间所有者 |
范围 |
集群 |
命名空间 |
丢弃流量 |
支持使用显式 |
通过在策略创建时隐式 |
委托流量 |
支持使用 |
不适用 |
允许流量 |
支持使用显式 |
所有规则的默认操作都是允许。 |
策略内规则的优先级 |
取决于它们在ANP中出现的顺序。规则的位置越高,优先级越高。 |
规则是累加的 |
策略优先级 |
在ANP中, |
策略之间没有策略排序。 |
功能优先级 |
通过1层ACL优先评估,BANP通过3层ACL最后评估。 |
在ANP之后和BANP之前强制执行,它们在ACL的2层中进行评估。 |
匹配Pod选择 |
可以跨命名空间应用不同的规则。 |
可以在单个命名空间中的Pod之间应用不同的规则。 |
集群出口流量 |
通过 |
通过 |
集群入口流量 |
不支持 |
不支持 |
完全限定域名(FQDN)对等支持 |
不支持 |
不支持 |
命名空间选择器 |
支持使用 |
支持使用 |