5.4.3. ポリシー基準
Policy criteria セクションで、ポリシーをトリガーするデータを設定できます。
以下の表に記載されている属性に基づいてポリシーを設定できます。
この表では、以下のようになります。
正規表現、AND、OR、および NOT 列は、特定の属性とともに正規表現およびその他の論理演算子を使用できるかどうかを示します。
-
Regular expressions 列の
!は、リストされているフィールドに正規表現のみを使用できることを示しています。 -
AND、OR 列の
!は、属性に前述の論理演算子のみを使用できることを示しています。
-
Regular expressions 列の
- RHACS バージョン 列は、属性を使用する必要がある Red Hat Advanced Cluster Security for Kubernetes のバージョンを示します。
論理組み合わせ演算子の
ANDおよびORは、以下の属性には使用できません。-
ブール値:
trueおよびfalse 最小値セマンティクス。たとえば、以下のようになります。
- 最小 RBAC パーミッション
- イメージ作成からの日数
-
ブール値:
NOT論理演算子は、以下の属性に使用できません。-
ブール値:
trueおよびfalse -
<、>、<=、>=演算子など、比較をすでに使用している数値。 複数の値を指定できる複合基準。たとえば、以下のようになります。
- Dockerfile 行。命令と引数の両方が含まれます。
- 環境変数。名前と値の両方で設定されます。
- Add Capabilities、Drop Capabilities、Days since image was created、Days since image was last scanned などの他の意味。
-
ブール値:
セキュリティーポリシーの作成に論理演算子 AND、OR、NOT を使用するには、Red Hat Advanced Cluster Security for Kubernetes バージョン 3.0.45 以降が必要です。ただし、以前のバージョンでは、正規表現の列に記載されているフィールドに 正規表現 を使用できます。
| 属性 | 説明 | RHACS バージョン | 正規表現 | NOT | AND, OR | フェーズ |
|---|---|---|---|---|---|---|
| Namespace | namespace の名前。 | 3.0.51 以降 | ✓ | ✓ | ✓ | デプロイ |
| Image Registry | イメージレジストリーの名前。 | すべて | ✓ | ✓ | ✓ | デプロイ |
| Image Remote |
| すべて | ✓ | ✓ | ✓ | デプロイ |
| Image Tag | イメージの識別子。 | すべて | ✓ | ✓ | ✓ | デプロイ |
| Days since image was created | イメージ作成日からの日数。 | すべて | ✕ | ✕ | ✕ | ビルド |
| Days since image was last scanned | 最後のイメージスキャンからの日数。 | すべて | ✕ | ✕ | ✕ | ビルド |
| Dockerfile Line | 命令と引数の両方を含む、Dockerfile の特定の行。 | すべて | ! 値のみ | ✕ | ✓ | ビルド |
| Image is NOT Scanned | イメージにはスキャンデータは利用できません。 | すべて | ✕ | ✕ | ✕ | ビルド |
| CVSS |
Common Vulnerability Scoring System は、スコアが | すべて | ✕ | ✕ | ✓ | ビルド |
| Fixed By | イメージのフラグ付きの脆弱性を修正するパッケージのバージョン文字列。 | すべて | ✓ | ✓ | ✓ | ビルド |
| CVE | Common Vulnerabilities and Exposures。特定の CVE 番号で使用。 | すべて | ✓ | ✓ | ✓ | ビルド |
| Image Component | イメージに存在する特定のソフトウェアコンポーネントの名前とバージョン番号。 | すべて | ✓ | ✕ | ✓ | ビルド |
| イメージ OS | イメージのベースオペレーティングシステムの名前およびバージョン番号。 | 3.0.47 以降 | ✓ | ✓ | ✓ | ビルド |
| Environment Variable | 名前または値で環境変数を確認します。 | すべて | ! キーと値のみ | ✕ | ✓ | デプロイ |
| Disallowed Annotation | 指定された環境の Kubernetes リソースには存在できないアノテーション。 | すべて | ✓ | ✕ | ✓ | デプロイ |
| Disallowed Image Label |
使用されていない Docker イメージラベルの有無を確認します。このポリシーは、デプロイメントのイメージに指定されたラベルがある場合にトリガーされます。 | 3.0.40 以降 | ✓ | ✕ | ✓ | デプロイ |
| Required Image Label |
必要な Docker イメージラベルが存在することを確認します。このポリシーは、デプロイメントのイメージに指定されたラベルがない場合にトリガーされます。 | 3.0.40 以降 | ✓ | ✕ | ✓ | デプロイ |
| Required Label | Kubernetes で必要なラベルが存在するかどうかを確認します。 | すべて | ✓ | ✕ | ✓ | デプロイ |
| Required Annotation | Kubernetes に必要なアノテーションの有無を確認します。 | すべて | ✓ | ✕ | ✓ | デプロイ |
| Volume Name | ストレージの名前。 | すべて | ✓ | ✓ | ✓ | デプロイ |
| Volume Source |
ボリュームがプロビジョニングされるフォームを示します。たとえば、 | すべて | ✓ | ✓ | ✓ | デプロイ |
| Volume Destination | ボリュームがマウントされるパス。 | すべて | ✓ | ✓ | ✓ | デプロイ |
| Volume Type | ボリュームの種別を設定します。 | すべて | ✓ | ✓ | ✓ | デプロイ |
| Writable Volume | 書き込み可能な状態でマウントされるボリューム。 | すべて | ✕ | ✕ | ✕ | デプロイ |
| Protocol | 公開されるポートによって使用される TCP や UDP などのプロトコル。 | すべて | ✓ | ✓ | ✓ | デプロイ |
| Port | デプロイメントによって公開されるポート番号。 | すべて | ✕ | ✓ | ✓ | デプロイ |
| Privileged | 特権付きの実行デプロイメント。 | すべて | ✕ | ✕ | ✕ | デプロイ |
| Read-Only Root Filesystem | root ファイルシステムで読み取り専用として設定したコンテナー。 | すべて | ✕ | ✕ | ✕ | デプロイ |
| Drop Capabilities |
コンテナーからドロップする必要がある Linux 機能。たとえば、 | すべて | ✕ | ✕ | ✓ | デプロイ |
| Add Capabilities | Raw パケットを送信したり、ファイルパーミッションをオーバーライドする機能など、コンテナーには追加できない Linux 機能。 | すべて | ✕ | ✕ | ✓ | デプロイ |
| プロセス名 | デプロイメントで実行されるプロセスの名前。 | すべて | ✓ | ✓ | ✓ | ランタイム |
| Process Ancestor | デプロイメントで実行されるプロセスの親プロセスの名前。 | すべて | ✓ | ✓ | ✓ | ランタイム |
| Process Arguments | デプロイメントで実行されるプロセスのコマンド引数。 | すべて | ✓ | ✓ | ✓ | ランタイム |
| Process UID | デプロイメントで実行されるプロセスの UNIX ユーザー ID。 | すべて | ✕ | ✓ | ✓ | ランタイム |
| Port Exposure | ロードバランサーやノードポートなど、サービスの公開方法。 | すべて | ✕ | ✓ | ✓ | デプロイ |
| Service Account | サービスアカウントの名前 | すべて | ✓ | ✓ | ✓ | デプロイ |
| Writable Host Mount | リソースが、書き込みパーミッションのあるホストにパスをマウントしている。 | すべて | ✕ | ✕ | ✕ | デプロイ |
| Unexpected Process Executed | デプロイメントにあるロックされたプロセスベースラインで、プロセス実行が一覧表示されていないデプロイメントを確認します。 | すべて | ✕ | ✕ | ✕ | ランタイム |
| Minimum RBAC Permissions |
デプロイメントの Kubernetes サービスアカウントに、指定のレベル以上 ( | すべて | ✕ | ✓ | ✕ | デプロイ |
| Container Name | コンテナーの名前。 | 3.0.52 以降 | ✓ | ✓ | ✓ | デプロイ |
| Container CPU Request | 特定のリソース用に予約されているコア数を確認します。 | すべて | ✕ | ✕ | ✓ | デプロイ |
| Container CPU Limit | リソースが使用できるコアの最大数を確認します。 | すべて | ✕ | ✕ | ✓ | デプロイ |
| Container Memory Request | 特定のリソース用に予約されているメモリー量を確認します。 | すべて | ✕ | ✕ | ✓ | デプロイ |
| Container Memory Limit | リソースが使用できるメモリーの最大量を確認します。 | すべて | ✕ | ✕ | ✓ | デプロイ |
| Kubernetes Action |
| 3.0.55 以降 | ✕ | ✕ |
! | ランタイム |
| Kubernetes Resource |
| 3.63 以降 | ✕ | ✕ |
! | ランタイム |
| Kubernetes Resource Name | アクセスされた Kubernetes リソースの名前。 | 3.63 以降 | ✓ | ✓ |
! | ランタイム |
| Kubernetes API Verb |
| 3.63 以降 | ✕ | ✕ |
! | ランタイム |
| Kubernetes User Name | リソースにアクセスしたユーザーの名前。 | 3.63 以降 | ✓ | ✓ |
! | ランタイム |
| Kubernetes User Group | リソースにアクセスしたユーザーが属するグループの名前。 | 3.63 以降 | ✓ | ✕ |
! | ランタイム |
| User Agent |
ユーザーがリソースへのアクセスに使用したユーザーエージェント。例: | 3.63 以降 | ✓ | ✓ |
! | ランタイム |
| Source IP Address | ユーザーがリソースにアクセスした IP アドレス。 | 3.63 以降 | ✓ | ✓ |
! | ランタイム |
| Is Impersonated User | サービスアカウントまたは他のアカウントで権限を偽装ユーザーによって要求が行われたかどうかを確認します。 | 3.63 以降 | ✕ | ✕ | ✕ | ランタイム |
| Runtime Class | デプロイメントの RuntimeClass。 | 3.67 以降 | ✓ | ✓ | ✓ | デプロイ |
| Automount Service Account Token | デプロイメント設定がサービスアカウントトークンを自動的にマウントするかどうかを確認します。 | 3.68 以降 | ✕ | ✕ | ✕ | デプロイ |
| Liveness Probe | コンテナーが liveness プローブを定義するかどうか。 | 3.69 以降 | ✕ | ✕ | ✕ | デプロイ |
| Readiness Probe | コンテナーが readiness プローブを定義するかどうか。 | 3.69 以降 | ✕ | ✕ | ✕ | デプロイ |
| Replicas | デプロイメントレプリカの数。 | 3.69 以降 | ✕ | ✓ | ✓ | デプロイ |
| Privilege escalation | コンテナープロセスで親プロセスよりも多くの権限を取得できるように設定された場合に、アラートを出します。 | 3.70 以降 | ✕ | ✕ | ✕ | デプロイ |
| Ingress Network Policy | Ingress Kubernetes ネットワークポリシーの有無を確認します。 | 3.70 以降 | ✕ | ✕ | ✓ | デプロイ |
| Egress Network Policy | egress Kubernetes ネットワークポリシーの有無を確認します。 | 3.70 以降 | ✕ | ✕ | ✓ | デプロイ |
| 信頼できるイメージ署名によって検証されない | イメージの署名を検証するために使用できる署名統合のリスト。署名がないか、提供された署名統合の少なくとも 1 つによって署名が検証できないイメージに関するアラートを作成します。 | 3.70 以降 | ✕ | ✕ |
! | デプロイ |
Red Hat Advanced Cluster Security for Kubernetes バージョン 3.0.44 以前を使用している場合に、Policy criteria セクションで指定するポリシー基準は AND が指定されています。これは、指定されたすべてのポリシー基準が一致する場合にのみ違反が発生することを意味します。
5.4.3.1. ポリシー基準への論理条件の追加
ドラッグアンドドロップポリシーフィールドパネルを使用して、ポリシー基準に論理条件を指定できます。
前提条件
- Red Hat Advanced Cluster Security for Kubernetes バージョン 3.0.45 以降を使用している。
手順
Policy criteria セクションで、Add a new condition を選択して、新しいポリシーセクションを追加します。
- Edit アイコンをクリックして、ポリシーセクションの名前を変更できます。
- Drag out a policy field セクションには、複数のカテゴリーで利用可能なポリシー条件が一覧表示されます。これらのカテゴリーを展開したり折りたたんだりして、ポリシー基準属性を表示できます。
- policy セクションの Drop a policy field エリアに属性をドラッグします。
選択する属性のタイプに応じて、選択した属性の条件を設定するオプションが異なります。以下に例を示します。
-
ブール値が
Read-Only Root Filesystemの属性を選択すると、READ-ONLYオプションおよびWRITABLEオプションが表示されます。 環境変数が複合値の属性を選択すると、Key、Value、およびValue Fromフィールドの値を入力するオプションと、利用可能なオプションの他の値を追加するアイコンが表示されます。- 属性に複数の値を組み合わせるには、Add アイコンをクリックします。
-
ポリシーセクションで一覧表示されている論理演算子
ANDまたはORをクリックして、AND演算子とOR演算子を切り替えることもできます。演算子間の切り替えは、ポリシーセクション内でのみ機能し、2 つの異なるポリシーセクション間では機能しません。
-
ブール値が
-
これらの手順を繰り返して、複数の
ANDおよびOR条件を指定できます。追加した属性の条件を設定したら、Next をクリックしてポリシーの作成を続行します。