説明
Seccomp はコンテナーが使えるシステムコールを制限します。実際に適用されるプロファイルがない場合や Unconfined の場合、より広いシステムコールを使える可能性があります。
一般的なワークロードでは securityContext.seccompProfile.type: RuntimeDefault を検討してください。Pod 設定、コンテナーによる上書き、ノードのデフォルト値を合わせて確認する必要があります。ノードで SeccompDefault が有効なら、項目を省略してもランタイムのデフォルトが適用される場合があります。
想定される影響
- コンテナー侵害後に、より多くのシステムコールが悪用されるおそれがあります。
- ランタイムの分離が弱くなる場合があります。
- ワークロードごとの基準が不統一になり、セキュリティ管理が難しくなります。
対処方法
- Pod またはコンテナーの
securityContext.seccompProfileにRuntimeDefaultを指定し、実際の適用を確認してください。 - 特別な要件には確認済みの
Localhostプロファイルを対象ノードに配置し、正常動作をテストしてください。 - 古い annotation ではなく現在のフィールドを使ってください。privileged コンテナーは Seccomp の制限を回避するため、不要な特権も別途削除してください。
例
最初の例の annotation キーは、対応する Seccomp 設定ではありません。イメージ名は例なので、実際のアプリケーションイメージでプロファイルの互換性をテストしてください。
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-test-3
annotations:
seccomp.security.alpha.kubernetes.io/defaultProfileName: "rntim/dfl"
spec:
containers:
- name: foobar
image: foo/bar:latest
変更後
yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-test-1
spec:
securityContext:
seccompProfile:
type: RuntimeDefault
containers:
- name: foobar
image: foo/bar:latest
補足:
- 変更前: 非対応の annotation キーと誤記のある値では、意図したプロファイルは適用されません。実際の適用状態とノードのデフォルトを確認してください。
- 変更後: 現在の Pod securityContext フィールドでランタイムのデフォルトプロファイルを指定します。コンテナー設定による上書きがないかも確認してください。