10.3. selinux RHEL システムロールを使用した SELinux モジュールのデプロイ
デフォルトの SELinux ポリシーがお客様の要件に合わない場合は、カスタムモジュールを作成して、アプリケーションに必要なリソースへのアクセスを許可できます。selinux
RHEL システムロールを使用すると、このプロセスを自動化し、SELinux モジュールをリモートでデプロイできます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。 - デプロイする SELinux モジュールが、Playbook と同じディレクトリーに保存されている。
SELinux モジュールが Common Intermediate Language (CIL) またはポリシーパッケージ (PP) 形式で利用できる。
PP モジュールを使用している場合は、管理対象ノード上の
policydb
バージョンが、PP モジュールのビルドに使用されたバージョン以降であることを確認してください。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。--- - name: Managing SELinux hosts: managed-node-01.example.com tasks: - name: Deploying a SELinux module ansible.builtin.include_role: name: redhat.rhel_system_roles.selinux vars: selinux_modules: - path: <module_file> priority: <value> state: enabled
--- - name: Managing SELinux hosts: managed-node-01.example.com tasks: - name: Deploying a SELinux module ansible.builtin.include_role: name: redhat.rhel_system_roles.selinux vars: selinux_modules: - path: <module_file> priority: <value> state: enabled
Copy to Clipboard Copied! サンプル Playbook で指定されている設定は次のとおりです。
path: <module_file>
- コントロールノード上のモジュールファイルへのパスを設定します。
priority: <value>
-
SELinux モジュールの優先度を設定します。デフォルトは
400
です。 state: <value>
モジュールの状態を定義します。
-
enabled
: モジュールをインストールまたは有効にします。 -
disabled
: モジュールを無効にします。 -
absent
: モジュールを削除します。
-
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.selinux/README.md
ファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied!
検証
SELinux モジュールのリストをリモートで表示し、Playbook で使用したモジュールをフィルタリングします。
ansible managed-node-01.example.com -m shell -a 'semodule -l | grep <module>'
# ansible managed-node-01.example.com -m shell -a 'semodule -l | grep <module>'
Copy to Clipboard Copied! モジュールがリストされている場合、そのモジュールはインストールされ、有効になっています。