第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 プロファイルを有効にします。
使用可能な
restricted
SCC を yaml ファイルにエクスポートします。$ oc get scc restricted -o yaml > restricted-seccomp.yaml
作成された
restricted
SCC yaml ファイルを編集します。$ vi restricted-seccomp.yaml
次の例に示すように更新します。
kind: SecurityContextConstraints metadata: name: restricted 1 <..snip..> seccompProfiles: 2 - runtime/default 3
カスタム SCC を作成します。
$ oc create -f restricted-seccomp.yaml
予想される出力
securitycontextconstraints.security.openshift.io/restricted-seccomp created
カスタム 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.7 では、Pod アノテーション seccomp.security.alpha.kubernetes.io/pod: runtime/default
および container.seccomp.security.alpha.kubernetes.io/<container_name>: runtime/default
を追加する機能は非推奨となりました。