第6章 セキュリティーポリシーの管理


6.1. セキュリティーポリシーについて

Red Hat Advanced Cluster Security for Kubernetes は、環境内でリスクの高いサービスがデプロイメントされないように、ランタイムセキュリティーインシデントに対応するためにカスタマイズなしで使用できる default のセキュリティーポリシーを提供します。コンテナー環境用に custom のマルチファクターポリシーを作成することもできます。

6.1.1. ポリシーカテゴリー

RHACS はポリシーカテゴリーを使用して、タイプおよび機能別にポリシーをグループ化します。これらのカテゴリーを使用して、ポリシーを整理および検索できます。

RHACS は、次のデフォルトポリシーカテゴリーを提供します。

  • Anomalous Activity
  • Cryptocurrency Mining
  • DevOps Best Practices
  • Docker Center for Internet Security (CIS)
  • Kubernetes
  • Kubernetes Events
  • Network Tools
  • Package Management
  • Privileges
  • Security Best Practices
  • Supply Chain Security
  • System Modification
  • Vulnerability Management
  • Zero Trust

Policy Management ウィンドウの Policy Categories タブを使用して、既存のカテゴリーを表示し、RHACS ポータルで独自のポリシーカテゴリーを作成できます。

6.1.1.1. Policy categories タブを使用したポリシーカテゴリーの作成

バージョン 3.74 以降の RHACS では、PostgreSQL データベースが有効になっている場合に、Red Hat Advanced Cluster Security Cloud Service または RHACS でポリシーカテゴリーを新しい方法で作成および管理できます。この機能を使用する場合、ポリシー作成以外のすべてのポリシーワークフローは変更されません。

PolicyCategoryService API オブジェクトを使用して、ポリシーカテゴリーを設定することもできます。詳細は、RHACS ポータルの Help API reference に移動してください。

手順

  1. RHACS ポータルで、Platform Configuration Policy Management に移動します。
  2. Policy categories タブをクリックします。このタブには、既存のカテゴリーのリストが表示され、カテゴリー名でリストをフィルタリングできます。Show all categories をクリックし、チェックボックスを選択して、表示されたリストからデフォルトまたはカスタムカテゴリーを削除することもできます。
  3. Create category をクリックします。
  4. カテゴリー名を入力し、Create をクリックします。

6.1.1.2. Policy categories タブを使用したポリシーカテゴリーの変更

バージョン 3.74 以降の RHACS では、PostgreSQL データベースが有効になっている場合に、Red Hat Advanced Cluster Security Cloud Service または RHACS でポリシーカテゴリーを新しい方法で作成および管理できます。この機能を使用する場合、ポリシー作成以外のすべてのポリシーワークフローは変更されません。

PolicyCategoryService API オブジェクトを使用して、ポリシーカテゴリーを設定することもできます。詳細は、RHACS ポータルの Help API reference に移動してください。

手順

  1. RHACS ポータルで、Platform Configuration Policy Management に移動します。
  2. Policy categories タブをクリックします。このタブには、既存のカテゴリーのリストが表示され、カテゴリー名でリストをフィルタリングできます。Show all categories をクリックし、チェックボックスを選択して、表示されたリストからデフォルトまたはカスタムカテゴリーを削除することもできます。
  3. ポリシー名をクリックして、編集または削除します。デフォルトのポリシーカテゴリーは、選択、編集、または削除できません。

6.1.2. ポリシーおよびライフサイクルフェーズについて

ポリシーを設定するときに、ポリシーに適用するライフサイクルステージを選択でき、ポリシーに対して複数のステージを選択することもできます。

次のライフサイクルステージから選択できます。

  • ビルドフェーズポリシー: これらのポリシーは、CVE や Dockerfile の手順などのイメージフィールドに適用されます。
  • デプロイフェーズポリシー: これらのポリシーには、すべてのビルド時のポリシー基準を含めることができます。また、特権モードでの実行や Docker デーモンソケットのマウントなど、クラスター設定からのデータを取得することもできます。
  • ランタイムポリシー: これらのポリシーには、すべてのビルド時とデプロイ時のポリシー基準、およびランタイム中のプロセス実行に関するデータが含まれます。さらに、次のイベントに基づいてポリシー違反をトリガーするようにランタイムポリシーを設定できます。

    • Deployments: イベントソースに Pod でのコマンドの実行や Pod ポート転送などのプロセスおよびネットワークアクティビティーが含まれる場合、RHACS はポリシー違反をトリガーします。
    • Audit logs: イベントソースが Kubernetes 監査ログレコードと一致すると、RHACS はポリシー違反をトリガーします。

6.1.3. ルールとポリシー基準について

RHACS でルールをセットアップし、ポリシーをトリガーするデータを設定できます。このデータは、ポリシー基準 または ポリシーフィールド とも呼ばれます。

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

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

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

    • Regex! (正規表現) は、リストされたフィールドに正規表現のみを使用できることを示します。
    • AND!、または OR は、属性に前述の論理演算子のみを使用できることを示します。
    • 正規表現 の ✕ / NOT / 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 などの他の意味。
属性説明JSON 属性許可される値RegexNOTAND、ORフェーズ

セクション: イメージレジストリー

Image Registry

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

イメージレジストリー

String

正規表現、
NOT、
AND、OR

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Image Name

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

イメージリモート

String

正規表現、
NOT、
AND、OR

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Image Tag

イメージの識別子。

イメージタグ

String

正規表現、
NOT、
AND、OR

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Image Signature

イメージの署名を検証するために使用できる署名統合のリスト。署名がないか、提供された署名統合の少なくとも 1 つによって署名が検証できないイメージに関するアラートを作成します。

Image Signature Verified By

すでに設定されているイメージ署名統合の有効な ID

! OR のみ

Build
Deploy
Runtime (Runtime 条件で使用する場合)

セクション: イメージの内容

The Common Vulnerabilities and Exposures (CVE) is fixable

この基準は、評価しているデプロイメント内のイメージに修正可能な CVE がある場合にのみ違反となります。

Fixable

ブール値

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Days Since CVE Was First Discovered In Image

この基準は、RHACS が特定のイメージ内で CVE を検出してから、指定された日数を超えた場合にのみ違反となります。

Days Since CVE Was First Discovered In Image

整数

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Days Since CVE Was First Discovered In System

この基準は、RHACS が監視するすべてのクラスター内にデプロイされた全イメージから CVE を検出してから、指定された日数を超えた場合にのみ違反となります。

Days Since CVE Was First Discovered In System

整数

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Image age

イメージの作成日からの最小日数。

イメージの経過時間

整数

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Image scan age

イメージが最後にスキャンされた後の最小日数。

イメージのスキャン期間

整数

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Image User

Dockerfile の USER ディレクティブと一致します。詳細は、https://docs.docker.com/engine/reference/builder/#user を参照してください。

Image User

String

正規表現、
NOT、
AND、OR

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Dockerfile Line

命令と引数の両方を含む、Dockerfile の特定の行。

Dockerfile Line

LABEL、RUN、CMD、EXPOSE、ENV、ADD、COPY、ENTRYPOINT、VOLUME、USER、WORKDIR、ONBUILD のいずれか

! 値 (AND、OR) の正規表現のみ

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Image scan status

イメージがスキャンされたかどうかを確認します。

スキャンされていないイメージ

ブール値

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Common Vulnerability Scoring System (CVSS)

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

CVSS

<、>、<=、>=、または何もなし (等しいことを意味します)
— と —
10 進数 (オプションの小数値を含む数値)。

例:
>=5 または
9.5

AND, OR

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Severity

CVSS またはベンダーに基づく脆弱性の重大度。Low、Moderate、Important、Critical のいずれかです。

Severity

<、>、⇐、>=、または何もなし (等しいことを意味します)
— と — 
次のうちのひとつ:
UNKNOWN
LOW
MODERATE
IMPORTANT
CRITICAL

例:
>=IMPORTANT、または
CRITICAL

AND, OR

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Fixed By

イメージのフラグ付きの脆弱性を修正するパッケージのバージョン文字列。この基準は、CVE 基準などを使用して脆弱性を特定する他の基準に加えて使用される場合があります。

Fixed By

String

正規表現、
NOT、
AND、OR

Build
Deploy
Runtime (Runtime 条件で使用する場合)

CVE

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

CVE

String

正規表現、
NOT、
AND、OR

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Image Component

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

Image Component

key=value

value はオプションです。

値が見つからない場合は、"key=" の形式にする必要があります。

正規表現、
AND、OR

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Image OS

イメージのベースオペレーティングシステムの名前およびバージョン番号。たとえば、alpine:3.17.3 です。

Image OS

String

正規表現、
NOT、
AND、OR

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Require image label

Docker イメージラベルが存在することを確認します。このポリシーは、デプロイメントのイメージに指定されたラベルがない場合にトリガーされます。キーおよび値フィールドの両方に正規表現を使用して、ラベルを照合できます。Require Image Label ポリシー条件は、Docker レジストリーと統合する場合にのみ機能します。Docker ラベルの詳細は、Docker のドキュメント (https://docs.docker.com/config/labels-custom-metadata/) を参照してください。

Required Image Label

key=value

value はオプションです。

値が見つからない場合は、"key=" の形式にする必要があります。

正規表現、
AND、OR

Build
Deploy
Runtime (Runtime 条件で使用する場合)

Disallow image label

特定の Docker イメージラベルが使用されていないことを確認します。このポリシーは、デプロイメントのイメージに指定されたラベルがある場合にトリガーされます。キーおよび値フィールドの両方に正規表現を使用して、ラベルを照合できます。'Disallow Image Label policy' 条件は、Docker レジストリーと統合する場合にのみ適用されます。Docker ラベルの詳細は、Docker のドキュメント (https://docs.docker.com/config/labels-custom-metadata/) を参照してください。

Disallowed Image Label

key=value

value はオプションです。

値が見つからない場合は、"key=" の形式にする必要があります。

正規表現、
AND、OR

Build
Deploy
Runtime (Runtime 条件で使用する場合)

セクション: コンテナー設定

Environment Variable

名前または値で環境変数を確認します。環境変数属性を含むポリシーを作成するときに、ポリシーを照合する環境変数のタイプを選択できます。たとえば、デプロイメント YAML で raw 値を直接指定したり、config map、シークレット、フィールド、リソース要求や制限から値への参照を指定したりできます。デプロイメント YAML で直接指定された raw 値以外のタイプの場合、ポリシールールの対応する value 属性が無視されます。この場合、ポリシーの照合は、指定された環境変数のタイプの存在に基づいて評価されます。さらに、この条件では、raw 値以外のタイプの空でない value 属性を持つポリシーの作成が許可されません。

Environment Variable

RAW=key=value により、デプロイメント YAML で直接指定された環境変数を、特定のキーおよび値と照合します。キーのみを照合する場合は、value 属性を省略できます。

環境変数が設定 YAML で定義されていない場合は、SOURCE=KEY という形式を使用できます。SOURCE は次のいずれかのオブジェクトです。

  • SECRET_KEY (SecretKeyRef)
  • CONFIG_MAP_KEY (ConfigMapRef)
  • FIELD (FieldRef)
  • RESOURCE_FIELD (ResourceFieldRef)

上記のリストでは、API オブジェクトのラベルを指定してから、括弧内でユーザーインターフェイスのラベルを指定しています。

! キーと値の正規表現 (RAW を使用している場合)
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Container CPU Request

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

Container CPU Request

<、>、⇐、>=、または何もなし (等しいことを意味します)
— と — 
10 進数 (オプションの小数値を含む数値)

例:
>=5 または
9.5

AND, OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Container CPU Limit

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

Container CPU Limit

(コンテナーの CPU 要求と同じ)

AND, OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Container Memory Request

要求される MB 数 (小数値を含む)。

Container Memory Request

(コンテナーの CPU 要求と同じ)

AND, OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Container Memory Limit

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

Container Memory Limit

(コンテナーの CPU 要求と同じ)

AND, OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Privileged container

デプロイメントが特権モードで設定されているかどうかを確認します。この条件は、各 Pod セキュリティーコンテキスト 内の privileged フィールドの値のみを確認します。

Privileged Container

ブール値: 各 PodSecurityContextprivileged フィールドの値が true に設定されている場合、true

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Root filesystem writeability

デプロイメントが readOnlyFilesystem モードで設定されているかどうかを確認します。

Read-Only Root Filesystem

ブール値: 各 PodSecurityContextreadOnlyRootFilesystem フィールドの値が true に設定されている場合、true

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Seccomp Profile Type

デプロイメントに定義された seccomp プロファイルのタイプ。seccomp オプションが Pod レベルとコンテナーレベルの両方で指定されている場合、コンテナーオプションが Pod オプションをオーバーライドします。Security Context を参照してください。

Seccomp Profile Type

以下のいずれかになります。

UNCONFINED
RUNTIME_DEFAULT
LOCALHOST

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Privilege escalation

デプロイメントでコンテナープロセスが親プロセスよりも多くの権限を取得できる場合にアラートを出します。

Allow Privilege Escalation

ブール値

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Drop Capabilities

コンテナーからドロップする必要がある Linux 機能。指定された機能がドロップされない場合にアラートを発行します。たとえば、SYS_ADMIN および SYS_BOOT を使用して設定されており、デプロイメントでこれら 2 つの機能の 1 つだけ が削除されるか、どちらも 削除されない場合、アラートが発生します。

Drop Capabilities

以下のいずれかになります。

ALL
AUDIT_CONTROL
AUDIT_READ
AUDIT_WRITE
BLOCK_SUSPEND
CHOWN
DAC_OVERRIDE
DAC_READ_SEARCH
FOWNER
FSETID
IPC_LOCK
IPC_OWNER
KILL
LEASE
LINUX_IMMUTABLE
MAC_ADMIN
MAC_OVERRIDE
MKNOD
NET_ADMIN
NET_BIND_SERVICE
NET_BROADCAST
NET_RAW
SETGID
SETFCAP
SETPCAP
SETUID
SYS_ADMIN
SYS_BOOT
SYS_CHROOT
SYS_MODULE
SYS_NICE
SYS_PACCT
SYS_PTRACE
SYS_RAWIO
SYS_RESOURCE
SYS_TIME
SYS_TTY_CONFIG
SYSLOG
WAKE_ALARM

AND

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Add Capabilities

Raw パケットを送信したり、ファイルパーミッションをオーバーライドする機能など、コンテナーには追加できない Linux 機能。指定された機能が追加されたときにアラートを出します。たとえば、NET_ADMIN または NET_RAW で設定されており、デプロイメントマニフェスト YAML ファイルにこれら 2 つの機能のうち少なくとも 1 つが含まれている場合、アラートが発生します。

Add Capabilities

AUDIT_CONTROL
AUDIT_READ
AUDIT_WRITE
BLOCK_SUSPEND
CHOWN
DAC_OVERRIDE
DAC_READ_SEARCH
FOWNER
FSETID
IPC_LOCK
IPC_OWNER
KILL
LEASE
LINUX_IMMUTABLE
MAC_ADMIN
MAC_OVERRIDE
MKNOD
NET_ADMIN
NET_BIND_SERVICE
NET_BROADCAST
NET_RAW
SETGID
SETFCAP
SETPCAP
SETUID
SYS_ADMIN
SYS_BOOT
SYS_CHROOT
SYS_MODULE
SYS_PACCT
SYS_PTRACE
SYS_RAWIO
SYS_RESOURCE
SYS_TIME
SYS_TTY_CONFIG
SYSLOG
WAKE_ALARM

OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Container Name

コンテナーの名前。

Container Name

String

正規表現、
NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

AppArmor プロファイル

コンテナーで使用されるアプリケーション Armor ("AppArmor") プロファイル。

AppArmor プロファイル

String

正規表現、
NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Liveness Probe

コンテナーが liveness プローブを定義するかどうか。

Liveness Probe

ブール値

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Readiness Probe

コンテナーが readiness プローブを定義するかどうか。

Readiness Probe

ブール値

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

セクション: デプロイメントメタデータ

Disallowed Annotation

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

Disallowed Annotation

key=value

value はオプションです。

値が見つからない場合は、"key=" の形式にする必要があります。

正規表現、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Required Label

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

Required Label

key=value

value はオプションです。

値が見つからない場合は、"key=" の形式にする必要があります。

正規表現、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Required Annotation

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

Required Annotation

key=value

value はオプションです。

値が見つからない場合は、"key=" の形式にする必要があります。

正規表現、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Runtime Class

デプロイメントの RuntimeClass

Runtime Class

String

正規表現、
NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

ホストネットワーク

HostNetwork が有効になっているかどうかを確認します。これは、コンテナーが別のネットワークスタック内に配置されないことを意味します (たとえば、コンテナーのネットワークはコンテナー化されていません)。これは、コンテナーがホストのネットワークインターフェイスに完全にアクセスできることを意味します。

ホストネットワーク

ブール値

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Host PID

Process ID (PID) namespace がコンテナーとホスト間で分離されているかどうかを確認します。これにより、異なる PID namespace 内のプロセスが同じ PID を持つことができます。

Host PID

ブール値

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Host IPC

ホスト上の IPC (POSIX/SysV IPC) namespace (名前付き共有メモリーセグメント、セマフォ、メッセージキューを分離する namespace) が、コンテナーと共有されているかどうかを確認します。

Host IPC

ブール値

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Namespace

デプロイメントが属する namespace の名前。

Namespace

String

正規表現、
NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

レプリカ

デプロイメントレプリカの数。oc scale を使用してデプロイメントのレプリカを 0 から特定の数値にスケーリングする場合は、デプロイメントがポリシーに違反すると、アドミッションコントローラーがこのアクションをブロックします。

レプリカ

<、>、⇐、>=、または何もなし (等しいことを意味します)
—と— 
10 進数 (オプションの小数値を含む数値)。

例:
>=5 または
9.5

NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

セクション: ストレージ

Volume Name

ストレージの名前。

Volume Name

String

正規表現、
NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Volume Source

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

Volume Source

String

正規表現、
NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Volume Destination

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

Volume Destination

String

正規表現、
NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Volume Type

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

Volume Type

String

正規表現、
NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

マウントされたボリュームの書き込み可能性

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

書き込み可能なマウント済みボリューム

ブール値

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

マウントの伝播

コンテナーが BidirectionalHost to Container、または None モードでボリュームをマウントしているかどうかを確認します。

マウントの伝播

以下のいずれかになります。

NONE
HOSTTOCONTAINER
BIDIRECTIONAL

NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

ホストマウントの書き込み可能性

リソースが、書き込み権限のあるホストにパスをマウントしている。

Writable Host Mount

ブール値

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

セクション: ネットワーク

プロトコル

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

公開ポートプロトコル

String

正規表現、
NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

ポート

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

公開されるポート

<、>、⇐、>=、または何もなし (等しいことを意味します)
— と — 
整数。

例:
1024 以上
22

NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Exposed Node Port

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

Exposed Node Port

(公開ポートと同じ)

NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Port Exposure

ロードバランサーやノードポートなど、サービスの公開方法。

ポートの公開方法

以下のいずれかになります。

UNSET
EXTERNAL
NODE
HOST
INTERNAL
ROUTE

NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

検出された予期しないネットワークフロー

検出されたネットワークトラフィックがデプロイメントのネットワークベースラインの一部であるかどうかを確認します。

検出された予期しないネットワークフロー

ブール値

Runtime ONLY - Network

Ingress Network Policy

イングレス Kubernetes ネットワークポリシーの有無を確認します。

Ingress Network Policy がある

ブール値

正規表現、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Egress Network Policy

エグレス Kubernetes ネットワークポリシーの有無を確認します。

Egress Network Policy がある

ブール値

正規表現、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

セクション: プロセスアクティビティー

プロセス名

デプロイメントで実行されるプロセスの名前。

プロセス名

String

正規表現、
NOT、
AND、OR

ランタイム のみ - プロセス

Process Ancestor

デプロイメントで実行されるプロセスの親プロセスの名前。

Process Ancestor

String

正規表現、
NOT、
AND、OR

ランタイム のみ - プロセス

Process Arguments

デプロイメントで実行されるプロセスのコマンド引数。

Process Arguments

String

正規表現、
NOT、
AND、OR

ランタイム のみ - プロセス

Process UID

デプロイメントで実行されるプロセスの UNIX ユーザー ID。

Process UID

整数

NOT、
AND、OR

ランタイム のみ - プロセス

Unexpected Process Executed

デプロイメントにあるロックされたプロセスベースラインで、プロセス実行がリスト表示されていないデプロイメントを確認します。

Unexpected Process Executed

ブール値

ランタイム のみ - プロセス

セクション: Kubernetes アクセス

Service Account

サービスアカウントの名前

Service Account

String

正規表現、
NOT、
AND、OR

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Automount Service Account Token

デプロイメント設定がサービスアカウントトークンを自動的にマウントするかどうかを確認します。

Automount Service Account Token

ブール値

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

Minimum RBAC Permissions

デプロイメントの Kubernetes サービスアカウントに、指定のレベル以上 (= または >) の Kubernetes RBAC パーミッションレベルがあるかどうかを照合します。

Minimum RBAC Permissions

以下のいずれかになります。

DEFAULT
ELEVATED_IN_NAMESPACE
ELEVATED_CLUSTER_WIDE
CLUSTER_ADMIN

NOT

デプロイ
ランタイム (ランタイムの条件とともに使用する場合)

セクション: Kubernetes イベント

Kubernetes Action

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

Kubernetes Resource

以下のいずれかになります。

PODS_EXEC
PODS_PORTFORWARD

! OR のみ

Runtime ONLY - Kubernetes Events

Kubernetes User Name

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

Kubernetes User Name

ハイフン (-) とコロン (:) のみを含む英数字

正規表現、
NOT,
!OR のみ

Runtime ONLY - Kubernetes Events

Kubernetes User Group

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

Kubernetes User Groups

ハイフン (-) とコロン (:) のみを含む英数字

正規表現、
NOT,
!OR のみ

Runtime ONLY - Kubernetes Events

Kubernetes Resource Type

アクセスされた Kubernetes リソースのタイプ。

Kubernetes Resource

以下のいずれかになります。

config map
シークレット
ClusterRoles
ClusterRoleBindings
NetworkPolicies
SecurityContextConstraints
EgressFirewalls

! OR のみ

Runtime ONLY - Audit Log

Kubernetes API Verb

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

Kubernetes API Verb

以下のいずれかになります。

CREATE
DELETE
GET
PATCH
UPDATE

! OR のみ

Runtime ONLY - Audit Log

Kubernetes Resource Name

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

Kubernetes Resource Name

ハイフン (-) とコロン (:) のみを含む英数字

正規表現、
NOT,
!OR のみ

Runtime ONLY - Audit Log

User Agent

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

User Agent

String

正規表現、
NOT,
!OR のみ

Runtime ONLY - Audit Log

Source IP Address

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

Source IP Address

IPV4 または IPV6 アドレス

正規表現、
NOT,
!OR のみ

Runtime ONLY - Audit Log

Is Impersonated User

サービスアカウントまたは他のアカウントで権限を偽装ユーザーによって要求が行われたかどうかを確認します。

Is Impersonated User

ブール値

Runtime ONLY - Audit Log

6.1.4. ポリシーの適用について

RHACS でポリシーを設定する場合、セキュリティーポリシーに違反する状態を検出したときに RHACS がどのように応答するかを選択できます。

RHACS は、違反の検出フェーズに応じて、さまざまな種類のポリシー適用、つまり違反に対処するアクションを実行できます。ポリシーの適用を設定する場合、ポリシーの適用内容を設定するときに複数のステージを選択できます。たとえば、BuildDeploy を選択すると、RHACS はビルドパイプラインに問題を警告します。ただし、開発者がビルドの続行を許可した場合に、デプロイメントが阻止されます。

build time enforcement では、イメージがポリシーの条件に一致する場合に、継続的インテグレーション (CI) ビルドが失敗するように RHACS を設定できます。つまり、重大度レベルの修正可能な CVE があり、その条件に対してポリシーを設定している場合など、ビルドにポリシーに違反する条件がある場合、ビルドは失敗するはずです。たとえば、RHACS がイメージまたはデプロイメントをチェックするように設定し、そのチェックを CI/CD パイプラインに統合した場合に、RHACS がポリシーが失敗する条件を検出すると、RHACS API はゼロ以外の終了コードを返します。パイプラインはそのコードを使用してビルドを失敗させます。

deploy time enforcement では、RHACS は Kubernetes アドミッションコントローラーおよび OpenShift Container Platform アドミッションプラグインと連携して、セキュリティーポリシーの強制適用を可能にします。RHACS は、Kubernetes または OpenShift Container Platform が、ポリシーの基準に一致するデプロイメント、デーモンセット、ジョブなどのワークロードが作成または更新されないようにします。これは、ビルドが成功した場合でも、重大な問題のあるデプロイメントをシャットダウンする場合に役立ちます。

6.1.4.1. デプロイステージのセキュリティーポリシーの実施

Red Hat Advanced Cluster Security for Kubernetes は、デプロイ時のポリシーに対して、アドミッションコントローラーによるハードな適用と RHACS Sensor によるソフトな適用という 2 つの形式のセキュリティーポリシー適用をサポートしています。アドミッションコントローラーは、ポリシーに違反するデプロイメントの作成または更新をブロックします。アドミッションコントローラーが無効または使用できない場合、Sensor はポリシーに違反するデプロイメントのレプリカを 0 にスケールダウンして強制を実行できます。

警告

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

6.1.4.1.1. ハードエンフォースメント

ハードエンフォースメントは、RHACS アドミッションコントローラーによって実行されます。アドミッションコントローラーが適用されているクラスターでは、Kubernetes または OpenShift Container Platform サーバーがすべての非準拠のデプロイメントをブロックします。アドミッションコントローラーは、CREATE および UPDATE 操作をブロックします。デプロイ時の強制が有効に設定されたポリシーを満たす Pod の作成または更新リクエストはすべて失敗します。

注記

Kubernetes アドミッション Webhook は、CREATEUPDATEDELETE、または CONNECT 操作のみをサポートします。RHACS アドミッションコントローラーは、CREATE および UPDATE 操作のみをサポートします。kubectl patchkubectl setkubectl scale などの操作は、UPDATE 操作ではなく、PATCH 操作です。Kubernetes では PATCH 操作がサポートされていないため、RHACS は PATCH 操作の強制を実行できません。

ブロックを強制するには、RHACS でクラスターに対して次の設定を有効にする必要があります。

  • Enforce on Object Creates: Dynamic Configuration セクションのこのトグルは、アドミッションコントロールサービスの動作を制御します。これを機能させるには、Static Configuration セクションの Configure Admission Controller Webhook to listen on Object Creates トグルをオンにする必要があります。
  • オブジェクトの更新時に強制: Dynamic Configuration セクションのこのトグルは、アドミッションコントロールサービスの動作を制御します。これを機能させるには、Static Configuration セクションの Configure Admission Controller Webhook to listen on Object Updates トグルをオンにする必要があります。

Static Configuration 設定の項目を変更した場合に、その変更を有効にするにはセキュアクラスターを再デプロイする必要があります。

6.1.4.1.2. ソフトな適用

ソフトな適用は RHACS Sensor によって実行されます。このエンフォースメントにより、操作が開始しなくなります。ソフトな適用では、Sensor はレプリカを 0 にスケーリングし、Pod がスケジュールされるのを防ぎます。このエンフォースメントでは、クラスター内で準備ができていないデプロイメントが使用可能になります。

ソフトな適用が設定されていて、Sensor がダウンしている場合、RHACS は適用を実行できません。

6.1.4.1.3. namespace の除外

デフォルトでは、RHACS は、stackroxkube-systemistio-system namespace などの特定の管理 namespace をエンフォースメントブロックから除外します。その理由は、RHACS が正しく機能するためには、これらの namespace 内の一部の項目をデプロイする必要があるためです。

6.1.4.1.4. 既存のデプロイメントへのエンフォースメント

既存のデプロイメントの場合、ポリシーの変更は、Kubernetes イベントが発生したときに、基準が次に検出されたときにのみ適用されます。ポリシーに変更を加えた場合は、Policy Management を選択し、Reassess All をクリックしてポリシーを再評価する必要があります。このアクションは、新しい受信 Kubernetes イベントがあるかどうかに関係なく、すべての既存のデプロイメントにデプロイポリシーを適用します。ポリシーに違反があった場合は、RHACS がエンフォースメントを実行します。

6.1.5. セキュリティーポリシーの共有

Red Hat Advanced Cluster Security for Kubernetes バージョン 3.0.44 以降、ポリシーをエクスポートおよびインポートして、異なる Central インスタンス間でセキュリティーポリシーを共有できます。ポリシーを共有すると、すべてのクラスターに同じ標準を適用できるようになります。ポリシーを共有するには、JSON ファイルとしてエクスポートして、別の Central インスタンスにインポートし直す必要があります。

注記

現在、RHACS ポータルを使用して、複数のセキュリティーポリシーを一度にエクスポートすることはできません。ただし、API を使用して複数のセキュリティーポリシーをエクスポートできます。RHACS ポータルで Help API reference に移動し、API リファレンスを確認します。

6.1.5.1. セキュリティーポリシーのエクスポート

ポリシーをエクスポートすると、ポリシーの内容だけでなく、クラスターの範囲、クラスターの除外、および設定されたすべての通知も含まれます。

手順

  1. RHACS ポータルで、Platform Configuration Policy Management に移動します。
  2. Policies ページから、編集するポリシーを選択します。
  3. Actions Export policy to JSON を選択します。

6.1.5.2. セキュリティーポリシーのインポート

RHACS ポータルの システム ポリシービューからセキュリティーポリシーをインポートできます。

手順

  1. RHACS ポータルで、Platform Configuration Policy Management に移動します。
  2. Import policy をクリックします。
  3. Import policy JSON ダイアログで Upload をクリックし、アップロードする JSON ファイルを選択します。
  4. Begin import をクリックします。

RHACS の各セキュリティーポリシーには、一意の ID (UID) と一意の名前があります。ポリシーをインポートすると、RHACS はアップロードされたポリシーを次のように処理します。

  • インポートされたポリシーの UID と名前が既存のポリシーと一致しないと、RHACS は新しいポリシーを作成します。
  • インポートされたポリシーで、既存のポリシーと同じ UID が設定されているが、別の名前の場合には、以下のいずれかを実行できます。

    • 両方のポリシーを保持する。RHACS はインポートされたポリシーを新しい UID で保存します。
    • 既存のポリシーをインポートされたポリシーに置き換える。
  • インポートされたポリシーの名前が既存のポリシーと同じものの、UID が異なる場合は、以下のいずれかを実行できます。

    • インポートされたポリシーの新しい名前を指定して、両方のポリシーを保持する。
    • 既存のポリシーをインポートされたポリシーに置き換える。
  • インポートされたポリシーの名前が既存のポリシーと同じ場合、Red Hat Advanced Cluster Security for Kubernetes はポリシー条件が既存のポリシーに一致するかどうかを確認します。ポリシー基準が一致する場合、RHACS は既存のポリシーを保持し、成功メッセージを表示します。ポリシー条件が一致しない場合は、以下のいずれかを実行できます。

    • インポートされたポリシーの新しい名前を指定して、両方のポリシーを保持する。
    • 既存のポリシーをインポートされたポリシーに置き換える。
重要
  • 同じ Central インスタンスにインポートする場合、RHACS はエクスポートされたすべてのフィールドを使用します。
  • 別の Central インスタンスにインポートする場合、RHACS はクラスタースコープ、クラスター除外、通知などの特定のフィールドを省略します。RHACS は、省略されたフィールドをメッセージに表示します。これらのフィールドはインストールごとに異なりますが、フィールドを別の Central インスタンスに移行することはできません。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.