5.3. セキュリティーポリシーの作成と変更
Red Hat Advanced Cluster Security for Kubernetes (RHACS) では、RHACS ポータルを使用してポリシーを作成したり、ポリシーを Kubernetes カスタムリソース (CR) として保存し、Argo CD などの継続的デリバリーツールを使用してクラスターに適用することで、Policy as Code を作成および管理したりできます。
5.3.1. システムポリシービューからのセキュリティーポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
システムポリシービューから新しいセキュリティーポリシーを作成できます。
手順
-
RHACS ポータルで、Platform Configuration
Policy Management に移動します。 - Create policy をクリックします。
- 以下のセクションでポリシー定義情報を設定します。
5.3.1.1. ポリシーの詳細の入力 リンクのコピーリンクがクリップボードにコピーされました!
ポリシーの名前、重大度、説明、ポリシー違反を解決するためのガイダンスなど、ポリシーの詳細を入力します。必須フィールドにはアスタリスクが付いています。
手順
- ポリシーの Name を入力します。ポリシーの名前は 5 - 128 文字までで、改行やドル記号を含めることはできません。
- このポリシーの Severity レベルを選択します。
- Categories リストからポリシーのポリシーカテゴリーを選択します。
- Description フィールドに、ポリシーの詳細を入力します。
- Rationale フィールドにポリシーが存在する理由の説明を入力します。
- Guidance フィールドでこのポリシーの違反を解決するための手順を入力します。
MITRE ATT&CK セクションで、ポリシーに指定する tactics and the techniques を選択します。
- Add tactic をクリックし、ドロップダウンリストから調整を選択します。
- Add technique をクリックして、選択した戦略の手法を追加します。戦略には、複数の手法を指定できます。
- Next をクリックします。
5.3.1.2. ポリシーライフサイクルステージの選択 リンクのコピーリンクがクリップボードにコピーされました!
ポリシーが使用される際にライフサイクルステージを選択します。詳細は、「RHACS ポリシー評価エンジンについて」を参照してください。
手順
ポリシーの ライフサイクルステージ を選択します。
- ビルド: このステージのポリシーでは、イメージレジストリー、コンテンツ、脆弱性データ、およびスキャンプロセスに関連するイメージ基準のみを検査できます。これらは CI パイプラインで評価され、適用が有効な場合、ポリシー違反によってビルドを中断させることができます。このステージからの違反は RHACS によって保存されません。
- デプロイ: このステージのポリシーは、ワークロード設定とそのイメージを検査できます。これらのポリシーは、ワークロードリソースの作成または更新中に評価され、定期的またはオンデマンドで再評価されます。適用されると、ポリシー違反により、アドミッションコントローラーがデプロイまたは更新の試行を拒否したり、ワークロードのレプリカをゼロにスケールダウンしたりする可能性があります。
- ビルドとデプロイ: ポリシーによって、ビルドパイプラインとワークロードのアドミッションの両方でイメージを検査し、さらに、そのどちらか一方または両方のステージに適用を適用したい場合は、このステージを選択します。
ランタイム: このステージのポリシーは、次の 2 つのイベントソースに関連付けられたワークロードアクティビティーまたは Kubernetes リソース操作のいずれかを検査します。
- デプロイメント: ワークロードアクティビティーを検査するランタイムポリシーには、少なくとも 1 つのワークロードアクティビティー基準が必要です。ワークロードアクティビティー基準は、イメージまたはワークロード設定基準と組み合わせることができます。適用により問題のある Pod が終了し、その後 Pod が再作成されます。
- 監査ログ: Kubernetes リソース操作を評価するランタイムポリシーは、Kubernetes 監査ログを使用して機密性の高い操作を探します。操作はすでに実行されているため、このソースを使用するポリシーの適用を設定できません。
- Next をクリックします。
5.3.1.3. ポリシールールの設定 リンクのコピーリンクがクリップボードにコピーされました!
ポリシーフィールドまたは基準を使用して、ポリシーのルールを作成できます。
手順
-
Rules セクションで、ポリシーをトリガーする基準を設定します。ルールのタイトルを編集できます。たとえば、
Rule 1をよりわかりやすいものに変更できます。 ルールごとに、ポリシーフィールドをクリックして Policy Section にドラッグし、ポリシーフィールドまたは基準を追加します。
注記利用可能なポリシーフィールドは、ポリシーに選択したライフサイクルステージによって異なります。たとえば、Networking または Workload activity の基準は、ランタイムライフサイクルのポリシーを作成するときに使用できますが、ビルドライフサイクルのポリシーを作成するときには使用できません。ポリシー基準の詳細 (基準や、それらが利用可能なライフサイクルフェーズに関する情報など) は、「ポリシー基準」を参照してください。
フィールドごとに、フィールドに固有のオプションから選択できます。これらはフィールドの種類によって異なります。以下に例を示します。
- 文字列の値の動作はデフォルトで、ポリシーフィールドに対して照合します。フィールドの照合をさせない場合は、Not をクリックします。
-
一部のフィールドには、
trueまたはfalseのいずれかの値が含まれています。 - 一部のフィールドでは、ドロップダウンリストから値を選択する必要があります。
-
Read-Only Root Filesystemなどのブール値を持つ属性を選択した場合は、READ-ONLYおよびWRITABLEオプションを使用できます。 Environment variableなどの複合値を持つ属性を選択した場合は、Key、Value、Value Fromフィールドに値を入力し、アイコンをクリックして使用可能なオプションにさらに値を追加できます。注記ポリシー基準に使用できる値の詳細は、「ポリシー基準」を参照してください。
- 属性に複数の値を組み合わせるには、Add アイコンをクリックします。
- オプション: ルールを追加するには、Add a new rule をクリックします。
- Next をクリックします。
5.3.1.4. ポリシースコープの設定 リンクのコピーリンクがクリップボードにコピーされました!
ポリシーのスコープを定義して、特定のエンティティーに対してポリシーを制限または許可できます。このポリシーを、特定のクラスター、namespace、またはデプロイメントラベルにのみ適用するように有効化することも可能です。デプロイおよびランタイムライフサイクルステージ用に設定されたポリシーの場合、ポリシーが適用されないように、クラスター、namespace、デプロイメント、またはデプロイメントラベルを除外することもできます。ビルドライフサイクルステージでは、特定のイメージを除外して、たとえば、継続的インテグレーション/継続的デリバリー (CI/CD) パイプラインの継続的インテグレーション部分でそれらのイメージが違反をトリガーしないようにすることができます。
手順
次のいずれかのオプションを設定します。
- スコープによる制限: これにより、このポリシーを特定のクラスター、namespace、またはデプロイメントラベルにのみ適用できるようになります。複数のスコープを追加したり、namespaces とラベルの RE2 Syntax で正規表現を使用したりすることもできます。
スコープによる除外: 特定のデプロイメント、クラスター、namespace、およびデプロイメントラベルをポリシーから除外します。ポリシーは、選択したエンティティーには適用されません。複数のスコープを追加したり、namespaces とラベルの RE2 Syntax で正規表現を使用したりすることもできます。ただし、デプロイメントの選択に正規表現を使用することはできません。
注記この機能は、デプロイおよびランタイムライフサイクルステージ用に設定されたポリシーでのみ使用できます。
イメージの除外: ビルドライフサイクルステージ用に設定されたポリシーの場合、ポリシーからイメージを除外できます。違反をトリガーしたくないイメージを選択します。
注記除外されたイメージ 設定は、継続的インテグレーションシステムにおいて、ビルド ライフサイクルステージでイメージをチェックする場合にのみ適用されます。このポリシーを使用して、実行中のデプロイメント (Deploy ライフサイクルステージ) またはランタイムアクティビティー (Runtime ライフサイクルステージ) をチェックする場合、効果はありません。
- Next をクリックします。
5.3.1.5. ポリシーの有効化 リンクのコピーリンクがクリップボードにコピーされました!
ポリシーを有効化または無効化します。
手順
- ポリシーを有効化するには Enable を選択し、無効化するには Disable を選択します。
- Next をクリックします。
5.3.1.6. ポリシー適用の設定 リンクのコピーリンクがクリップボードにコピーされました!
このポリシー違反時に、RHACS が通知のみで知らせるか、通知とポリシーの適用の両方行うかを設定できます。ポリシーの適用は、クラスター上でアドミッションコントローラーが有効になっているかどうかと、ポリシーのライフサイクルステージによって決まります。
手順
適用方法を選択します。
- Inform: 違反を違反リストに含めます。
- 通知と適用: 違反を違反リストに含め、設定したアクションを適用します。このオプションを選択した場合は、適切なライフサイクルの切り替えを使用して、ポリシーの適用動作を選択する必要があります。
ポリシーの適用を選択する場合は、適用動作を設定します。選択できる適用動作は、ポリシー定義の Lifecycle セクションでポリシーごとに選択したライフサイクルステージによって異なります。ライフサイクルステージに応じて、以下の適用動作を利用できます。
-
ビルド: イメージがポリシーの基準に一致する場合に RHACS が継続的インテグレーション (CI) ビルドを失敗するようにするには、Enforce on Build を選択します。
roxctlCLI をダウンロードし、roxctl image checkコマンドがそのポリシーと連携して動作するように設定できます。 デプロイ: RHACS アドミッションコントローラーが設定され実行されている場合に、ポリシーの条件に一致するワークロードアドミッションと更新を RHACS がブロックするようにするには、Enforce on Deploy を選択します。
- アドミッションコントローラーによる適用が有効なクラスターでは、Kubernetes または OpenShift Container Platform API サーバーが、すべての非準拠のデプロイメントをブロックします。他のクラスターでは、RHACS は準拠していないデプロイメントを編集して、Pod がスケジュールされないようにします。
- 既存のデプロイメントの場合、ポリシーの変更は、Kubernetes イベントが発生したときに、基準が次に検出されたときにのみ適用されます。適用に関する詳細は、「デプロイステージの適用」を参照してください。
ランタイム: Pod 内のイベントがポリシーの基準に一致したときに RHACS によってすべての Pod が削除されるようにするには、Enforce on Runtime を選択します。
警告ポリシーの適用は、実行中のアプリケーションまたは開発プロセスに影響を与える可能性があります。適用オプションを有効にする前に、すべての利害関係者に通知し、自動適用アクションに対応する方法を計画してください。
-
ビルド: イメージがポリシーの基準に一致する場合に RHACS が継続的インテグレーション (CI) ビルドを失敗するようにするには、Enforce on Build を選択します。
- Next をクリックします。
5.3.1.7. ポリシー通知機能の選択 リンクのコピーリンクがクリップボードにコピーされました!
ポリシーに通知機能をアタッチして、ポリシー違反をメールの受信者に送信したり、Slack、Jira、Splunk、Webhook を使用するその他のアプリケーションなどの外部ツールに送信したりできます。
前提条件
-
通知機能がリストに表示され、選択できるようになるには、事前に通知機能を設定しておく必要があります。これらのインテグレーションは、Platform Configuration
Integrations ページの Notifier Integrations セクションで設定します。
手順
- ポリシー違反が発生したときに RHACS が通知するために使用する通知機能を選択します。
- Next をクリックします。
5.3.1.8. ポリシーを確認し、違反をプレビューする リンクのコピーリンクがクリップボードにコピーされました!
ポリシーを作成するときに、RHACS はプレビューウィンドウを提供し、そこでポリシー設定を表示し、ポリシーが実装された場合に発生する違反をプレビューできます。
手順
- ポリシー設定が正しいオプションで設定されていることを確認します。
Preview violations パネルで結果を表示し、ポリシーが機能していることを確認します。このパネルには、ビルドフェーズまたはデプロイフェーズのデプロイメントにポリシー違反があるかどうかなどの追加情報が提供されます。
注記ランタイム違反は、将来イベントが発生したときに生成されるものであるため、このプレビューでは表示されません。
ポリシーを保存する前に、違反が正確であるかどうかを確認してください。
- Save をクリックします。
5.3.2. リスクビューからのセキュリティーポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
Risk ビューでデプロイメントのリスクを評価しているときに、ローカルページフィルタリングを適用すると、使用しているフィルタリング基準をもとに新しいセキュリティーポリシーを作成できます。
手順
- RHACS ポータルに移動し、ナビゲーションメニューから Risk を選択します。
- ポリシーを作成するローカルページのフィルタリング条件を適用します。
- New Policy を選択し、必須フィールドに入力して新しいポリシーを作成します。ポリシーを作成する手順については、「システムポリシービューからのセキュリティーポリシーの作成」を参照してください。
5.3.3. 既存のセキュリティーポリシーの変更 リンクのコピーリンクがクリップボードにコピーされました!
作成したポリシーと、複製した Red Hat Advanced Cluster Security for Kubernetes によって提供される既存のデフォルトポリシーを編集できます。
手順
-
RHACS ポータルで、Platform Configuration
Policy Management に移動します。 - Policies ページから、編集するポリシーを選択します。
Actions
Edit policy を選択します。 注記デフォルトシステムポリシーの特定フィールドは編集できません。デフォルトポリシーを変更するには、ポリシーを複製し、そのコピーを編集します。
- 変更するフィールドを編集し、Save をクリックします。
5.3.3.1. ポリシーの無効化 リンクのコピーリンクがクリップボードにコピーされました!
RHACS ポータルを使用してポリシーを無効化できます。
手順
-
RHACS ポータルで、Platform Configuration
Policy Management に移動します。デフォルトポリシーの場合、適用オプションは編集できません。 -
ワークロード操作に対してポリシーを評価したくない場合は、Actions
Edit policy を選択します。 - 左側のナビゲーションメニューで、Actions を選択します。
- Activation state フィールドで、Disable を選択します。
- ポリシーを保存します。