説明
コンテナーの securityContext.capabilities.drop に NET_RAW または ALL がないと、raw ネットワークの capability が残る場合があります。一般的なアプリケーションでは不要なことが多い権限です。
ポリシーだけでなく、個々のワークロードでも不要な capability を削除してください。実際の保護にはポリシーとワークロード設定を合わせる必要があります。
想定される影響
- コンテナーが raw ネットワーク機能を使える場合があります。
- 不要なネットワークスキャンやパケット操作が可能になる場合があります。
- アプリケーション侵害後に、攻撃者が強いネットワーク権限を利用するおそれがあります。
対処方法
- コンテナーの
capabilities.dropにALL、または少なくともNET_RAWを追加してください。 - 必要な capability だけを
addで許可し、NET_RAWを再追加していないか確認してください。 - 権限昇格と capability 設定を合わせて確認し、Pod Security Admission やポリシーエンジンで基準を適用してください。
例
Linux Pod の例です。NET_BIND_SERVICE はアプリケーションが実際に必要とする場合だけ追加してください。
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: example
spec:
containers:
- name: payment
image: nginx
securityContext:
capabilities:
drop:
- SYS_ADMIN
変更後
yaml
apiVersion: v1
kind: Pod
metadata:
name: example
spec:
containers:
- name: payment
image: nginx
securityContext:
capabilities:
drop:
- ALL
add:
- NET_BIND_SERVICE
補足:
- 変更前: SYS_ADMIN だけを削除しているため、raw ネットワーク権限が残る場合があります。
- 変更後: ALL を削除してから NET_BIND_SERVICE だけを追加します。必要な権限と正常動作を確認してください。