5.4. カスタムポリシーの作成


デフォルトのポリシーを使用することに加えて、Red Hat Advanced Cluster Security for Kubernetes でカスタムポリシーを作成することもできます。

新しいポリシーを構築するには、既存のポリシーのクローンを作成するか、ゼロから新規ポリシーを作成します。

  • RHACS ポータルの Risk ビューのフィルター条件をもとにポリシーを作成することもできます。
  • また、ポリシー基準に論理演算子ではなく ANDOR および NOT を使用して高度なポリシーを作成することもできます。

5.4.1. システムポリシービューからのセキュリティーポリシーの作成

システムポリシービューから新しいセキュリティーポリシーを作成できます。

手順

  1. RHACS ポータルで、Platform Configuration Policies に移動します。
  2. Create policy をクリックします。
  3. Policy details セクションに、ポリシーに関する以下の情報を入力します。

    • ポリシーの Name を入力します。
    • オプション: Attach notifiers セクションの下にある利用可能な Notifier から選択して、通知機能 をポリシーに割り当てることもできます。

      注記

      アラートを転送する前に、Red Hat Advanced Cluster Security for Kubernetes を通知プロバイダー (Webhook、Jira、PagerDuty、Splunk など) と統合する必要があります。

    • このポリシーの 重大度 レベルを選択します (CriticalHighMedium、または Low のいずれか)。
    • このポリシーに適用するポリシーの Categories を選択します。
    • Description ボックスに、ポリシーの詳細を入力します。
    • Rationale ボックスにポリシーが存在する理由についての説明を入力します。
    • Guidance ボックスでこのポリシーの違反を解決するための手順を入力します。
    • オプション: MITRE ATT&CK セクションで、ポリシーに指定する tactics and the techniques を選択します。

      1. Add tactic をクリックし、ドロップダウンリストから調整を選択します。
      2. Add technique をクリックして、選択した戦略の手法を追加します。戦略には、複数の手法を指定できます。
  4. Next をクリックします。
  5. Policy behavior セクションで、ポリシーの Lifecycle stages および Event sources(Runtime lifecycle only) を選択します。

    • BuildDeploy、または Runtimeポリシーを適用する Lifecycle Stages を選択します。複数のステージを選択できます。

      • ビルド時ポリシーは、CVE や Dockerfile 手順などのイメージフィールドに適用されます。
      • デプロイ時のポリシーにはすべてのビルドタイムポリシー条件を含めることができますが、特権モードで実行したり、Docker ソケットをマウントするなど、クラスター設定からのデータを含めることもできます。
      • ランタイムポリシーには、すべてのビルド時およびデプロイ時のポリシー条件を含めることができますが、ランタイム時のプロセス実行に関するデータを含めることもできます。
  6. Response method には、以下のいずれかを選択します。

    1. Inform (違反の一覧に違反を追加する)。
    2. または Inform and enforce (アクションを適用する) を選択します。

      • ポリシーの適用動作を選択します。Lifecycle Stages の設定時に選択したステージでのみ使用できます。ON (有効化) を選択してポリシーを適用して違反を報告し、OFF (disable) を選択して違反を報告します。適用の振る舞いは、ライフサイクルの各ステージで異なります。

        • Build: Red Hat Advanced Cluster Security for Kubernetes は、イメージがポリシーの条件に一致すると、継続的インテグレーション (CI) ビルドに失敗します。
        • Deploy: Red Hat Advanced Cluster Security for Kubernetes は、ポリシーの条件に一致するデプロイの作成をブロックします。アドミッションコントローラーが適用されているクラスターでは、Kubernetes または OpenShift Container Platform サーバーがすべての非準拠のデプロイメントをブロックします。他のクラスターでは、Red Hat Advanced Cluster Security for Kubernetes が非準拠のデプロイメントを編集して、Pod がスケジュールされないようにします。
        • runtime: Red Hat Advanced Cluster Security for Kubernetes は、ポリシーの条件に一致するすべての Pod を強制終了するか、または Pod で実行されたアクションをブロックします。

          警告

          ポリシーの適用は、実行中のアプリケーションまたは開発プロセスに影響を与える可能性があります。適用オプションを有効にする前に、すべての利害関係者に通知し、自動適用アクションに対応する方法を計画してください。

  7. Next をクリックします。
  8. Policy criteria セクションで、ポリシーをトリガーする属性を設定します。
  9. Next をクリックします。
  10. Policy scope セクションで、以下を設定します。

    • Add inclusion scope をクリックして、Restrict to Scope を使用し、特定のクラスター、namespace、またはラベルだけに、このポリシーを有効にします。複数のスコープを追加したり、namespaces とラベルの RE2 Syntax で正規表現を使用したりすることもできます。
    • Add exclusion scope をクリックして Exclude by Scope を使用して、指定するデプロイメント、クラスター、namespace、およびラベルを除外するために、選択したエンティティーに対象のポリシーが適用されないことを意味します。複数のスコープを追加したり、namespaces とラベルの RE2 Syntax で正規表現を使用したりすることもできます。ただし、デプロイメントの選択に正規表現を使用することはできません。
    • Excluded Images (Build Lifecycle only) の場合は、違反をトリガーしないすべてのイメージを選択します。

      注記

      Excluded Images 設定は、build ライフサイクルステージで継続的インテグレーションシステムでイメージを確認する場合にのみ適用されます。このポリシーを使用して、実行中のデプロイメント (Deploy ライフサイクルステージ) またはランタイムアクティビティー (Runtime ライフサイクルステージ) をチェックする場合、効果はありません。

  11. Next をクリックします。
  12. Review policy セクションで、ポリシー違反をプレビューします。
  13. Save をクリックします。

関連情報

5.4.2. リスクビューからのセキュリティーポリシーの作成

リスク ビューで展開のリスクを評価しているときに、ローカルページフィルターリングを適用すると、使用しているフィルターリング基準をもとに新しいセキュリティーポリシーを作成できます。

手順

  1. RHACS ポータルに移動し、ナビゲーションメニューから Risk を選択します。
  2. ポリシーを作成するローカルページのフィルターリング条件を適用します。
  3. New Policy を選択し、必須フィールドに入力して新規ポリシーを作成します。

5.4.3. ポリシー基準

Policy criteria セクションで、ポリシーをトリガーするデータを設定できます。

以下の表に記載されている属性に基づいてポリシーを設定できます。

この表では、以下のようになります。

  • 正規表現AND、OR、および NOT 列は、特定の属性とともに正規表現およびその他の論理演算子を使用できるかどうかを示します。

    • Regular expressions 列の ! は、リストされているフィールドに正規表現のみを使用できることを示しています。
    • AND、OR 列の ! は、属性に前述の論理演算子のみを使用できることを示しています。
  • RHACS バージョン 列は、属性を使用する必要がある Red Hat Advanced Cluster Security for Kubernetes のバージョンを示します。
  • 論理組み合わせ演算子の AND および OR は、以下の属性には使用できません。

    • ブール値: true および false
    • 最小値セマンティクス。たとえば、以下のようになります。

      • 最小 RBAC パーミッション
      • イメージ作成からの日数
  • NOT 論理演算子は、以下の属性に使用できません。

    • ブール値: true および false
    • <><=>= 演算子など、比較をすでに使用している数値。
    • 複数の値を指定できる複合基準。たとえば、以下のようになります。

      • Dockerfile 行。命令と引数の両方が含まれます。
      • 環境変数。名前と値の両方で設定されます。
    • Add CapabilitiesDrop CapabilitiesDays since image was createdDays since image was last scanned などの他の意味。
注記

セキュリティーポリシーの作成に論理演算子 ANDORNOT を使用するには、Red Hat Advanced Cluster Security for Kubernetes バージョン 3.0.45 以降が必要です。ただし、以前のバージョンでは、正規表現の列に記載されているフィールドに 正規表現 を使用できます。

属性説明RHACS バージョン正規表現NOTAND, ORフェーズ

Namespace

namespace の名前。

3.0.51 以降

デプロイ

Image Registry

イメージレジストリーの名前。

すべて

デプロイ

Image Remote

library/nginx など、レジストリー内のイメージのフルネーム。

すべて

デプロイ

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 は、スコアが > (指定された CVSS より大きい)、< (指定された CVSS より小さい)、または = (指定された CVSS と等しい) 脆弱性を持つイメージと照合するために使用します。

すべて

ビルド

Fixed By

イメージのフラグ付きの脆弱性を修正するパッケージのバージョン文字列。

すべて

ビルド

CVE

Common Vulnerabilities and Exposures。特定の CVE 番号で使用。

すべて

ビルド

Image Component

イメージに存在する特定のソフトウェアコンポーネントの名前とバージョン番号。

すべて

ビルド

Image OS

イメージのベースオペレーティングシステムの名前およびバージョン番号。

3.0.47 以降

ビルド

Environment Variable

名前または値で環境変数を確認します。

すべて

! キーと値のみ

デプロイ

Disallowed Annotation

指定された環境の Kubernetes リソースには存在できないアノテーション。

すべて

デプロイ

Disallowed Image Label

使用されていない Docker イメージラベルの有無を確認します。このポリシーは、デプロイメントのイメージに指定されたラベルがある場合にトリガーされます。キー および フィールドの両方に正規表現を使用して、ラベルを照合できます。Disallowed Image Label ポリシー基準は、Docker レジストリーと統合する場合にのみ適用されます。

3.0.40 以降

デプロイ

Required Image Label

必要な Docker イメージラベルが存在することを確認します。このポリシーは、デプロイメントのイメージに指定されたラベルがない場合にトリガーされます。キー および フィールドの両方に正規表現を使用して、ラベルを照合できます。Required Image Label ポリシー基準は、Docker レジストリーと統合する場合にのみ機能します。

3.0.40 以降

デプロイ

Required Label

Kubernetes で必要なラベルが存在するかどうかを確認します。

すべて

デプロイ

Required Annotation

Kubernetes に必要なアノテーションの有無を確認します。

すべて

デプロイ

Volume Name

ストレージの名前。

すべて

デプロイ

Volume Source

ボリュームがプロビジョニングされるフォームを示します。たとえば、persistentVolumeClaim または hostPath です。

すべて

デプロイ

Volume Destination

ボリュームがマウントされるパス。

すべて

デプロイ

Volume Type

ボリュームの種別を設定します。

すべて

デプロイ

Writable Volume

書き込み可能な状態でマウントされるボリューム。

すべて

デプロイ

Protocol

公開されるポートによって使用される TCP や UDP などのプロトコル。

すべて

デプロイ

Port

デプロイメントによって公開されるポート番号。

すべて

デプロイ

Privileged

特権付きの実行デプロイメント。

すべて

デプロイ

Read-Only Root Filesystem

root ファイルシステムで読み取り専用として設定したコンテナー。

すべて

デプロイ

Drop Capabilities

コンテナーからドロップする必要がある Linux 機能。たとえば、CAP_SETUID または CAP_NET_RAW です。

すべて

デプロイ

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 サービスアカウントに、指定のレベル以上 (= または >) の Kubernetes RBAC パーミッションレベルがあるかどうかを照合します。

すべて

デプロイ

Container Name

コンテナーの名前。

3.0.52 以降

デプロイ

Container CPU Request

特定のリソース用に予約されているコア数を確認します。

すべて

デプロイ

Container CPU Limit

リソースが使用できるコアの最大数を確認します。

すべて

デプロイ

Container Memory Request

特定のリソース用に予約されているメモリー量を確認します。

すべて

デプロイ

Container Memory Limit

リソースが使用できるメモリーの最大量を確認します。

すべて

デプロイ

Kubernetes Action

Pod Exec などの Kubernetes アクションの名前。

3.0.55 以降

!OR のみ

ランタイム

Kubernetes Resource

configmaps または secrets などのアクセスされた Kubernetes リソースの名前。

3.63 以降

!OR のみ

ランタイム

Kubernetes Resource Name

アクセスされた Kubernetes リソースの名前。

3.63 以降

!OR のみ

ランタイム

Kubernetes API Verb

GETPOST などのリソースへのアクセスに使用される Kubernetes API 動詞。

3.63 以降

!OR のみ

ランタイム

Kubernetes User Name

リソースにアクセスしたユーザーの名前。

3.63 以降

!OR のみ

ランタイム

Kubernetes User Group

リソースにアクセスしたユーザーが属するグループの名前。

3.63 以降

!OR のみ

ランタイム

User Agent

ユーザーがリソースへのアクセスに使用したユーザーエージェント。例: oc、または kubectl

3.63 以降

!OR のみ

ランタイム

Source IP Address

ユーザーがリソースにアクセスした IP アドレス。

3.63 以降

!OR のみ

ランタイム

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 以降

!OR のみ

デプロイ

注記

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 以降を使用している。

手順

  1. Policy criteria セクションで、Add a new condition を選択して、新しいポリシーセクションを追加します。

    • Edit アイコンをクリックして、ポリシーセクションの名前を変更できます。
    • Drag out a policy field セクションには、複数のカテゴリーで利用可能なポリシー条件が一覧表示されます。これらのカテゴリーを展開したり折りたたんだりして、ポリシー基準属性を表示できます。
  2. policy セクションの Drop a policy field エリアに属性をドラッグします。
  3. 選択する属性のタイプに応じて、選択した属性の条件を設定するオプションが異なります。以下に例を示します。

    • ブール値が Read-Only Root Filesystem の属性を選択すると、READ-ONLY オプションおよび WRITABLE オプションが表示されます。
    • 環境変数 が複合値の属性を選択すると、KeyValue、および Value From フィールドの値を入力するオプションと、利用可能なオプションの他の値を追加するアイコンが表示されます。

      1. 属性に複数の値を組み合わせるには、Add アイコンをクリックします。
      2. ポリシーセクションで一覧表示されている論理演算子 AND または OR をクリックして、AND 演算子と OR 演算子を切り替えることもできます。演算子間の切り替えは、ポリシーセクション内でのみ機能し、2 つの異なるポリシーセクション間では機能しません。
  4. これらの手順を繰り返して、複数の AND および OR 条件を指定できます。追加した属性の条件を設定したら、Next をクリックしてポリシーの作成を続行します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.