第2章 管理ネットワークポリシー


2.1. OVN-Kubernetes AdminNetworkPolicy

OpenShift Container Platform では、AdminNetworkPolicy リソースを設定することで、名前空間スコープの NetworkPolicy オブジェクトでは上書きできないクラスター全体の Ingress および Egress を適用できます。これにより、マルチテナントの分離とプラットフォームセキュリティーに対する管理制御が維持されます。

2.1.1. AdminNetworkPolicy

AdminNetworkPolicy (ANP) は、名前空間が作成される前に Ingress および Egress を確立するために定義できる、クラスタースコープのカスタムリソース定義 (CRD) です。ANP を使用すると、テナントの NetworkPolicy オブジェクトが管理上の制御を上書きできないようにすることができます。

AdminNetworkPolicy オブジェクトNetworkPolicy オブジェクトの主な違いは、前者は管理者向けでクラスタースコープであるのに対し、後者はテナント所有者向けで名前空間スコープであるという点です。

ANP を使用すると、管理者は以下を指定できます。

  • 評価の順序を決定する priority 値。値が小さいほど優先度が高くなります。
  • ポリシーが適用される namespace (または namespace のセット) で構成される Pod のセット。
  • subject へのすべての Ingress トラフィックに適用される Ingress ルールのリスト。
  • subject からのすべての Egress トラフィックに適用される Egress ルールのリスト。

2.1.1.1. AdminNetworkPolicy の例

ANP の YAML ファイルの例

apiVersion: policy.networking.k8s.io/v1alpha1
kind: AdminNetworkPolicy
metadata:
  name: sample-anp-deny-pass-rules
spec:
  priority: 50
  subject:
    namespaces:
      matchLabels:
          kubernetes.io/metadata.name: example.name
  ingress:
  - name: "deny-all-ingress-tenant-1"
    action: "Deny"
    from:
    - pods:
        namespaceSelector:
          matchLabels:
            custom-anp: tenant-1
        podSelector:
          matchLabels:
            custom-anp: tenant-1
  egress:
  - name: "pass-all-egress-to-tenant-1"
    action: "Pass"
    to:
    - pods:
        namespaceSelector:
          matchLabels:
            custom-anp: tenant-1
        podSelector:
          matchLabels:
            custom-anp: tenant-1

各項目の説明:

metadata.name
ANP の名前を指定します。
spec.priority
ANP の優先順位を指定します。クラスター内で、0-99 の 範囲の値を持つ最大 100 個の ANP をサポートします。範囲は最低値から最高値の順に読み取られるため、値が低いほど優先度が高くなります。同じ優先度で ANP を作成すると、どのポリシーが優先されるか保証されません。そのため、優先順位が意図したものになるように、異なる優先度で ANP を設定してください。
spec.subject.namespaces.matchLabels
ANP リソースを適用する名前空間を指定します。
仕様.イングレス名
ingress.name の名前を指定します。
仕様.イングレスアクション
ANP のイングレスルールを指定します。ANP には Ingress ルールと Egress ルールの両方があります。PassDenyAllow の値を受け入れます。
spec.ingress.from.pods.namespaceSelector.matchLabels
namespaceSelector.matchLabels で選択された名前空間内の Pod をイングレスピアとして選択するために、podSelector.matchLabels を指定します。
仕様の退出アクション
ANP の Egress ルールを指定します。PassDenyAllow の値を受け入れます。

2.1.1.2. ルールの AdminNetworkPolicy アクション

OVN-Kubernetes の階層型 ACL は、下位層のネットワークポリシーが有効になる前に管理上の決定を適用するため、各 AdminNetworkPolicy (ANP) カスタムリソースルールの アクション フィールドを 許可拒否 通過のいずれかに設定できます。

OVN-Kubernetes は階層型 ACL を使用してネットワークトラフィックルールを評価するため、ANP CR を使用すると、管理者がルールを変更、削除、またはより高い優先度のルールを設定して上書きすることによってのみ変更できる強力なポリシールールを定義できます。

2.1.1.2.1. AdminNetworkPolicy の Allow の例

優先度 9 で定義されている次の ANP は、monitoring namespace からクラスター内の任意のテナント (他のすべての namespace) への Ingress トラフィックをすべて許可します。

強力な Allow ANP の YAML ファイルの例

apiVersion: policy.networking.k8s.io/v1alpha1
kind: AdminNetworkPolicy
metadata:
  name: allow-monitoring
spec:
  priority: 9
  subject:
    namespaces: {} # Use the empty selector with caution because it also selects OpenShift namespaces as well.
  ingress:
  - name: "allow-ingress-from-monitoring"
    action: "Allow"
    from:
    - namespaces:
        matchLabels:
          kubernetes.io/metadata.name: monitoring
# ...

これは、関係者全員がオーバーライドできない強力な Allow ANP の例です。テナントは、NetworkPolicy オブジェクトを使用してテナント自体の監視をブロックすることはできません。また、監視を実行するテナントが監視の対象を決定することもできません。

2.1.1.2.2. AdminNetworkPolicy の Deny の例

優先度 5 で定義されている次の ANP は、monitoring namespace から制限付きテナント (security: restricted ラベルを持つ namespace) への Ingress トラフィックをすべてブロックします。

強力な Deny ANP の YAML ファイルの例

apiVersion: policy.networking.k8s.io/v1alpha1
kind: AdminNetworkPolicy
metadata:
  name: block-monitoring
spec:
  priority: 5
  subject:
    namespaces:
      matchLabels:
        security: restricted
  ingress:
  - name: "deny-ingress-from-monitoring"
    action: "Deny"
    from:
    - namespaces:
        matchLabels:
          kubernetes.io/metadata.name: monitoring
# ...

これは、関係者全員がオーバーライドできない強力な Deny ANP です。制限付きテナントの所有者は、トラフィックの監視を許可する権限を自分自身に付与できません。また、インフラストラクチャーの監視サービスは、これらの機密性の高い namespace から何も収集できません。

強力な 許可の 例と組み合わせると、ブロック監視 ANP の優先度値が低くなり、優先順位が高くなるため、制限付き テナントが監視されることは決してなくなります。

2.1.1.2.3. AdminNetworkPolicy の Pass の例

優先度 7 で定義されている次の ANP は、monitoring namespace から内部インフラストラクチャーテナント (security: internal ラベルを持つ namespace) への Ingress トラフィックをすべて ACL の階層 2 に渡し、トラフィックが namespace の NetworkPolicy オブジェクトによって評価されるようにします。

強力な Pass ANP の YAML ファイルの例

apiVersion: policy.networking.k8s.io/v1alpha1
kind: AdminNetworkPolicy
metadata:
  name: pass-monitoring
spec:
  priority: 7
  subject:
    namespaces:
      matchLabels:
        security: internal
  ingress:
  - name: "pass-ingress-from-monitoring"
    action: "Pass"
    from:
    - namespaces:
        matchLabels:
          kubernetes.io/metadata.name: monitoring
# ...

この例は、テナント所有者によって定義された NetworkPolicy オブジェクトに決定を委譲する強力な Pass アクション ANP です。この pass-monitoring ANP により、internal セキュリティーレベルでグループ化されたすべてのテナント所有者は、インフラストラクチャーの監視サービスによって namespace スコープの NetworkPolicy オブジェクトを使用してメトリクスを収集する必要があるかどうかを選択できます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る