第33章 seccomp を使用したアプリケーション機能の制限
33.1. 概要
seccomp (セキュアコンピューティングモード) は、アプリケーションが行うシステム呼び出しのセットを制限し、クラスター管理者が OpenShift Container Platform で実行されるワークロードのセキュリティーを強化するために使用されます。
seccomp サポートは Pod 設定の 2 つのアノテーションを使用して有効になります。
- seccomp.security.alpha.kubernetes.io/pod: Pod のすべてのコンテナーに適用されるプロファイルです (上書きなし)。
- container.seccomp.security.alpha.kubernetes.io/<container_name>: コンテナー固有のプロファイルです (上書きあり)。
デフォルトで、コンテナーは unconfined seccomp 設定で実行されます。
詳細な設計情報については、seccomp 設計についてのドキュメントを参照してください。
33.2. seccomp の有効化
seccomp は Linux カーネルの 1 つの機能です。seccomp がシステムで有効にされていることを確認するには、以下を実行します。
$ cat /boot/config-`uname -r` | grep CONFIG_SECCOMP= CONFIG_SECCOMP=y
33.3. OpenShift Container Platform での seccomp の設定
seccomp プロファイルは json ファイルであり、システムコールを提供し、システムコールの呼び出し時に取るべき適切なアクションを実行します。
seccomp プロファイルを作成します。
多くの場合はデフォルトのプロファイルだけで十分ですが、クラスター管理者は個別システムのセキュリティー制約を定義する必要があります。
独自のカスタムプロファイルを作成するには、
seccomp-profile-root
ディレクトリーですべてのノードのファイルを作成します。デフォルトの docker/default プロファイルを使用している場合は、これを作成する必要はありません。
node configuration map で kubeletArguments を使用し、プロファイルを保存するために seccomp-profile-root ディレクトリーを使用するようにノードを設定します。
kubeletArguments: seccomp-profile-root: - "/your/path"
変更を適用するためにノードサービスを再起動します。
# systemctl restart atomic-openshift-node
使用できるプロファイルを制御し、デフォルトプロファイルを設定するために、seccompProfiles フィールドで SCC を設定 します。最初のプロファイルがデフォルトとして使用されます。
seccompProfiles フィールドで使用できる形式には以下が含まれます。
- docker/default: コンテナーランタイムのデフォルトプロファイルです (いずれのプロファイルも不要です)。
- unconfined: 拘束のないプロファイルで、seccomp を無効にします。
localhost/<profile-name>: ノードのローカル seccomp プロファイルの root にインストールされるプロファイルです。
たとえば、デフォルトの docker/default プロファイルを使用している場合、以下のように SCC を設定します。
seccompProfiles: - docker/default
33.4. OpenShift Container Platform でのカスタム seccomp プロファイルの設定
クラスターの Pod がカスタムプロファイルで実行されるようにするには、以下を実行します。
- seccomp-profile-root に seccomp プロファイルを作成します。
seccomp-profile-root を設定します。
kubeletArguments: seccomp-profile-root: - "/your/path"
変更を適用するためにノードサービスを再起動します。
# systemctl restart atomic-openshift-node
SCC を設定します。
seccompProfiles: - localhost/<profile-name>