3.5.4.2. コントロールプレーン Pod の分離
各 Hosted Control Plane Pod は、ネットワークポリシーに加えて、restricted セキュリティーコンテキスト制約を使用して実行されます。このポリシーは、すべてのホスト機能へのアクセスを拒否し、お客様のコントロールプレーンをホストする各 namespace に一意に割り当てられた UID と SELinux コンテキストを使用して Pod を実行することを要求します。
このポリシーにより、次の制約が確実に実行されます。
- Pod は特権付き Pod として実行できません。
- Pod はホストディレクトリーボリュームをマウントできません。
- Pod は、事前に割り当てられた UID の範囲内のユーザーとして実行する必要があります。
- Pod は、事前に割り当てられた MCS ラベルを使用して実行する必要があります。
- Pod はホストネットワークの namespace にアクセスできません。
- Pod はホストネットワークのポートを公開できません。
- Pod はホストの PID namespace にアクセスできません。
-
Pod はデフォルトで Linux ケイパビリティー
KILL、MKNOD、SETUID、およびSETGIDをドロップします。
各管理クラスターのワーカーノード上の管理コンポーネント (kubelet や crio など) は、Hosted Control Plane を支える Pod の SELinux コンテキストからアクセスできない SELinux ラベルによって保護されます。
主要なプロセスとソケットには、次の SELinux ラベルが使用されます。
-
kubelet:
system_u:system_r:unconfined_service_t:s0 -
crio:
system_u:system_r:container_runtime_t:s0 -
crio.sock:
system_u:object_r:container_var_run_t:s0 -
<example user container processes>:
system_u:system_r:container_t:s0:c14,c24