コンプライアンスIQルール設定

Network Configuration Managerでは、ルールは、デバイス構成が組織の標準に準拠しているかを判定するための条件を定義します。
ルールはコンプライアンスポリシーの構成要素であり、逸脱の自動検出、ベストプラクティスの適用、セキュリティベースラインの維持を可能にします。

本機能はビルド「12.8.712」以降ご利用可能です。
ビルド番号の確認方法はこちら

概要

ルールは複数のノードで構成され、各ノードは、構成がコンプライアンスチェックに準拠しているか、違反しているかを判定する役割を持ちます。
ワークフローでルールを作成すると、複数のノードを順番に追加・設定できます。

ルールを追加する手順

[コンプライアンスIQ]→[ルール]→[ルールを作成]をクリックします。

ルールの追加

シンプルルール

設定方法は こちら
※[ルールを作成する]にて、[シンプルルール テキスト形式で作成]を選択後、手順2よりご確認ください。

フロールール

  1. [ルールを作成する]にて、[フロールール フローチャートで作成]を選択します。
  2. +アイコンをクリックし、設定するノードを選択します。
    各ノードの詳細はこちらをご確認ください。
  3. ノードを選択後、詳細な設定を実施し[保存]します。
  4. [TRUE]と[FALSE]に、さらにノードを追加します。
    この際、[準拠]、[違反]、[不要]、[終了]を選択すると、 選択したノード以降のフローが終了します。
  5. フローの完成後、[次へ]をクリックします。
  6. [ルールの詳細]を設定し、[保存]します。
    ルールの詳細

各ノードの詳細

条件

当該ノードは、デバイス構成内で一致させるべき正確な条件を定義します。
これはNetwork Configuration Managerが、構成は基準を満たしているか、違反するかを評価する主要な要素です。
コマンドの詳細、条件、変数、パターンを指定できます。
コンプライアンスの判定はここで行われ、この結果が評価対象構成セクションの判定結果を直接決定します。

条件

ブロックの識別

当該ノードは、開始/終了マーカー、インデント、解析ルールに基づいて構成内の特定のセクションを識別・抽出します。
開始ブロックと終了ブロックを定義することで、構成内の特定のブロックを識別できます。
ブロック識別条件を適用すると、一致したブロック内でのみ条件を実行できるため、対象となる構成をさらに絞り込めます。

▶開始ブロック

本ブロックは構成ブロックの開始を定義する必須入力項目です。
値は正規表現で定義でき、ルール入力やGrep出力も含めることができます。

▶終了ブロック

本ブロックはブロックの終了を指定する任意入力項目です。
値は変数と正規表現パターンの両方をサポートします。

ブロックの識別

ブロックを識別する方法は3つあります:

  • 開始ブロックとインデントを使用
    開始ブロック(例:Interface)を指定し、[インデントを使用]を選択します。
    開始ブロック以降のインデントされたテキストがブロックとして扱われ、インデントが終了した時点でブロックも終了します。
開始ブロック
  • 開始ブロックと終了ブロック
    [開始ブロック]と[終了ブロック]を指定する方法です。
    両者の間のテキストがブロックとして扱われます。
    既定の動作より早くブロックを区切りたい場合は、正規表現で値を入力してください。
  • 開始ブロック単体
    開始ブロックのみを入力した場合(例:interface)、次の開始ブロックキーワード(interface)までのテキストがブロックとして扱われます。

ブロックは、単一の行または複数の行として扱うことができます。

  • シングルラインブロック
    シングルラインブロックを有効にすると、検知されたキーワードを含む各行がブロックとして扱われます。
シングルラインブロック
  • マルチラインブロック
    マルチラインブロックを有効にすると、複数行が1つのブロックとして扱われます。
マルチラインブロック

ループ

当該ノードは、ブロックに対して定義済み条件を実行します。
これにより、関連するすべてのブロックを個別にチェックでき、また、追加のブロック識別を実行する用途にも使用できます。

ループ

終了

当該ノードはループの終了を示します。
このノードに到達すると、現在のブロックまたは構成に対する追加の評価は行われません。
意図したチェック完了後に処理を停止するために使用します。

プロセス

複数のルールを個別に作成することなく、1つのルール内で複数のコンプライアンスチェックを設定できます。
複数の検証または操作を、ロジックを相互に連結せず独立して実行します。
各プロセスの結果は個別に記録されます。

プロセス

準拠

評価対象のブロックまたはパターンが定義済み条件を完全に満たす場合、準拠として識別されます。
結果は追跡用レポートとして生成できます。

違反

条件を満たさない場合、違反として識別されます。
また、違反メッセージの表示や修復手順の実行などが可能です。

違反
  • ステータス
    ネットワーク運用またはセキュリティへの影響に基づき、ステータス(重大、メジャー、警告)を指定します。
  • 違反メッセージ
    変数(例:$INTERFACE_NAME)をサポートしており、動的かつパラメータ化された非準拠のメッセージを設定できます。
  • 修復の手順
    構成を修正して準拠状態に戻すための手順を段階的に示します。
    デバイスが指定条件を満たさない場合は、関連CLIコマンドを含めてください。
  • 修復テンプレート
    Network Configuration Managerが違反を自動的に修復するために展開できる、事前定義済みの構成テンプレートです。
    展開前に、コンプライアンス変数の値をconfiglet変数で動的に使用することもできます。
    [自動で修復を実行する]を有効化すると、修復テンプレートを自動実行します。
    無効化している状態だと、手動で実行できます。

不要

当該ノードは、ルールが特定の構成またはセクションを無視する場合に使用します。

各ノードの設定

フィールド 説明
名前 説明ラベル
詳細 次のようなデバイス入力を指定および選択できます
  • Running コンフィグ - ネットワークデバイスの現在の構成
  • Startup コンフィグ - ネットワークデバイスの初期構成
  • デバイスのコマンド出力 - startup/running構成に加え、ユーザー指定コマンドの応答に対してもコンプライアンスチェックを実行します
  • デバイスのプロパティ - デバイスのハードウェアプロパティを検証します
基準
  • 条件 - パターンを判別する条件
    詳細はこちらをクリックしてください
  • 数 - パターンが出現した回数
  • パターン - 検索対象テキスト
変数 変数は、同一ルール内の他ノード、修復手順、コマンドテンプレートで再利用できる値を保存するために使用します。
画面右側の[変数]画面の[追加]より確認いただけます。
変数設定の詳細はこちらをクリックしてください。
  • コンフィグから解析 - デバイス構成から特定の値を抽出できます
  • 入力 - 複数ルール間で設定した静的変数を利用できます
基準のパターン 複数の基準を設定する際、それぞれの基準の関係をAND/ORで設定できます

条件の基準

  • 次の値を含む -構成セクションに指定した入力データが含まれている必要がありますが、完全一致である必要はありません。
    たとえば、set grayware を含むよう指定した場合、その文字列を含む任意の行が準拠とみなされます。
  • 次の値を含まない -構成セクションには指定した入力データが含まれていてはいけません。
  • ~と一致する -構成セクションは指定入力に一致する必要があります。この条件は正規表現も使用できます。
  • ~と一致しない -構成セクションは指定入力に一致してはいけません。この条件は正規表現も使用できます。
  • 次に等しい -指定した入力行全体が構成内に存在する必要があります。
    複数行を指定した場合は同じ順序でチェックされますが、その間に他の行が存在していても問題ありません。
  • 次に等しくない -構成は指定入力と完全一致してはいけません。
    複数行が指定された場合、途中に他の行があっても同じ順序では現れてはいけません。
  • 指定したセットを含む -複数行を指定した場合、NCMはそのすべてが指定順序どおりに含まれるかをチェックします。
    行が完全に同順序で存在し、逸脱がない場合は準拠、それ以外はルール違反として判定されます。

変数

変数はプレースホルダーとして機能し、ワークフロー内の複数の条件またはブロック間で再利用できる値を保持します。
[コンフィグから解析]と[入力]のいずれでも、変数は同一ルール内の他ノード、修復手順、コマンドテンプレートで再利用できます。

▶コンフィグから解析

[コンフィグから解析]を使用すると、事前定義パターンによってデバイス構成から特定値を抽出できます。
変数は ($VARIABLE_NAME) のように括弧内で定義し、ユーザー指定の正規表現パターンに関連付けます。
これにより、構成から値を動的に抽出できます。

たとえば構成に interface Loopback0 があり、 Loopback0 を変数として取得したい場合は、interface ($INTERFACE_NAME)のように定義できます。
すると$INTERFACE_NAME変数は、指定した正規表現パターン(例:(\S+))に基づいて値と一致します。
これはinterfaceの後に続く空白以外の文字列を取得します。

サンプル入力と想定出力を示します:

開始ブロック
interface ($INTERFACE_NAME)

変数

  • 変数の詳細:コンフィグから解析
  • 名前:$INTERFACE_NAME
  • 値:\S+

正規表現の値は要件に応じて変更できます。
たとえば整数の場合は\d+を使用できます。
$INTERFACE_NAMEは(\S+)に置換され、更新後の開始ブロックである interface(\S+)が構成内容との一致に使用されます。

サンプル構成
サンプル構成
出力
名前 表示名 値
$INTERFACE_NAME (表示されるテキスト名) loopback0

▶入力

ユーザーは入力をカスタマイズおよび変更できます。[コンフィグから解析]と異なり、[入力]は静的値です。 ここで[グローバル変数としてマーク]のチェックボックスを有効にすると、その変数を他のルールでも使用できます。

この記事はお役に立ちましたでしょうか?