ディスカバリー・ルールエンジン

大規模な検出結果の手動確認を省くスケーラブルな自動化

概要

ディスカバリー・ルールエンジンでは、検出の適用権限を持つユーザーが、ゲートウェイ上の特定のPAM構成に対して、順序付きのルールセットを作成および管理できます。検出ジョブがリソースをどう識別するか、検出結果をどう扱い・保存するかを、ルールで制御できます。

この仕組みにより、大規模環境でもバッチ処理を自動化できます。数百から数千件に及ぶ検出リソースを手作業で確認・処理する代わりに、定めた条件に応じて追加、無視、確認のいずれかへ振り分けられます。

ルールは上から順に評価され、検出されたリソースに最初に一致したルールが、その後の処理を決定します (最初に一致したルールが適用されます)。

動作の仕組み

検出ジョブが実行されると、検出された各アイテムは、定義したルールに従って上から順に評価されます。

  • 最初に一致したルールのみ適用

  • 該当ゲートウェイでのルール評価の終了

  • 選択されたアクションの実行 (追加 / 無視 / 確認)

ルールのアクション

各ルールでは、次のいずれかのアクションを指定できます。

  • 追加 対象リソースにルール条件を自動適用し、ボルトへ追加

  • 無視 一致したリソースを除外し、ノイズや誤検知を抑制

  • 確認 追加の判断が必要なリソースを、ユーザーが確認する対象としてフラグ付け

ルールの作成または管理

ルールは、ボルトの検出セクション内のルールタブから管理します。次の操作が可能です。

実行順序と優先度

ルールは定義された順序で評価されます。

  • 既定では、ルールは作成順に評価

  • ルールの順序は手動で並び替え可能

  • 最初に一致したルールのみ適用 (1回の検出ジョブで有効になるのは1件のみ)

検出ジョブ作成時のルールセットの割り当て

  • [検出ジョブを作成] をクリックし、ゲートウェイを選択します。

  • そのゲートウェイに複数のPAM構成が関連付けられている場合は、使用するPAM構成を選択します。

  • 選択したゲートウェイでジョブが実行される際には、そのPAM構成に関連付けられているルールが適用されます。

  • 選択したPAM構成にルールが設定されていない場合は、セットアップ中に新規作成できます。

ルールで使えるフィールド

  • recordType - PAMレコードの種類

  • recordTitle - 自動生成されたレコードのタイトル

  • recordNotes - 検出後処理でルール適用前に付与されるメモ (言語設定に応じた文言へ差し替え可能)

  • recordDesc - オブジェクトの説明 (言語設定に応じた文言へ差し替え可能)

  • parentUid - 親レコードのUID。主にPAMユーザーレコードで、ユーザーをリソースへ紐づけるときに使用

  • parentRecordType - 親レコードの種類。リソースレコードとあわせ、同一リソース上のユーザーをまとめるのに利用

  • login - PAMユーザー / マシン / データベース / ディレクトリ各オブジェクトのログイン名。プロバイダーやリソース種別によっては検出処理で値が入るが、多くは空

  • password - PAMユーザー / マシン / データベース / ディレクトリ各オブジェクトのパスワード。検出では通常は未設定

  • privatePEMKey - PAMユーザー / マシン / データベース / ディレクトリ各オブジェクトの秘密鍵。検出では通常は未設定

  • distinguishedName - PAMユーザーおよびPAMディレクトリオブジェクトの識別名 (DN)

  • connectDatabase - PAMユーザーおよびPAMデータベースオブジェクトの接続先データベース

  • managed - ユーザーが別プロセスで管理されているかを示すフラグ。AWSではRDSのIAMユーザーが該当。他プロバイダーでも同種の仕組みがある場合がある

  • hostName - リソースのホスト名またはIP。照合はホスト名またはIPのいずれかに対して行われ、評価時はIPも同一条件に含まれる。例: hostName == '127.0.0.1'(hostName == '127.0.0.1' or ip == '127.0.0.1') に展開され、hostName != '127.0.0.1'(hostName != '127.0.0.1' and ip != '127.0.0.1') に展開

  • port - 接続ポート。文字列ではなく数値として扱い、大小比較 (> / >= / < / <=)が可能

  • operatingSystem - PAMマシンオブジェクトのOS情報。AWSやAzureなどでは取得できるが、ローカルネットワーク経由ではマシン外部からOSを判定できないため、未設定のことが多い

  • instanceId - PAMマシンオブジェクトの識別子。AWSではEC2インスタンスID、AzureではVM名、その他ではIPまたはホスト名。同一ゲートウェイ上のPAMマシンでは一意になる想定

  • instanceName - PAMマシンオブジェクトの名称。AWSではEC2インスタンス名またはID、AzureではVM名、その他ではIPまたはホスト名

  • providerGroup - クラウド上のリソースまとまりの総称。Azureではリソースグループ。AWSでは未使用

  • providerRegion - クラウドのリージョン総称。AWSではリージョン名。Azureではロケーションに相当

  • databaseId - PAMデータベースオブジェクトの識別子。AWSではRDSインスタンスID、Azureではデータベース名、その他では IP/ホスト名:ポート。同一ゲートウェイ上のPAMデータベースでは一意になる想定

  • databaseType - データベース種別の列挙子

  • useSSL - 検出でSSLが必要かを示す真偽値

  • domainName - ディレクトリサービスのドメイン名 (識別名ではない)

  • directoryId - PAMディレクトリオブジェクトの識別子。AWSではディレクトリID、Azureではドメイン名、その他では IP/ホスト名:ポート。同一ゲートウェイ上のPAMディレクトリでは一意になる想定

  • directoryType - ディレクトリ種別の列挙子

port では >>=<<= などの大小比較が使えます。ルール式では数値を引用符で囲まないでください。文字列同士でも辞書順の大小比較が可能です。例: hostName > "C" は、ホスト名が「D」で始まるときに真、「B」で始まるときに偽になります。

managed および useSSL は真偽値です。ルール式では true / false を引用符で囲まないでください。

演算子

演算子
説明
正規表現?
データ型

==

等しい

いいえ

すべてのデータ型

!=

等しくない

いいえ

すべてのデータ型

>

より大きい

いいえ

すべてのデータ型

<

より小さい

いいえ

すべてのデータ型

>=

以上

いいえ

すべてのデータ型

<=

以下

いいえ

すべてのデータ型

=^

先頭一致

いいえ

文字列

=*

部分一致 (含む)

いいえ

文字列

=$

末尾一致

いいえ

文字列

!^

先頭に一致しない

いいえ

文字列

!*

部分一致しない (含まない)

いいえ

文字列

!$

末尾に一致しない

いいえ

文字列

=~~

正規表現検索。文字列値の内容を検索し、一致が見つかれば真。

はい

文字列

!~~

正規表現検索。文字列値の内容を検索し、一致が見つかれば偽。

はい

文字列

=~

正規表現マッチ。文字列値の先頭から検索し、一致が見つかれば真。

はい

文字列

!~

正規表現マッチ。文字列値の先頭から検索し、一致が見つかれば偽。

はい

文字列

in

集合に含まれる値。値はJSON配列。例: [ “One”, “Two”, “Three” ]

いいえ

[String|Float|Int, …]

最終更新