×

Kubernetes 提供两种功能供用户使用以强制执行网络安全。一种允许用户强制执行网络策略的功能是NetworkPolicy API,该 API 主要设计用于应用程序开发人员和命名空间租户通过创建命名空间范围的策略来保护其命名空间。

第二个功能是AdminNetworkPolicy,它包含两个 API:AdminNetworkPolicy (ANP) API 和BaselineAdminNetworkPolicy (BANP) API。ANP 和 BANP 专为集群和网络管理员设计,他们可以通过创建集群范围的策略来保护整个集群。集群管理员可以使用 ANP 来强制执行不可覆盖的策略,这些策略优先于NetworkPolicy 对象。管理员可以使用 BANP 来设置和强制执行可选的集群范围网络策略规则,这些规则在必要时可被用户使用NetworkPolicy 对象覆盖。当一起使用时,ANP、BANP 和网络策略可以实现管理员可用于保护其集群的完全多租户隔离。

Red Hat OpenShift Service on AWS 中的 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字段基于标签的命名空间选择