特権コンテナの検出
特権モードまたはrootユーザーで実行されるコンテナを検出します。特権コンテナはホストへの完全なアクセス権を持ち、重大なセキュリティリスクを生じます。
Security
詳細な説明
特権コンテナの危険性
特権コンテナはホストシステムへのほぼ無制限のアクセス権を持ちます。すべてのデバイスにアクセスし、ホストネットワーク設定を変更し、コンテナの分離を逃れることができます。root(ユーザーID 0)として実行するとリスクがさらに増大します。
セキュリティ問題のある例
apiVersion: apps/v1
kind: Deployment
metadata:
name: risky-app
spec:
replicas: 1
selector:
matchLabels:
app: risky
template:
metadata:
labels:
app: risky
spec:
containers:
- name: app
image: myapp:1.0
securityContext:
privileged: true
runAsUser: 0
バリデーターが検出する問題
- エラー: コンテナ 'app' が特権モードで実行されています。セキュリティリスクです。
- 警告: コンテナ 'app' が明示的にrootとして実行されています(runAsUser: 0)。
- 警告: PodレベルでsecurityContext.runAsNonRootが設定されていません。
セキュリティコンテキストのベストプラクティス
spec:
securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 2000
containers:
- name: app
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL
リスクマトリクス
| 設定 | リスクレベル | 影響 |
|---|---|---|
privileged: true |
重大 | 完全なホストアクセス、コンテナエスケープ |
runAsUser: 0 |
高 | コンテナ内のroot、潜在的なホストroot |
runAsNonRootなし |
中 | イメージのデフォルトユーザーに依存 |
allowPrivilegeEscalation: true |
中 | プロセスがより多くの権限を取得可能 |
ほとんどのワークロードは特権アクセスを必要としません。コンテナが特定の機能(例:ポート80へのバインド)を必要とする場合、特権モードの代わりにcapabilities.addを使用してください。
ユースケース
コンテナが昇格した権限で実行されていないことを確認するためのKubernetesマニフェストのセキュリティ監査。CIS Kubernetesベンチマークや多くの組織のセキュリティポリシーへの準拠に必要。