7.7. SELinux プロファイルの管理
SELinux プロファイルを作成および管理し、それらをワークロードにバインドします。
Security Profiles Operator は、Red Hat Enterprise Linux CoreOS (RHCOS) ワーカーノードのみをサポートします。Red Hat Enterprise Linux (RHEL) ノードはサポートされていません。
7.7.1. SELinux プロファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
SelinuxProfile オブジェクトを使用してプロファイルを作成します。
SelinuxProfile オブジェクトには、セキュリティー強化と読みやすさを向上させるいくつかの機能があります。
-
継承するプロファイルを現在の namespace またはシステム全体のプロファイルに制限します。通常、システムには多くのプロファイルがインストールされていますが、クラスターワークロードではサブセットのみを使用する必要があるため、継承可能なシステムプロファイルは、
spec.selinuxOptions.allowedSystemProfilesのspodインスタンスにリストされています。 - 権限、クラス、およびラベルの基本的な検証を実行します。
-
ポリシーを使用するプロセスを説明する新しいキーワード
@selfを追加します。これにより、ポリシーの使用は名前と namespace に基づいているため、ワークロードと namespace の間でポリシーを簡単に再利用できます。 - SELinux CIL 言語で直接プロファイルを作成する場合と比較して、セキュリティーを強化し、読みやすくするための機能を追加します。
手順
次のコマンドを実行してプロジェクトを作成します。
$ oc new-project nginx-deploy次の
SelinuxProfileオブジェクトを作成して、特権のないワークロードで使用できるポリシーを作成します。apiVersion: security-profiles-operator.x-k8s.io/v1alpha2 kind: SelinuxProfile metadata: name: nginx-secure spec: allow: '@self': tcp_socket: - listen http_cache_port_t: tcp_socket: - name_bind node_t: tcp_socket: - node_bind inherit: - kind: System name: container次のコマンドを実行して、
selinuxdがポリシーをインストールするのを待ちます。$ oc wait --for=condition=ready selinuxprofile nginx-secure出力例
selinuxprofile.security-profiles-operator.x-k8s.io/nginx-secure condition metポリシーは、Security Profiles Operator が所有するコンテナー内の
emptyDirに配置されます。ポリシーは Common Intermediate Language (CIL) 形式で/etc/selinux.d/<name>_<namespace>.cilに保存されます。以下のコマンドを実行して Pod を作成します。
$ oc -n openshift-security-profiles rsh -c selinuxd ds/spod
検証
次のコマンドを実行して、
catでファイルの内容を表示します。$ cat /etc/selinux.d/nginx-secure.cil出力例
(block nginx-secure (blockinherit container) (allow process nginx-secure.process ( tcp_socket ( listen ))) (allow process http_cache_port_t ( tcp_socket ( name_bind ))) (allow process node_t ( tcp_socket ( node_bind ))) )次のコマンドを実行して、ポリシーがインストールされていることを確認します。
$ semodule -l | grep nginx-secure出力例
nginx-secure