×

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)对象。

OVK-Kubernetes Access Control List (ACL)

首先评估ANP。当匹配项是ANP的allowdeny规则时,将跳过对集群中任何现有的NetworkPolicyBaselineAdminNetworkPolicy (BANP)对象的评估。当匹配项是ANP的pass规则时,评估将从ACL的1层移动到2层,在那里评估NetworkPolicy策略。如果没有任何NetworkPolicy匹配流量,则评估将从2层ACL移动到3层ACL,在那里评估BANP。

AdminNetworkPolicy和NetworkPolicy自定义资源的主要区别

下表解释了集群范围的AdminNetworkPolicy API和命名空间范围的NetworkPolicy API之间的主要区别。

策略元素 AdminNetworkPolicy NetworkPolicy

适用用户

集群管理员或等效用户

命名空间所有者

范围

集群

命名空间

丢弃流量

支持使用显式Deny操作作为规则集。

通过在策略创建时隐式Deny隔离来支持。

委托流量

支持使用Pass操作作为规则集。

不适用

允许流量

支持使用显式Allow操作作为规则集。

所有规则的默认操作都是允许。

策略内规则的优先级

取决于它们在ANP中出现的顺序。规则的位置越高,优先级越高。

规则是累加的

策略优先级

在ANP中,priority字段设置评估顺序。优先级数字越低,策略优先级越高。

策略之间没有策略排序。

功能优先级

通过1层ACL优先评估,BANP通过3层ACL最后评估。

在ANP之后和BANP之前强制执行,它们在ACL的2层中进行评估。

匹配Pod选择

可以跨命名空间应用不同的规则。

可以在单个命名空间中的Pod之间应用不同的规则。

集群出口流量

通过nodesnetworks对等支持

通过ipBlock字段以及可接受的CIDR语法支持。

集群入口流量

不支持

不支持

完全限定域名(FQDN)对等支持

不支持

不支持

命名空间选择器

支持使用namespaces.matchLabels字段高级选择命名空间

支持使用namespaceSelector字段基于标签的命名空间选择