Seccomp プロファイル設定の確認

有効な Seccomp プロファイルで不要なシステムコールを制限してください。

説明

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 フィールドでランタイムのデフォルトプロファイルを指定します。コンテナー設定による上書きがないかも確認してください。

参考資料