2.2. OVN-Kubernetes BaselineAdminNetworkPolicy


2.2.1. BaselineAdminNetworkPolicy

BaselineAdminNetworkPolicy (BANP)是一个集群范围的自定义资源定义(CRD)。作为 OpenShift Container Platform 管理员,您可以使用 BANP 来设置并强制实施可选的基准网络策略规则,这些规则被用户使用 NetworkPolicy 对象(如果需要的话)覆盖。BANP 的规则操作是 allowdeny

BaselineAdminNetworkPolicy 资源是一个集群单例对象,当传递的流量策略与集群中的任何 NetworkPolicy 对象不匹配时,可用作 guardrail 策略。BANP 也可以用作默认安全模型,该模型默认阻止集群内流量,用户需要使用 NetworkPolicy 对象来允许已知的流量。在创建 BANP 资源时,必须使用 default 作为名称。

管理员可通过 BANP 指定:

  • 由一组命名空间或命名空间的 subject
  • 要应用到 subject 的所有入口流量的入站规则列表。
  • 用于来自 subject 的所有出口流量的出口规则列表。
BaselineAdminNetworkPolicy 示例

例 2.5. BANP 的 YAML 文件示例

apiVersion: policy.networking.k8s.io/v1alpha1
kind: BaselineAdminNetworkPolicy
metadata:
  name: default 
1

spec:
  subject:
    namespaces:
      matchLabels:
          kubernetes.io/metadata.name: example.name 
2

  ingress: 
3

  - name: "deny-all-ingress-from-tenant-1" 
4

    action: "Deny"
    from:
    - pods:
        namespaceSelector:
          matchLabels:
            custom-banp: tenant-1 
5

        podSelector:
          matchLabels:
            custom-banp: tenant-1 
6

  egress:
  - name: "allow-all-egress-to-tenant-1"
    action: "Allow"
    to:
    - pods:
        namespaceSelector:
          matchLabels:
            custom-banp: tenant-1
        podSelector:
          matchLabels:
            custom-banp: tenant-1
Copy to Clipboard Toggle word wrap
1
策略名称必须是 default,因为 BANP 是一个单例对象。
2
指定要将 ANP 应用到的命名空间。
3
BANP 具有入口和出口规则。spec.ingressspec.egress 字段的 BANP 规则接受 Deny, action 字段接受的值为 Allow
4
ingress.name 指定名称
5
指定要从中选择 pod 以应用 BANP 资源的命名空间。
6
指定 podSelector.matchLabels 名称,以应用 BANP 资源。
BaselineAdminNetworkPolicy 拒绝示例

以下 BANP 单例确保管理员为 internal 安全级别进入租户的所有入口监控流量设置了默认的拒绝策略。与 "AdminNetworkPolicy Pass example" 组合时,这个 deny 策略充当 ANP pass-monitoring 策略传递的所有入口流量的保护策略。

例 2.6. guardrail Deny 规则的 YAML 文件示例

apiVersion: policy.networking.k8s.io/v1alpha1
kind: BaselineAdminNetworkPolicy
metadata:
  name: default
spec:
  subject:
    namespaces:
      matchLabels:
        security: internal
  ingress:
  - name: "deny-ingress-from-monitoring"
    action: "Deny"
    from:
    - namespaces:
        matchLabels:
          kubernetes.io/metadata.name: monitoring
# ...
Copy to Clipboard Toggle word wrap

您可以将带有 action 字段的值为 PassAdminNetworkPolicy 资源与 BaselineAdminNetworkPolicy 资源结合使用来创建多租户策略。此多租户策略允许一个租户在应用上收集监控数据,同时不从第二个租户收集数据。

作为管理员,如果您同时应用了 "AdminNetworkPolicy Pass action example" 和 "BaselineAdminNetwork Policy Deny example",则租户将保留创建在 BANP 之前评估的 NetworkPolicy 资源。

例如,租户 1 可以设置以下 NetworkPolicy 资源来监控入口流量:

例 2.7. NetworkPolicy 示例

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-monitoring
  namespace: tenant 1
spec:
  podSelector:
  policyTypes:
    - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: monitoring
# ...
Copy to Clipboard Toggle word wrap

在这种情况下,Tenant 1 会在 "AdminNetworkPolicy Pass action example" 之后,"BaselineAdminNetwork Policy Deny example" 之前被评估,它将拒绝所有进入 安全级别 internal 的入口监控流量。随着租户 1 的 NetworkPolicy 对象就位,它们将能够在其应用程序中收集数据。但是,租户 2 没有任何 NetworkPolicy 对象,将无法收集数据。作为管理员,您没有默认监控内部租户,而是创建了 BANP,它允许租户使用 NetworkPolicy 对象覆盖 BANP 的默认行为。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat