13.2. カスタム seccomp プロファイルの設定
カスタム seccomp プロファイルを設定すると、アプリケーション要件に基づいてフィルターを更新できます。これにより、クラスター管理者は OpenShift Container Platform で実行されるワークロードのセキュリティーをより詳細に制御できます。
Seccomp セキュリティープロファイルには、プロセスが実行できるシステムコール (syscall) がリストされています。権限は、write
などの操作をシステム全体で制限する SELinux よりも広範です。
13.2.1. seccomp プロファイルの作成
MachineConfig
オブジェクトを使用してプロファイルを作成できます。
Seccomp は、コンテナー内のシステムコール (syscall) を制限して、アプリケーションのアクセスを制限できます。
前提条件
- クラスター管理者パーミッションがある。
- カスタム Security Context Constraints (SCC) を作成している。詳細は、関連情報 を参照してください。
手順
MachineConfig
オブジェクトを作成します。apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: worker name: custom-seccomp spec: config: ignition: version: 3.2.0 storage: files: - contents: source: data:text/plain;charset=utf-8;base64,<hash> filesystem: root mode: 0644 path: /var/lib/kubelet/seccomp/seccomp-nostat.json
13.2.2. カスタム seccomp プロファイルのセットアップ
前提条件
- クラスター管理者パーミッションがある。
- カスタム Security Context Constraints (SCC) を作成している。詳細は、「関連情報」を参照してください。
- カスタム seccomp プロファイルを作成している。
手順
-
Machine Config を使用してカスタム seccomp プロファイルを
/var/lib/kubelet/seccomp/<custom-name>.json
にアップロードします。詳細な手順は、「関連情報」を参照してください。 作成されたカスタム seccomp プロファイルへの参照を指定してカスタム SCC を更新します。
seccompProfiles: - localhost/<custom-name>.json 1
- 1
- カスタム seccomp プロファイルの名前を入力します。
13.2.3. カスタム seccomp プロファイルのワークロードへの適用
前提条件
- クラスター管理者はカスタム seccomp プロファイルを設定している。詳細は、「カスタム seccomp プロファイルの設定」を参照してください。
手順
securityContext.seccompProfile.type
フィールドを次のように設定して、seccomp プロファイルをワークロードに適用します。例
spec: securityContext: seccompProfile: type: Localhost localhostProfile: <custom-name>.json 1
- 1
- カスタム seccomp プロファイルの名前を入力します。
または、Pod アノテーション
seccomp.security.alpha.kubernetes.io/pod: localhost/<custom-name>.json
を使用できます。ただし、この手法は OpenShift Container Platform 4.16 では非推奨になっています。
デプロイメント時に、受付コントローラーは以下を検証します。
- 現在の SCC に対するアノテーションがユーザーロールで許可されている。
- seccomp プロファイルを含む SCC が Pod で許可されている。
SCC が Pod で許可される場合には、kubelet は指定された seccomp プロファイルで Pod を実行します。
seccomp プロファイルがすべてのワーカーノードにデプロイされていることを確認します。
カスタム SCC は、Pod に適切な優先順位で自動的に割り当てられるか、CAP_NET_ADMIN を許可するなど、Pod で必要な他の条件を満たす必要があります。