SmartTasks
Management SmartTaskは、システム内のさまざまなトリガに応じた自動アクションを設定することができます。SmartTaskはトリガとアクションの組み合わせです。
-
トリガはイベントであり、現在はポリシーのインストールやセッションの公開など、既存の管理操作の観点から定義されています。
-
アクションは、スクリプトの実行、Webリクエストの投稿、Eメールの送信など、トリガイベントの後に行われる自動的な応答です。
使用可能なトリガ
|
注 - SmartConsoleに表示される順番に並んでいます。 |
-
Before Publish - 管理者がセッションを公開するときにトリガされます。SmartTaskは、セッションのメタデータ(公開管理者、ドメイン情報、セッション名)をアクションに渡します。ローカルのManagement APIサーバが利用可能な場合、公開しようとしているセッションの変更は、"show changes" APIへの応答としてフォーマットされます。
-
After Publish - 管理者がセッションの公開を行った後にトリガされます。SmartTaskは、Before Publishトリガと同じ情報をアクションに渡します。
-
After Install Policy - ポリシーがインストールされた後に実行されます。SmartTaskは、インストールされたパッケージ、インストールを開始した管理者、タスクの結果など、ポリシーのインストールタスクに関連する情報をアクションに渡します。
-
CloudGuard Controller Event- SmartConsole >Logging & Monitoring view >Logs タブで、このクエリに一致する新しいログが生成されたときに発行されます:
blade:"CloudGuard IaaS" AND severity:Critical
詳細情報
Management Serverは、このJSONフォーマットでイベントを作成します:
コピー{
"severity": "<VALUE1>",
"log-description": "<VALUE2>",
"product": "CloudGuard IaaS",
"gateway-name": "<VALUE3>",
"datacenter-name": [
"<VALUE4>",
"<VALUE5>",
"...",
"<VALUEx>"
],
"version": "1.0"
}これはスクリプトの例です(ActionフィールドでRun Scriptを選択):
コピー#!/bin/sh
input=$(echo $1 | base64 --decode)
severity=$(echo $input | jq '.severity')
message=$(echo $input | jq '."log-description"')
gw_name=$(echo $input | jq '."gateway-name"')
dc_name=$(echo $input | jq '."datacenter-name"')
echo -e "Subject: CloudGuard Controller event\r\n\r\nSeverity: $severity\r\nMessage: $message\r\nData Center: $dc_name\r\nGateway: $gw_name" | sendmail --domain=acme.com -f no-reply@acme.com -v admin@acme.com --host=smtp.acme.com > /dev/null
echo "Email sent" -
After Submit- 管理者が現在のセッションを別の管理者に承認してもらうためにサブミットした後に実行されます(セッションの承認サイクル(SmartWorkflow および Identity Provider))。
-
Before Submit- 管理者が現在のセッションを別の管理者に承認してもらうためにサブミットする直前に実行されます(セッションの承認サイクル(SmartWorkflow および Identity Provider))。
-
Before Reject- 管理者が送信されたセッションを拒否する直前に実行されます (セッションの承認サイクル(SmartWorkflow および Identity Provider))。
-
After Reject- 管理者が送信されたセッションを拒否した後に実行されます(セッションの承認サイクル(SmartWorkflow および Identity Provider))。
-
Before Login- 管理者がSmartConsoleにログインする直前に実行されます。
-
After Approve- 他の管理者が作成したセッションを管理者が承認した後に実行されます(セッションの承認サイクル(SmartWorkflow および Identity Provider)。
-
Before Approve- 管理者が、他の管理者が作成したセッションを承認する直前に実行されます(セッションの承認サイクル(SmartWorkflow および Identity Provider))。
利用可能なアクション
-
スクリプトの実行 - あらかじめ定義されたリポジトリスクリプトを実行します。スクリプトが取得する最初のパラメータは、トリガのデータを含むファイルへのパスです。スクリプトがローカルマシン上で実行されるように構成されていない場合、トリガのデータは、Base64エンコードされたJSONデータとして渡され、カスタムのビジネスロジックを実装するためにデコードすることができます。しかし、スクリプトがローカルマシンで実行されるように設定されている場合は、デコードの必要はありません。
"Before"操作トリガで実行するように設定された SmartTaskでは、リポジトリスクリプトは "result" とオプションの "message" フィールドを持つJSONオブジェクトを出力し、コード0で終了することにより、操作を中断するか継続するか知らせることができます。"result "フィールドの値が "failure "である場合、操作は中断されます。
他のトリガで実行するように設定されたSmartTasksの場合、終了コード0は成功として扱われます。それ以外の終了コードは失敗として扱われます。
注 - デフォルトでは、リポジトリスクリプトはローカルのSecurity Management Server上で実行されますが、Web APIを使用してカスタマイズすることができます。
-
Web Request - 設定されたURLに対してHTTPS POST Webリクエストを実行します。トリガのデータは、リクエストのペイロードにJSONデータとして渡されます。
注:
-
設定するURLは、HTTPSで始まり、そのようなリクエストを処理できる対象Webサーバである必要があります。
-
自己署名SSL証明書を持つWebサーバの場合、証明書のフィンガープリントを指定して信頼性を確立します。SmartTaskエディタでGet Fingerprintをクリックするか、Webブラウザで証明書を表示すると、フィンガープリントを取得できます。
"Before"操作トリガで実行するように設定された SmartTaskの場合、リポジトリスクリプトは、JSONオブジェクト "result"とオプションの "message" フィールドと 200 OK というステータスで応答することにより、操作を中断するか継続するかを通知することができます。"result "フィールドの値が "failure "である場合、操作は中断されます。
他のトリガーで実行するように設定された SmartTasks の場合、"200 OK" のリターンコードは成功として扱われます。それ以外の終了コードは失敗として扱われます。
-
-
Send Mail- 設定されたEメールを送信します。
注
-
このアクションを選択する前に、SMTP サーバを表す タイプのServerSMTP Serverオブジェクトを構成する必要があります。
-
Advancedペインでメール テンプレートを設定する必要があります。
-
このアクションは以下のトリガにのみ使用できます:After Install Policy After Submit,After Approve,After Publish,After Reject 。
-
SmartTaskプロパティの設定
-
SmartTaskの一意の名前を入力します - nameプロパティは必須で、大文字と小文字を区別します。
-
トグルボタンでSmartTaskのON/OFFを切り替えます。
-
オプション - SmartTaskの説明を入力します。
-
SmartTaskのトリガを選択します。
-
トリガが発生したときのアクションを選択します。
-
カスタムデータ - カスタムデータフィールドにJSONオブジェクトを追加することで、トリガ情報と共に送信されるJSONデータに追加情報を追加できます。JSONカスタムデータは、トリガのペイロードに連結され、アクションに渡されます。
-
オプション - SmartTaskオブジェクトのタグを追加します。
SmartTaskの詳細プロパティ
利用可能な詳細オプションは、Generalタブで選択したアクションによって異なります。
Webリクエストの送信
-
タイムアウト - リクエストがタイムアウトし、中止されるまでの秒数。
-
HTTPSリクエストがタイムアウトした場合 - タイムアウトをエラーとして扱い、イベントを中止するか、通常通り続行します。
-
X-chkp-shared-secret - 対象のWebサーバがSecurity Management Serverを識別するために使用できる共有シークレットを入力します。この値は、リクエストの一部として、発信WebリクエストのX-chkp-shared-secretヘッダーに送られます。
スクリプトの実行
-
タイムアウト - リクエストがタイムアウトし、中止されるまでの秒数。
-
スクリプトの実行に失敗、またはタイムアウトした場合 - タイムアウト(または実行の失敗)をエラーとして扱い、イベントを中止するか、通常どおりに続行します。
メール送信
Eメールの詳細を入力します:
-
宛先
-
Cc
-
送信者
-
件名
-
添付
-
本文
To"、"Cc"、"Sender "フィールドに定義済みのオプションを使用できるのは、SmartConsoleでメールアドレスを定義している管理者のみです。これらのフィールドは、ID プロバイダを介して接続されている管理者には使用できません。
SmartConsoleにメールアドレスが定義されていない管理者は、以下のいずれかを実行してください:
-
管理者の該当するメールアドレスを手動で入力する。
-
メールソフトで管理者のメーリングリストを作成し、該当フィールドにそのメーリングリストを使用する。
例:
After Session Approve" スマートタスクでは、管理者が提出者による変更をレビューし、承認します。
Email Configuration :
To" フィールドの代わりに、"Submitter email" フィールドに、送信者全員のメーリングリストを入力する。
Cc" フィールドの代わりに、"All reviewers" フィールドに、すべての査読者のメーリングリストを入力してください。
Sender" フィールドには、あらかじめ定義されている "Reviewer email" フィールドの代わりに、"SmartTask@mycompany.com" のようなダミーの電子メールを入力する。
承認サイクルのワークフローの詳細については、以下を参照してください。管理者向けセッションフロー。

使用事例:
会社のポリシーで、データベースに変更を保存する前に、セッション名のプレフィックスとしてサービスリクエスト番号を付けて公開操作を使用するよう決められています。管理者はセキュリティポリシーを変更した根拠を確認することができます。
手順:
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のスクリプトの冒頭で使用された変数と関連しています。これらが同一でない場合、このスクリプトは動作せず、処理は失敗します。
-
-
SmartConsoleセッションを公開する。
-
ネットワークオブジェクトを追加します。
-
必要なプレフィックスを使用して変更を公開します。
注 - プレフィックスを使用せずにセッションを公開すると、処理に失敗します。