SmartTasks
マネジメントスマートタスクは、システム内のさまざまなトリガーに応じた自動アクションを設定することができます。SmartTaskは、トリガーとアクションの組み合わせです。
-
トリガーはイベントであり、現在はポリシーのインストールやセッションの公開など、既存の管理操作の観点から定義されています。
-
アクションは、スクリプトの実行、Webリクエストの投稿、電子メールの送信など、トリガーイベントの後に行われる自動的な応答です。
使用可能なトリガー
-
Before Publish- 管理者がセッションをパブリッシュするときに発行されます。SmartTaskは、セッションのメタデータ(発行管理者、ドメイン情報、セッション名)をアクションに渡します。ローカルのManagement APIサーバが利用可能な場合、公開されようとしているセッションの変更は、"show changes" APIへの応答としてフォーマットされます。
-
After Publish- 管理者がセッションのパブリッシュを成功させた後に発行されます。SmartTaskは、Before Publishトリガーと同じ情報をアクションに渡します。
-
After Install Policy- ポリシーがインストールされた後に実行されます。SmartTaskは、インストールされたパッケージ、インストールを開始した管理者、タスクの結果など、ポリシーのインストールタスクに関連する情報をアクションに渡します。
利用可能なアクション
-
スクリプトの実行- あらかじめ定義されたリポジトリスクリプトを実行します。スクリプトは、トリガーのデータを最初のパラメータとして取得します。トリガーのデータはBase64でエンコードされたJSONデータとして渡され、それをデコードしてカスタムビジネスロジックを実装することができます。
Before" オペレーショントリガーで実行するように設定された SmartTasks では、リポジトリスクリプトは "result" とオプションの "message" フィールドを持つ JSON オブジェクトを出力し、コード 0 で終了することにより、操作を中断するか継続するかを合図することができます。result "フィールドの値が "failure "である場合、操作は中断される。
他のトリガーで実行するように設定されたSmartTasksの場合、終了コード0は成功として扱われます。それ以外の終了コードは失敗として扱われる。
注 - デフォルトでは、リポジトリスクリプトはローカルのセキュリティ管理サーバ上で実行されますが、Web APIを使用してカスタマイズすることができます。
-
WebRequest- 設定された URL に対して HTTPS POST Web リクエストを実行します。トリガーのデータは、リクエストのペイロードにJSONデータとして渡されます。
注:
-
設定するURLは、HTTPSで始まり、そのようなリクエストを処理できるターゲットWebサーバである必要があります。
-
自己署名入りSSL証明書を持つWebサーバの場合、証明書のフィンガープリントを指定して信頼性を確立します。SmartTaskエディタでGet Fingerprint をクリックするか、Webブラウザで証明書を表示すると、フィンガープリントを取得できます。
Before" オペレーショントリガーで実行するように設定された SmartTasks の場合、リポジトリスクリプトは、JSON オブジェクト "result" およびオプションの "message" フィールドと 200 OK というステータスで応答することにより、操作を中断するか継続するかを通知することができます。 result "フィールドの値が "failure "である場合、操作は中断される。
他のトリガーと一緒に実行するように設定されたSmartTasksの場合、200 OKのリターンコードは成功として扱われます。それ以外の終了コードは失敗として扱われる。
-
SmartTaskのプロパティを設定する
-
SmartTaskの一意の名前を入力します - nameプロパティは必須で、大文字と小文字を区別します。
-
トグルボタンでSmartTaskのON/OFFを切り替えます。
-
オプション - SmartTaskの説明を入力します。
-
SmartTaskのトリガーを選択します。
-
トリガーが発射されたときに発生するアクションを選択します。
-
カスタムデータ -カスタムデータフィールドにJSONオブジェクトを追加することで、トリガー情報と共に送信されるJSONデータに追加情報を追加することができます。JSONカスタムデータは、トリガーのペイロードに連結され、アクションに渡されます。
-
オプション - SmartTaskオブジェクトのタグを追加します。
SmartTaskの詳細プロパティ
利用可能な詳細オプションは、「一般」タブで選択したアクションによって異なります。
Webリクエストの送信
-
タイムアウト- リクエストがタイムアウトし、中止されるまでの秒数。
-
HTTPS リクエストがタイムアウトした場合- タイムアウトをエラーとして扱い、イベントを中断するか、通常通り続行します。
-
X-chkp-shared-secret- ターゲット Web サーバが Security Management Server
Check Pointソフトウェアを実行して、単一の管理ドメイン内のCheck Point環境のオブジェクトとポリシーを管理する専用Check Pointサーバ。同義語:単一ドメインセキュリティ管理サーバ。 を識別するために使用できる共有シークレットを入力します。この値は、リクエストの一部として、発信するWebリクエストのX-chkp-shared-secret ヘッダーで送信されます。
スクリプトの実行
-
タイムアウト- リクエストがタイムアウトし、中止されるまでの秒数。
-
スクリプトの実行に失敗したり、タイムアウトした場合- タイムアウト(または実行失敗)をエラーとして扱い、イベントを中断するか、通常通り続行します。

使用事例:
会社のポリシーで、データベースに変更を保存する前に、セッション名のプレフィックスとしてサービスリクエスト番号を付けて公開オペレーションを使用しなければならないと決められており、管理者はセキュリティポリシーを変更した根拠を確認することができます。
手順:
Validate Session Name Prefix をScripts Repository に追加してください。
-
リポジトリにスクリプトを保存します。
手順
-
Gateways & Servers > Scripts > Scripts Repository > Newをクリックします (
)
-
スクリプトに名前を付けます。
-
Content のテキストボックスに、以下のスクリプトコードを貼り付けてください。
-
OKをクリックします。 をクリックして、リポジトリにスクリプトを保存します。
コピーScript Code#!/bin/bash
JQ=${CPDIR}/jq/jq
data=`echo $1 | base64 --decode -i`
# Extracting the required session name prefix for the session name based on the input JSON
sessionNamePrefix=`echo $data | $JQ -r .\"custom-data\".\"session-name-prefix\"`
# If there's no input session name prefix, publish is allowed
if [[ $sessionNamePrefix = "null" ]] || [[ -z "$sessionNamePrefix" ]]; then
printf '{"result":"success"}\n'
exit 0
fi
# Extracting the actual session name
sessionName=`echo $data | $JQ -r .session.\"session-name\"`
# Abort the publish if the session doesn't contain a name at all
if [[ $sessionName = "null" ]]; then
m1="Corporate Policy requires you to use a service request number for the session's name prefix."
m2="For example: ${sessionNamePrefix}######"
m3="Session name is missing. Please change your session's name to meet the requirements and try to publish again."
printf '{"result":"failure","message":"%s %s %s"}\n' "$m1" "$m2" "$m3"
exit 0
fi
# Abort the publish if the session name doesn't match the expected prefix
if [[ ! $sessionName == $sessionNamePrefix* ]]; then
m1="Corporate Policy requires you to use a ticket number as the session's name."
m2="For example: ${sessionNamePrefix}###### "
m2=${m2//\"/\\\"}
m3="Please change your session's name to meet the requirements and publish again."
printf '{"result":"failure","message":"%s %s %s"}\n' "$m1" "$m2" "$m3"
exit 0
else
# Session name matches the expected prefix, publish is allowed
printf '{"result":"success"}\n'
exit 0
fi -
-
セッション検証スクリプトを実行するSmartTaskを作成します。
手順
-
管理& 設定> Tasks > SmartTasks> New に移動します(
).
-
新しいSmartTaskに名前を付けます("
Validate Session Name Before Publish
"と呼ぶことができます)。 -
Trigger and Action の項目で、ドロップダウン・メニューから選択します。
Before PublishとRun Script
-
Select script from repository ドロップダウンで、手順1で保存したスクリプトを選択します。
-
Custom Data フィールドに、この文字列を入力します。
{"session-name-prefix": "CR"}
注:変数 "session-name-prefix" は、ステップ1のスクリプトの冒頭で使用された変数と関連しています。これらが同一でない場合、このスクリプトは動作せず、処理は失敗します。
-
-
ネットワークオブジェクト
コンピュータ、IP アドレス、トラフィックプロトコルなど、企業トポロジのさまざまな部分を表す論理オブジェクト。管理者はセキュリティポリシーでこれらのオブジェクトを使用します。を追加する。
-
必要なプレフィックスを使用して変更をパブリッシュします。
注:プレフィックスを使用せずにセッションを公開すると、処理に失敗します。