5.3. セキュリティーポリシーの作成と変更
設定ルールを適用してリスクを最小限に抑えるために、RHACS ポータルでカスタムセキュリティーポリシーを作成します。非準拠のイメージやワークロードを検出してブロックするための詳細な基準、ライフサイクルステージ、および自動適用のオプションを定義します。これらのポリシーを使用することで、ビルド、デプロイ、およびランタイムの各フェーズ全体にわたって一貫したセキュリティー基準を維持きます。
5.3.1. システムポリシービューからのセキュリティーポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
RHACS ポータルで新しいセキュリティーポリシーを定義し、環境でセキュリティールールを適用してください。Policy Management 画面に移動して新しいポリシーを作成し、必要な定義情報を入力してください。Platform Configuration
手順
-
RHACS ポータルで、Platform Configuration
Policy Management に移動します。 - Create policy をクリックします。
- 以下のセクションでポリシー定義情報を設定します。
5.3.1.1. ポリシーの詳細の入力 リンクのコピーリンクがクリップボードにコピーされました!
正確な脅威の分類を実現するために、カスタムセキュリティーポリシーのコア属性を設定します。違反の重大度を割り当て、ポリシー違反を効果的に解決するための明確な修復ガイダンスを提供します。さらに、潜在的なセキュリティーリスクのコンテキストを明確にするために、MITRE ATT&CK の戦術と手法を指定します。
手順
- ポリシーの Name を入力します。ポリシーの名前は 5 - 128 文字までで、改行やドル記号を含めることはできません。
- ポリシーの Severity レベルを選択します。
- Select categories リストから、ポリシーのカテゴリーを選択します。ポリシーには、1 つまたは複数のカテゴリーを選択できます。
- Description フィールドにポリシーの詳細を入力します。
- Rationale フィールドにポリシーが存在する理由の説明を入力します。
- Guidance フィールドにポリシーの違反を解決するための手順を入力します。
ポリシーに指定する 戦術と手法 を選択します。
- Add tactic リストから戦術を選択します。
- Add technique リストから、戦術の手法を選択します。戦術には、1 つまたは複数の手法を指定できます。
- Next をクリックします。
5.3.1.2. ポリシーライフサイクルステージの選択 リンクのコピーリンクがクリップボードにコピーされました!
RHACS がポリシーを評価するタイミングを、特定のライフサイクルステージを割り当てることで定義します。これらの特定のフェーズをターゲットにすることで、継続的インテグレーション (CI) プロセス中にイメージを検査したり、稼働中のノード上のワークロードアクティビティーを監視したりして、適切なタイミングで確実に適用アクションを実行させることができます。
詳細は、「RHACS ポリシー評価エンジンについて」を参照してください。
手順
ポリシーの Lifecycle stages を選択します。
ライフサイクルステージに関連するオプションは以下のとおりです。
- ビルド
- このステージのポリシーでは、イメージレジストリー、コンテンツ、脆弱性データ、スキャンプロセスなどのイメージ基準を検査します。これらのポリシーは、ビルドプロセス中に CI パイプラインによって評価されます。適用を有効にすると、ポリシー違反が発生した場合にビルドが失敗します。RHACS はこのステージの違反情報を保存しません。
- デプロイ
- このステージのポリシーでは、ワークロード設定とそのイメージを検査します。RHACS は、ユーザーがワークロードリソースを作成または更新する際にこれらのポリシーを評価し、定期的に、または必要に応じてポリシーを再評価します。適用を有効にすると、ポリシー違反が発生した場合に、アドミッションコントローラーがデプロイメントまたは更新の試行を拒否するか、ワークロードのレプリカ数をゼロにスケーリングします。
- ビルドおよびデプロイ
- ビルドパイプラインとワークロードアドミッションの両方でポリシーによってイメージを検査し、どちらか一方または両方のステージで適用を実行する場合は、このステージを選択します。
- ランタイム
このステージのポリシーでは、以下のイベントソースに関連付けられたワークロードアクティビティーまたは Kubernetes リソース操作を検査します。
- デプロイメント
- ワークロードのアクティビティーに対してランタイムポリシーを使用するには、少なくとも 1 つのワークロードアクティビティー基準を含める必要があります。ワークロードアクティビティー基準は、イメージ基準またはワークロード設定基準と組み合わせることができます。適用を有効にすると、RHACS は違反している Pod を終了させます。その後、オーケストレーターが Pod を再作成します。
- 監査ログ
- Kubernetes リソースの操作を評価するランタイムポリシーは、Kubernetes の監査ログを使用して機密性の高い操作を検出します。このソースを使用するポリシーについては、すでに操作が実行されているため、適用を設定することができません。
- ノード
- Kubernetes ノードのホストオペレーティングシステム上のファイルアクティビティーを監視するランタイムポリシー。このポリシーは、ホスト上の実際のファイルパスを使用することで、機密性の高いシステムファイルへの変更など、不正なファイル操作を検出します。このイベントソースを使用するポリシーは、RHACS コンソールでの自動適用や除外をサポートしていません。
- Next をクリックします。
5.3.1.3. ポリシールールの設定 リンクのコピーリンクがクリップボードにコピーされました!
ポリシーがトリガーされるタイミングを制御するには、ご使用の環境に合わせた具体的な条件やルールを設定します。これらのルールは、ネットワークやワークロードアクティビティーなどのポリシーフィールドをドラッグアンドドロップし、ビルドやランタイムのライフサイクルステージに適した基準を定義することでカスタマイズできます。
手順
-
ポリシーをトリガーする条件を設定します。ルールのタイトルを編集できます。たとえば、
Rule 1をよりわかりやすいものに変更できます。 各ルールについて、ポリシーフィールドをクリックしてポリシーセクションにドラッグし、ポリシーフィールドまたは基準を追加します。
注記利用可能なポリシーフィールドは、ポリシーに選択したライフサイクルステージによって異なります。たとえば、Networking または Workload activity に関連する基準は、ランタイムライフサイクルのポリシーを作成する際には利用できますが、ビルドライフサイクルのポリシーを作成する際には利用できません。ポリシー基準の詳細 (基準や、それらが利用可能なライフサイクルフェーズに関する情報など) は、「ポリシー基準」を参照してください。
フィールドごとに、フィールドに固有のオプションから選択できます。これらはフィールドの種類によって異なります。以下に例を示します。
- 文字列の値の場合、デフォルトの動作はポリシーフィールドにマッチさせることです。マッチさせない場合は、Not チェックボックスを選択します。
-
一部のフィールドには、
trueまたはfalseのいずれかの値が含まれています。 - 一部のフィールドでは、ドロップダウンリストから値を選択する必要があります。
-
Read-Only Root Filesystemなどのブール値を持つ属性を選択した場合は、READ-ONLYおよびWRITABLEオプションを使用できます。 Environment variableなどの複合値を持つ属性を選択した場合は、Key、Value、Value Fromフィールドに値を入力し、アイコンをクリックして使用可能なオプションにさらに値を追加できます。注記ポリシー基準に使用できる値の詳細は、「ポリシー基準」を参照してください。
- 属性に複数の値を組み合わせるには、Add value of policy field アイコンをクリックします。
- オプション: ルールを追加するには、Add a new rule をクリックします。
- Next をクリックします。
5.3.1.4. ポリシースコープの設定 リンクのコピーリンクがクリップボードにコピーされました!
監視対象とする環境内の特定のリソースを制御するために、ポリシースコープを定義します。ポリシーを特定のクラスターや namespace に限定したり、デプロイメントやイメージを除外したりできます。ポリシースコープを設定することで、関連するリソースに対してのみ、ポリシーに違反をトリガーさせることができます。
手順
スコープを作成して、ポリシーを制限または環境内のエンティティーから除外します。
注記ノードイベントソースはスコープをサポートしていません。
- Restrict by scope
- この設定は、特定のクラスター、namespace、またはデプロイメントラベルにポリシーを適用するために使用します。1 つ以上のスコープを追加できるほか、namespace やラベルに RE2 構文 の正規表現を使用することもできます。
- Exclude by scope
特定のデプロイメント、クラスター、namespace、およびデプロイメントラベルをポリシーから除外します。ポリシーは、選択したエンティティーには適用されません。1 つ以上のスコープを追加できるほか、namespace やラベルに RE2 構文 の正規表現を使用することもできます。
注記この機能は、デプロイおよびランタイムライフサイクルステージ用に設定されたポリシーでのみ使用できます。
- Exclude images
ビルドライフサイクルステージ用に設定されたポリシーの場合、ポリシーからイメージを除外できます。違反をトリガーしたくないイメージを選択します。
注記Excluded Images 設定は、継続的インテグレーションシステムにおいて、ビルド ライフサイクルステージでイメージをチェックする場合にのみ適用されます。このポリシーを使用して、デプロイ ライフサイクルステージで実行中のデプロイメントをチェックする場合、または ランタイム ライフサイクルステージでランタイムアクティビティーをチェックする場合は、効果がありません。
- Next をクリックします。
5.3.1.5. ポリシーの有効化 リンクのコピーリンクがクリップボードにコピーされました!
ポリシーを有効化することで、設定したルールを環境に適用します。ポリシーを有効にしてこれらの設定を適用することも、ポリシーを無効にして適用を停止することもできます。
手順
ポリシーを有効にするか無効にするかを選択します。
- ポリシーを有効にするには、Enable を選択します。
- ポリシーを無効にするには、Disable を選択します。
5.3.1.6. ポリシー適用の設定 リンクのコピーリンクがクリップボードにコピーされました!
セキュリティー違反に効果的に対処するために、ビルド、デプロイ、およびランタイムライフサイクル全体にわたって特定の適用動作を適用するように RHACS を設定します。設定を調整することで、違反に関するアラートを受信したり、準拠していないイメージやワークロードを自動的にブロックして、それらが環境に侵入するのを阻止したりできます。このような制御を実装することで、クラスターのセキュリティーと定義したポリシーへの準拠が確保されます。
手順
ポリシー違反に対処する方法を選択します。
注記ノードイベントソースの場合、適用は利用できません。
- Inform
- 違反を違反リストに追加します。
- Inform and enforce
- 違反を違反リストに追加し、設定済みのアクションを実行します。このオプションを選択した場合は、適切なライフサイクルの切り替えを使用して適用の動作を選択する必要があります。
ポリシー適用を選択した場合は、適用の動作を設定します。選択できる適用動作は、ポリシー定義の Lifecycle セクションでポリシーに対して選択したライフサイクルステージによって異なります。
ライフサイクルステージに応じて、以下の適用動作を利用できます。
- ビルド
-
イメージがポリシーの基準に一致する場合に、RHACS に継続的インテグレーション (CI) ビルドを失敗させるには、Enforce on Build をオンに設定します。
roxctlCLI をダウンロードし、roxctl image checkコマンドがそのポリシーと連携して動作するように設定できます。 - デプロイ
ポリシーの基準に一致するワークロードのアドミッションまたは更新を RHACS にブロックさせるには、Enforce on Deploy をオンに設定します。この適用を有効にするには、RHACS アドミッションコントローラーを設定して実行する必要があります。
- アドミッションコントローラーによる適用があるクラスターでは、Kubernetes または OpenShift Container Platform API サーバーが、すべての非準拠のデプロイメントをブロックします。アドミッションコントローラーによる適用がないクラスターでは、RHACS は非準拠のデプロイメントを修正して、Pod のスケジューリングを防止します。
- 既存のデプロイメントに対しては、ポリシーを変更しても、次に Kubernetes イベントが発生してその基準が検出された時にのみ、適用が実行されます。適用に関する詳細は、「デプロイステージでの適用」を参照してください。
- ランタイム
Pod 内のイベントがポリシーの基準に一致した場合に、RHACS にすべての Pod を削除させるには、Enforce on Runtime をオンに設定します。
警告ポリシー適用は、実行中のアプリケーションや開発プロセスに影響を与える可能性があります。適用オプションを有効にする前に、すべての関係者に通知し、自動適用アクションへの対応方法を計画してください。
5.3.1.7. ポリシー通知機能の選択 リンクのコピーリンクがクリップボードにコピーされました!
ポリシー違反が発生した際に、メールまたは外部ツールでアラートを受信するには、利用可能なリストから通知機能を選択します。この連携機能により、違反が発生した場合に即座に通知されるため、迅速に対応できます。
前提条件
-
通知機能が設定済みであり、リストに表示され、選択できるようになっている。この連携設定は、Platform Configuration
Integrations ページの Notifier Integrations セクションで行います。
手順
- ポリシー違反が発生した際に RHACS が通知に使用する通知機能を 1 つ以上選択します。
- Next をクリックします。
5.3.1.8. ポリシーの確認と違反のプレビュー リンクのコピーリンクがクリップボードにコピーされました!
ポリシーが正しく機能していることを確認するには、設定オプションを確認し、Preview policy violations パネルで潜在的な違反を調べます。変更を保存する前に、ビルドおよびデプロイフェーズの結果を検証して、ポリシーの正確性を確認してください。
手順
- ポリシー設定が正しいオプションで設定されていることを確認します。
Preview policy violations パネルで結果を表示し、ポリシーが機能していることを確認します。このパネルには、ビルドフェーズまたはデプロイフェーズのデプロイメントにポリシー違反があるかどうかなどの追加情報が提供されます。
注記ランタイムの違反は、将来イベントが発生した際に生成されるため、このプレビューには表示されません。
ポリシーを保存する前に、違反が正確であるかどうかを確認してください。
- Save をクリックします。
5.3.1.9. ファイルアクティビティーポリシーの検証 リンクのコピーリンクがクリップボードにコピーされました!
監視対象コンポーネントで意図的に違反を発生させることで、ファイルアクティビティーポリシーが正しく機能していることを検証できます。
前提条件
- Deployment または Node イベントソースに対して、ファイルアクティビティーポリシーを設定した。
- ポリシーによって監視されている具体的なファイルと操作を特定した。
- 監視対象のノードまたはデプロイメントのコマンドラインインターフェイスにアクセスできる。
手順
監視対象のノードまたはデプロイメントでファイルアクティビティー違反をトリガーするには、次のコマンドを実行します。以下に例を示します。
$ touch /etc/passwd適切な方法を選択し、アラートが表示されていることを確認します。
デプロイメント用ポリシーの場合は、以下の手順を実行します。
- RHACS ポータルで、Violations をクリックします。
- アラートがリストに表示されていることを確認します。
ノードポリシーの場合は、通知機能がアラートを受信していることを検証するか、alerts API にクエリーを実行して違反に関する JSON データを探します。
注記ノードの違反は RHACS ポータルに表示されません。この種のアラートを表示するには、API または設定済みの通知機能を使用してください。