Pod セキュリティの Seccomp プロファイルを構成する

このドキュメントでは、Apigee ハイブリッド Pod の Kubernetes Seccomp(セキュア コンピューティング モード)プロファイルを構成して、コンテナが実行できるシステムコール(syscall)を制限することでセキュリティを強化する方法について説明します。

Kubernetes の Seccomp プロファイルについて

Seccomp は、プロセスが実行できるシステムコールを制限する Linux カーネル セキュリティ機能です。Kubernetes と組み合わせて使用すると、Pod の securityContext に Seccomp プロファイルを適用して、コンテナで使用できる syscall を制限できます。これにより、最小権限の原則を適用して、コンテナの攻撃対象領域を縮小し、コンテナ ブレイクアウトや権限昇格のリスクを軽減できます。

Kubernetes の Seccomp の詳細については、Kubernetes ドキュメントのセキュア コンピューティング(Seccomp)をご覧ください。

ハイブリッドでは、Seccomp プロファイルはデフォルトで有効になっていませんoverrides.yaml ファイルに seccompProfile オブジェクトを追加することで、ハイブリッド コンポーネントに Seccomp プロファイルを適用できます。

Seccomp プロファイルの構成

securityContext.seccompProfile 構成ブロックを追加することで、overrides.yaml ファイルで Seccomp プロファイルをグローバルに、環境ごと、またはコンポーネントごとに適用できます。hybrid は、次の Seccomp プロファイル タイプをサポートしています。

  • RuntimeDefault: コンテナ ランタイムで指定されたデフォルトのプロファイル。このオプションは、ほとんどのワークロードとの互換性を維持しながら、妥当なレベルのセキュリティを提供するため、推奨されます。
  • Unconfined: Pod に Seccomp の制限を適用しません。これは最も安全性の低いオプションであるため、慎重に使用する必要があります。

構成の優先度

overrides.yaml では、次のレベルで seccompProfile を設定できます。コンポーネント レベルの設定は環境レベルの設定よりも優先され、環境レベルの設定はグローバル設定よりも優先されます。

  1. コンポーネント レベル: 特定のコンポーネント(runtimecassandra など)に適用されます。
  2. 環境レベル: コンポーネント レベルでオーバーライドされない限り、envs[] 配列で定義された特定の環境内のすべてのコンポーネントに適用されます。
  3. グローバル レベル: 環境レベルまたはコンポーネント レベルでオーバーライドされない限り、クラスタ内のすべてのコンポーネントに適用されます。

グローバル構成

環境レベルまたはコンポーネント レベルのオーバーライドがないすべてのコンポーネントに RuntimeDefault Seccomp プロファイルを適用するには、overrides.yaml の最上位に次の内容を追加します。

securityContext:
  seccompProfile:
    type: RuntimeDefault

環境構成

特定の環境のすべてのコンポーネントに RuntimeDefault Seccomp プロファイルを適用するには、envs[] 要素に構成を追加します。

envs:
  - name: "my-environment"
    securityContext:
      seccompProfile:
        type: RuntimeDefault
    ...

コンポーネント構成

RuntimeDefault Seccomp プロファイルを特定のコンポーネント(ランタイム コンポーネントなど)に適用するには、そのコンポーネントの下に構成を追加します。

runtime:
  securityContext:
    seccompProfile:
      type: RuntimeDefault
...