第10章 seccomp プロファイルの設定

OpenShift Container Platform コンテナーまたは Pod は、1 つ以上の明確に定義されたタスクを実行するアプリケーションを 1 つ実行します。アプリケーションには通常、基礎となるオペレーティングシステムカーネル API の小規模なサブセットのみが必要です。seccomp のセキュアコンピューティングモードは Linux カーネル機能で、これを使用して、コンテナーで実行されているプロセスを制限して、利用可能なシステム呼び出しのサブセットだけが呼び出されるようにできます。これらのシステム呼び出しは、コンテナーまたは Pod に適用されるプロファイルを作成して設定できます。seccomp プロファイルは、ディスクに JSON ファイルとして保存されます。

重要

seccomp プロファイルが適用されていない場合は、OpenShift ワークロードはデフォルトでは制限なしに実行されます。

重要

seccomp プロファイルは特権付きコンテナーに適用できません。

10.1. すべての Pod のデフォルトの seccomp プロファイルを有効にする

OpenShift Container Platform には、デフォルトの seccomp プロファイルが同梱されており、runtime/default として参照されます。カスタムセキュリティーコンテキスト制約 (SCC) を作成することで、Pod またはコンテナーワークロードのデフォルトの seccomp プロファイルを有効にすることができます。

注記

カスタム SCC を作成する必要があります。デフォルトの SCC は編集しないでください。デフォルトの SCC を編集すると、プラットフォームの Pod をデプロイ時または OpenShift Container Platform のアップグレード時に問題が発生する可能性があります。詳細は、「デフォルトのセキュリティーコンテキストの制約」セクションを参照してください。

以下の手順に従って、すべての Pod に対してデフォルトの seccomp プロファイルを有効にします。

  1. 使用可能な restricted SCC を yaml ファイルにエクスポートします。

    $ oc get scc restricted -o yaml > restricted-seccomp.yaml
  2. 作成された restricted SCC yaml ファイルを編集します。

    $ vi restricted-seccomp.yaml
  3. 次の例に示すように更新します。

    kind: SecurityContextConstraints
    metadata:
      name: restricted  1
    <..snip..>
    seccompProfiles:    2
    - runtime/default   3
    1
    restricted-seccomp に変更します。
    2
    seccompProfiles を追加します。
    3
    - runtime/default を追加します。
  4. カスタム SCC を作成します。

    $ oc create -f restricted-seccomp.yaml

    予想される出力

    securitycontextconstraints.security.openshift.io/restricted-seccomp created

  5. カスタム SCC を ServiceAccount に追加します。

    $ oc adm policy add-scc-to-user restricted-seccomp -z default
    注記

    デフォルトのサービスアカウントは、ユーザーが別のアカウントを設定しない限り適用される ServiceAccount です。OpenShift Container Platform は、SCC の情報に基づいて Pod の seccomp プロファイルを設定します。

    予想される出力

    clusterrole.rbac.authorization.k8s.io/system:openshift:scc:restricted-seccomp added: "default"

OpenShift Container Platform 4.9 では、pod アノテーション seccomp.security.alpha.kubernetes.io/pod: runtime/default および container.seccomp.security.alpha.kubernetes.io/<container_name>: runtime/default を追加する機能は非推奨です。