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 という名前で作成されます。
作成後は、必要に応じて自由に書き換えてポリシーを変更できます。