プロファイル適用性: レベル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
