第9章 コンテナーの SELinux ポリシーの作成
Red Hat Enterprise Linux 8 には、udica
パッケージを使用して、コンテナーの SELinux ポリシーを生成するツールが同梱されています。udica
を使用すると、最適なセキュリティーポリシーを作成して、ストレージ、デバイス、ネットワークなどのホストシステムリソースにコンテナーがアクセスする方法を制御できます。これにより、セキュリティー違反に対してコンテナーのデプロイメントを強化でき、規制コンプライアンスの実現や維持も簡単になります。
9.1. udica の SELinux ポリシージェネレーターの概要
カスタムコンテナーの SELinux ポリシーの新規作成を簡素化するために、RHEL 8 には udica
ユーティリティーが用意されています。このツールを使用して、Linux の機能、マウントポイント、およびポート定義を含むコンテナーの JavaScript Object Notation (JSON) ファイルの検査に基づいてポリシーを作成できます。したがって、ツールは、検査の結果を使用して生成されたルールと、指定された SELinux Common Intermediate Language (CIL) ブロックから継承されたルールを組み合わせます。
udica
を使用してコンテナーの SELinux ポリシーを生成するプロセスには、以下の 3 つの主要な部分があります。
- JSON 形式のコンテナー仕様ファイルを解析する。
- 最初の部分の結果に基づいて適切な許可ルールを見つける。
- 最終的な SELinux ポリシーを生成する。
解析フェーズでは、udica
が Linux 機能、ネットワークポート、およびマウントポイントを探します。
この結果に基づいて、udica
はコンテナーに必要な Linux 機能を検出し、これらすべての機能を許可する SELinux ルールを作成します。コンテナーが特定のポートにバインドする場合は、udica
が SELinux ユーザー空間ライブラリーを使用して、検査対象のコンテナーが使用するポートの正しい SELinux ラベルを取得します。
その後、udica
は、どのディレクトリーがホストからコンテナーのファイルシステムのネームスペースにマウントされているかを検出します。
CIL のブロック継承機能により、udica
は SELinux のテンプレートを作成でき、特定のアクションに焦点を当てた ルール を許可します。次に例を示します。
- ホームディレクトリーへのアクセスを許可する。
- ログファイルへのアクセスを許可する。
- Xserver との通信へのアクセスを許可する。
このようなテンプレートはブロックと呼ばれ、最終的な SELinux ポリシーはブロックをマージして作成されます。
関連情報
- Red Hat ブログ記事 Generate SELinux policies for containers with udica