第9章 コンテナーの SELinux ポリシーの作成
udica ツールを使用して、コンテナー向けにカスタマイズされた SELinux ポリシーを生成します。これらのポリシーは、コンテナーがストレージやネットワーク機器などのホストシステムリソースにアクセスする方法を厳密に制御することで、コンテナーのセキュリティーを強化します。
udica を使用すると、セキュリティー違反に対してコンテナーのデプロイメントを強化でき、規制コンプライアンスの実現や維持も簡単になります。
9.1. udica の SELinux ポリシージェネレーターの概要 リンクのコピーリンクがクリップボードにコピーされました!
udica ユーティリティーを使用すると、カスタムコンテナー用の新しい SELinux ポリシーを作成できます。このツールを使用すると、Linux の機能、マウントポイント、ポート定義を含むコンテナーの JSON ファイルを検査して、ポリシーを作成できます。
このツールは、検査結果から生成されたルールと、指定された SELinux 共通中間言語 (CIL) ブロックから継承されたルールを組み合わせます。
udica を使用してコンテナーの SELinux ポリシーを生成するプロセスは、主に 3 つの部分から設定されます。
- JSON 形式のコンテナー仕様ファイルを解析する。
- 最初の部分の結果に基づいて適切な許可ルールを見つける。
- 最終的な SELinux ポリシーを生成する。
解析フェーズでは、udica が Linux 機能、ネットワークポート、およびマウントポイントを探します。
この結果に基づいて、udica はコンテナーに必要な Linux 機能を検出し、これらすべての機能を許可する SELinux ルールを作成します。コンテナーが特定のポートにバインドする場合は、udica が SELinux ユーザー空間ライブラリーを使用して、検査対象のコンテナーが使用するポートの正しい SELinux ラベルを取得します。
その後、udica はホストからコンテナーファイルシステムの名前空間にマウントされているディレクトリーを検出します。
CIL ブロック継承機能により、udica は特定のアクションに焦点を当てた SELinux 許可ルール のテンプレートを作成できます。たとえば、次のようになります。
- ホームディレクトリーへのアクセスを許可する。
- ログファイルへのアクセスを許可する。
- X サーバーとの通信に対するアクセスを許可する。
このようなテンプレートはブロックと呼ばれ、最終的な SELinux ポリシーはブロックをマージして作成されます。