Namespace 間の通信を制御する
PFCP では、Namespace をまたぐ通信は以下のポリシーに従い制御されます。
- 異なる組織の Namespace をまたいだ通信は、全て拒否されます。
- 同一組織の Namespace をまたいだ通信は、デフォルトでは全て許可されます。
- 通信を拒否するポリシーを任意に追加できます。PFCP サービス側で拒否されている通信は許可できません。
拒否したい通信のポリシーを追加するには、CiliumNetworkPolicy カスタムリソース1 2を使用します。 CiliumNetworkPolicy を使用した拒否ポリシーを追加する例として、Namespace 外からの内向きの通信を拒否する方法を説明します。
CiliumNetworkPolicyによるNamespace外からの内向き通信の拒否
隔離したい Namespace 内に CiliumNetworkPolicy リソースを作成することで、他の Namespace からの通信を拒否します。本番ワークロードを実行する Namespace において、他の Namespace からのアクセスを禁止したい場合に有用です。
例として、下記のリソースをorg-<組織名>
Namespace に作ると、同一 Namespace 内の通信および org-<組織名>--foo
Namespace からの通信のみ許可されます。
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: "deny-except-org-<組織名>--foo"
namespace: "org-<組織名>"
spec:
endpointSelector: {}
ingressDeny:
- fromEndpoints:
- matchExpressions:
- key: k8s:io.kubernetes.pod.namespace
operator: NotIn
values: ["org-<組織名>", "org-<組織名>--foo"]
spec.ingressDeny
に加えて、spec.egressDeny
も使用できます。特定の宛先への外向きの通信を拒否したい場合は、 spec.egressDeny
をご利用ください。
なお、spec.ingress
およびspec.egress
は使用できません。拒否されている宛先との通信の許可はできません。
サブネームスペース作成時の内向き通信遮断オプションについて
ポータルからサブネームスペースの作成・変更を行う際に、オプションを有効にすることで、他の Namespace からの通信を全て拒否する CiliumNetworkPolicy を作成できます。 本番ワークロードの実行環境など、他の Namespace から通信できない環境を作るときに利用できます。
この CiliumNetworkPolicy は deny-all-ingress
という名前で作成されます。
作成後は、必要に応じて自由に書き換えてポリシーを変更できます。