説明
コンテナーの securityContext.privileged: true は通常のセキュリティ制約を緩和し、ホストへの広いアクセスを許可します。Linux ではすべての capability を付与し、seccomp や AppArmor などの保護を回避できる場合があります。
一般のアプリケーションでは特権モードを避けてください。システム処理に必要な場合は通常のワークロードから分離し、アクセスを厳しく制限してください。
想定される影響
- ノードのデバイスやカーネル機能へ過剰にアクセスできる場合があります。
- 一つのアプリケーションの侵害が、ノードや他のワークロードへ波及する可能性があります。
対処方法
securityContext.privilegedを削除するか、falseにしてください。- 可能な限り、必要な機能に限定した capability とデバイスアクセスだけを許可してください。
hostPath、hostNetwork、追加の capability も見直してください。ワークロードのテンプレートに制限を反映し、必要な機能をテストしてください。
例
二つの Pod は設定の比較例です。実際のデプロイで使うイメージとワークロードのテンプレートに合わせて適用してください。
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: privileged-pod
spec:
containers:
- name: app
image: gcr.io/google-samples/node-hello:1.0
securityContext:
privileged: true
コンテナーを特権モードで実行します。
変更後
yaml
apiVersion: v1
kind: Pod
metadata:
name: standard-pod
spec:
containers:
- name: app
image: gcr.io/google-samples/node-hello:1.0
securityContext:
privileged: false
特権モードを無効にしています。実行ユーザーや他の権限も別途制限する必要があります。