プロファイル適用性: レベル1
デフォルトでは、コンテナは自身のコンテキスト内でほぼ制限なく実行が許可されています。コンテナ内で実行権限を得たサイバーアクターは、ファイルを作成したり、スクリプトをダウンロードしたり、コンテナ内のアプリケーションを変更したりすることができます。Kubernetesはコンテナのファイルシステムをロックダウンすることで、多くのポストエクスプロイト活動を防ぐことができます。しかし、これらの制限は正当なコンテナアプリケーションにも影響を与え、クラッシュや異常な動作を引き起こす可能性があります。正当なアプリケーションへのダメージを防ぐために、Kubernetes管理者は、アプリケーションが書き込みアクセスを必要とする特定のディレクトリに対して、セカンダリの読み書き可能なファイルシステムをマウントすることができます。
監査
次のコマンドを実行し、各ポッドのコンテナのsecurityContextを確認してください:
kubectl get pods --all-namespaces
各コンテナに
securityContext.readOnlyRootFilesystem
がtrue
に設定されていることを確認してください。修復
containers[].securityContext.readOnlyRootFilesystem
をtrue
に変更します。次の例は、読み取り専用のルートファイルシステムを使用するKubernetesデプロイメントテンプレートです。
securityContext: readOnlyRootFilesystem: true
volumeMounts
とvolumes
を設定する行は、この機能を必要とするアプリケーションのために書き込み可能なボリュームを作成する方法を示しています。apiVersion: apps/v1 kind: Deployment metadata: labels: app: web name: web spec: selector: matchLabels: app: web template: metadata: labels: app: web name: web spec: containers: - command: ["sleep"] args: ["999"] image: ubuntu:latest name: web securityContext: readOnlyRootFilesystem: true volumeMounts: - mountPath: /writeable/location/here name: volName volumes: - emptyDir: {} name: volName