特権コンテナの検出

特権モードまたは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ベンチマークや多くの組織のセキュリティポリシーへの準拠に必要。

試してみる — K8s Manifest Validator

フルツールを開く