メインコンテンツまでスキップ

ネットワークポリシー

始める前に

このセクションの環境を準備してください:

~$prepare-environment networking/network-policies

デフォルトでは、Kubernetesはすべてのポッドが制限なく自由に通信できるようになっています。Kubernetesネットワークポリシーを使用すると、ポッド、名前空間、IPブロック(CIDRレンジ)間のトラフィックフローに関するルールを定義および適用できます。これらは仮想ファイアウォールとして機能し、ポッドラベル、名前空間、IPアドレス、ポートなどの様々な条件に基づいてイングレス(受信)およびエグレス(送信)ネットワークトラフィックルールを指定することで、クラスターをセグメント化して保護することができます。

以下はネットワークポリシーの例と主要要素の説明です:

~/environment/eks-workshop/modules/networking/network-policies/apply-network-policies/example-network-policy.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default
spec:
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
- Egress
ingress:
- from:
- ipBlock:
cidr: 172.17.0.0/16
except:
- 172.17.1.0/24
- namespaceSelector:
matchLabels:
project: myproject
- podSelector:
matchLabels:
role: frontend
ports:
- protocol: TCP
port: 6379
egress:
- to:
- ipBlock:
cidr: 10.0.0.0/24
ports:
- protocol: TCP
port: 5978
A

他のKubernetesオブジェクトと同様に、metadataでは特定のネットワークポリシーの名前と名前空間を指定できます

B

spec.podSelectorでは、ネットワークポリシーが適用される名前空間内の特定のポッドをラベルに基づいて選択できます。空のポッドセレクタまたはmatchLabelsが指定されている場合、ポリシーはその名前空間内のすべてのポッドに適用されます。

C

spec.policyTypesは、ポリシーをイングレストラフィック、エグレストラフィック、またはその両方に適用するかどうかを指定します。このフィールドを指定しない場合、デフォルトの動作はネットワークポリシーをイングレストラフィックのみに適用することですが、ネットワークポリシーにエグレスセクションがある場合、ネットワークポリシーはイングレスとエグレスの両方のトラフィックに適用されます。

D

ingressでは、選択されたポッドへのトラフィックが許可されるポッド(podSelector)、名前空間(namespaceSelector)、またはCIDRレンジ(ipBlock)と、通信に使用できるポートまたはポート範囲を指定するイングレスルールを設定できます。ポートまたはポート範囲が指定されていない場合、通信にはどのポートも使用できます。

E

egressでは、選択されたポッドからのトラフィックが許可されるポッド(podSelector)、名前空間(namespaceSelector)、またはCIDRレンジ(ipBlock)と、通信に使用できるポートまたはポート範囲を指定するエグレスルールを設定できます。ポートまたはポート範囲が指定されていない場合、通信にはどのポートも使用できます。

Kubernetesネットワークポリシーで許可または制限される機能の詳細については、Kubernetesドキュメントを参照してください。

ネットワークポリシーに加えて、IPv4モードのAmazon VPC CNIは「ポッド用セキュリティグループ」という強力な機能を提供しています。この機能を使用すると、Amazon EC2セキュリティグループを使用して、ノードにデプロイされたポッドとの間の着信および発信ネットワークトラフィックを制御する包括的なルールを定義できます。ポッド用セキュリティグループとネットワークポリシーの機能には重複する部分がありますが、いくつかの重要な違いがあります。

  • セキュリティグループはCIDRレンジへの入出力トラフィックの制御を可能にしますが、ネットワークポリシーはポッド、名前空間、およびCIDRレンジへの入出力トラフィックの制御を可能にします。
  • セキュリティグループは他のセキュリティグループからの入出力トラフィックの制御を可能にしますが、これはネットワークポリシーでは利用できません。

Amazon EKSでは、ポッド間のネットワーク通信を制限し、攻撃対象領域を減らし、潜在的な脆弱性を最小限に抑えるために、セキュリティグループと組み合わせてネットワークポリシーを採用することを強く推奨しています。