NCP を展開するときに、Kubernetes と NSX の両方の環境を保護する必要があります。
指定したノードでのみ実行するように NCP を制限する
NCP は、NSX 管理プレーンにアクセスできるため、指定されたインフラストラクチャ ノードでのみ実行するように制限する必要があります。これらのノードは、適切なラベルを付けて区別することができます。このラベルの nodeSelector を NCP ReplicationController の仕様に適用する必要があります。
nodeSelector: nsx-infra: True
アフィニティなどの他の方法でノードにポッドを割り当てることもできます。詳細については、https://kubernetes.io/docs/concepts/configuration/assign-pod-nodeを参照してください。
Docker Engine を最新の状態にする
Docker は、セキュリティ更新を定期的にリリースしています。これらの更新を自動的に適用する必要があります。
信頼できないコンテナの NET_ADMIN と NET_RAW 機能を許可しない
NET_ADMIN と NET_RAW の Linux 機能は、ポッド ネットワークに侵入した攻撃者によって悪用される可能性があります。信頼されていないコンテナでは、これらの 2 つの機能を無効にする必要があります。デフォルトでは、権限のないコンテナに NET_ADMIN 機能は付与されません。ポッドの仕様でこの機能が明示的に有効になったり、コンテナに特権モードが設定されないように注意してください。信頼されていないコンテナの場合、コンテナの仕様で SecurityContext 構成の削除機能リストに NET_RAW を指定し、NET_RAW を無効にします。次はその例です。
securityContext: capabilities: drop: - NET_RAW - ...
ロールベースのアクセス コントロール
Kubernetes は、ロールベースのアクセス コントロール (RBAC) API を使用して認証を処理します。管理者はポリシーを動的に構成することができます。詳細については、RBAC のドキュメントを参照してください。
通常、特権アクセスとロールが付与されているのはクラスタ管理者だけです。ユーザー アカウントとサービス アカウントの場合には、アクセス権を付与するときに、最小限の権限を付与する必要があります。
推奨のガイドラインは次のとおりです。
- Kubernetes API トークンを必要とするポッドにのみトークンへのアクセスを許可します。
- NCP ConfigMap と NSX API クライアント証明書の TLS Secret へのアクセスを NCP ポッドに限定します。
- このようなアクセスを必要としないポッドから Kubernetes ネットワーク API へのアクセスをブロックします。
- Kubernetes RBAC ポリシーを追加し、Kubernetes API にアクセスできるポッドを指定します。
推奨の RBAC ポリシーがすでに NCP YAML ファイルに含まれています。このポリシーは NCP のインストール時に有効になります。