Management Center for Cisco Security Agents 6.0.2 ユーザ ガイド
スクリプト インターフェイス(CSAAPI) の使用方法
スクリプト インターフェイス(CSAAPI)の使用方法
発行日;2012/01/15 | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 9MB) | フィードバック

目次

スクリプト インターフェイス(CSAAPI)の使用方法

概要

スクリプト インターフェイス(CSAAPI)の概要

API 関数の要約

スクリプト インターフェイスの基礎

始める前に

WSDL/SOAP

スクリプト言語の選択

サンプル スクリプトと README ファイル

暗号化と認証

オブジェクト式

オブジェクト タイプ

サポートされている名前(オブジェクト タイプ別)

オブジェクト式の値

オブジェクト タイプの名前

ワイルドカードの指定

エスケープ文字の使用

LIMIT 名を使用した無用のアクションの防止

ブロッキング関数と ノンブロッキング関数

API 関数の説明

関数のステータスの取得と関数の完了待ち

オブジェクト式のテスト

システム全体の状態の変更

ホスト グループの割り当て

ホストの操作

ホスト情報の取得

システム全体の情報の取得

イベント情報の取得

レポートの取得

スクリプト インターフェイス(CSAAPI)の使用方法

概要

Management Center for Cisco Security Agents を使用すると、管理者はスクリプトを記述して、MC 上で設定アクションのサブセットを実行できます。

MC には付属のサンプル スクリプトがあるので、独自のスクリプトを記述する際の見本として使用することを推奨します。

この章で取り上げる事項は次のとおりです。

「概要」

「スクリプト インターフェイス(CSAAPI)の概要」

「API 関数の要約」

「スクリプト インターフェイスの基礎」

「始める前に」

「WSDL/SOAP」

「スクリプト言語の選択」

「サンプル スクリプトと README ファイル」

「暗号化と認証」

「オブジェクト式」

「オブジェクト タイプ」

「サポートされている名前(オブジェクト タイプ別)」

「オブジェクト式の値」

「オブジェクト タイプの名前」

「ワイルドカードの指定」

「エスケープ文字の使用」

「LIMIT 名を使用した無用のアクションの防止」

「ブロッキング関数と ノンブロッキング関数」

「API 関数の説明」

「関数のステータスの取得と関数の完了待ち」

「オブジェクト式のテスト」

「システム全体の状態の変更」

「ホスト グループの割り当て」

「ホストの操作」

「ホスト情報の取得」

「システム全体の情報の取得」

「イベント情報の取得」

「レポートの取得」

スクリプト インターフェイス(CSAAPI)の概要

Management Center for Cisco Security Agents を使用すると、管理者はスクリプトを使用して、非常に特殊な関数をローカルの MC 上で、またはリモート システムから実行できます。このスクリプト インターフェイスは CSAAPI と呼ばれ、任意の言語でスクリプトを記述でき、任意のオペレーティング システムでスクリプトを実行できます。

API 関数の要約

CSA MC スクリプト インターフェイスを使用すると、ホストの操作やホスト情報の取得など、さまざまな関数を実行できます。次に、実行可能なアクションの一覧を示します。


) 下記の関数の実行を試みる前に、「スクリプト インターフェイスの基礎」および「API 関数の説明」の項を通読し、一般的な概念や一覧にある個々の API 関数について理解する必要があります。


ノンブロッキング関数

- Integer GenerateRules ()

- Integer GenerateReport (String reportName, String emailAddress)

- Integer Import (String filename)

- Integer Export (String filename, String desc, String emailAddress, StringArray objects)

- Integer RunHostTask (String hostTaskName)

- Integer BackupConfig ()

ブロッキング関数

「Get」関数

- StringArray GetHostInfo (String hostExpression)

- StringArray GetLastIpAddrs (String hostExpression)

- StringArray GetDiagnosticInfo (String hostExpression)
- StringArray GetMostActive (String objType,

Integer numOfObjects,

String timespan)

- Integer GetLastDayEventCount ()

- StringArray GetLatestEvents (String objType,

String objExpression,

Integer numOfEvents)

- StringArray GetLatestAudit (Integer numOfEvents)

- String GetConfigVar (String name)

- Integer GetObjectCount (String objType, String objExpression)

- StringArray GetNames (String objType, String objExpression)

- StringArray GetReportNames ()

 

- StringArray GetHostTaskNames ()

「Set/Update」関数

- Boolean AddHostsToGroups (String hostExp, String groupExp)

- Boolean RemoveHostsFromGroups (String hostExp, String groupExp)

- Boolean MoveHosts (String hostExp, String fromGroupExp, String toGroupExp)

- Boolean DeleteHosts (String hostExp)

- Boolean SendHint (String hostExp)

- Boolean ResetAgent (String hostExp, Integer resetMask)

- Boolean SetConfigVar (String name, String value)

「Housekeeping」関数

- Integer GetStatus (Integer processID)

- String GetStatusMessage (Integer processID)

- Integer WaitForProcess (Integer processID, Integer timeout)

スクリプト インターフェイスの基礎

この項では、スクリプト インターフェイスを使用するのに必要な情報について説明します。

始める前に

CSA MC スクリプト インターフェイスを使用するスクリプトを記述する前に、後述のいくつかの項で説明する重要な概念を、時間をかけて学習する必要があります。内容を次に示します。

WSDL/SOAP

スクリプト言語の選択

サンプル スクリプトと README ファイルの使用

暗号化と認証

オブジェクト式

ワイルドカードの指定

エスケープ文字の使用

LIMIT トークンを使用した不要なアクションの防止

ブロッキング関数と ノンブロッキング関数

関数のステータスの取得と関数の完了待ち

個々のスクリプト インターフェイス関数の把握

スクリプト インターフェイスは、深刻な結果を招く可能性のあるアクションも実行できる強力なツールです。たとえば、スクリプト インターフェイスでは、ホストの削除、エージェントのリセット、規則の生成、ホストやグループの割り当て変更などのタスクも実行できます。このため、スクリプト インターフェイスを使用する際は十分に注意し、時間をかけてその複雑さを理解する必要があります。

WSDL/SOAP

CSA MC スクリプト インターフェイスのインフラストラクチャは、その機能を WSDL(Web Services Description Language)と SOAP(Simple Object Access Protocol)に依存しています。WSDL と SOAP では、広く利用可能で専有されていないライブラリを使用して、ほとんどのオペレーティング システムに対応したスクリプトをさまざまな言語で記述できます。要するに、SOAP と WSDL を使用すると、スクリプトと CSA MC サーバ間の通信の複雑さを理解していなくても、分散アプリケーションを記述できます。

しかしながら、スクリプトの記述を開始する前に、WSDL と SOAP の基礎を理解しておくことを推奨します。WSDL と SOAP を学習することで、サンプル スクリプトを理解しやすくなり、デバッグも容易になります。

WSDL は、一般的な XML 文法で Web サービスや API を定義するための仕様です。WSDL が強力である理由は、特定のオペレーティング システムやコンピュータ言語に関連した詳細を要約できることにあります。CSA MC には、利用可能な関数、各関数のパラメータ、および各関数が返す値を記述した、WSDL ファイル(csaapi<csa mc バージョン番号>.wsdl。例:csaapi60.wsdl)が含まれています。自由に利用できるさまざまなユーティリティでこの WSDL ファイルを使用し、使用しているスクリプトにすばやく組み込むことができるスクリプト「スタブ」を生成することができます (あるいは、後述のように、CSA MC に付属しているサンプル スクリプトから始めることもできます)。

WSDL の詳細については、次のサイトを参照してください。

http://www.w3.org/TR/wsdl

http://www.oreilly.com/catalog/webservess/chapter/ch06.html

http://en.wikipedia.org/wiki/WSDL

SOAP は、オブジェクト交換(通常は HTTP 上)のための XML ベースのプロトコルです。WSDL は Web サービスを記述するために使用するのに対し、SOAP は、通信プロトコルに依存しない「封筒」でメッセージ(通常は要求と応答)をカプセル化するためのプロトコルです。SOAP は広く採用されており、現在では、さまざまな優れた SOAP 実装(Perl の SOAP::Lite など)を利用して、Web ベースのスクリプトを簡単に記述できるようになりました。

SOAP の詳細については、次のサイトを参照してください。

http://www.w3.org/TR/soap12-part1/

http://www.w3.org/TR/2003/REC-soap12-part0-20030624/

http://en.wikipedia.org/wiki/Simple_Object_Access_Protocol

スクリプト言語の選択

前述のように、WSDL と SOAP を使用すると、WSDL と SOAP をサポートする任意の言語でスクリプトを記述できます。また、適切なライブラリを利用できる任意のプラットフォーム向けにスクリプトを記述できます。

また、Perl、Java、および C++ で記述されたサンプル スクリプトが用意されています。サンプル スクリプトから開始し、その機能を理解してから他の言語(C# や PHP など)に移行することを強く推奨します。サンプル スクリプトから始めることが推奨されているのは、スクリプトにさまざまな技術の例が含まれているからです。たとえば、パスワードの要求、LIMIT 句の使用、関数のステータスのチェック、ステータス メッセージの取得、ワイルドカードやエスケープ文字の使用、オブジェクト式の使用などがあります(すべてここで説明されています)。

さらに、まだ言語を選択していない場合は、スクリプト インターフェイスに Perl を最初に選択することを推奨します。暗号化ライブラリを含む Perl のインフラストラクチャは、インストールも使用も簡単です。Perl は、インタープリタ型言語として高速プロトタイピングに適しています。また、デバッグ モードで実行する優れた機能を備えているので、他の言語を使用した場合よりも簡単にデバッグできます。

最後に、Cisco TAC では、スクリプト インターフェイスのインフラストラクチャに関する問題のサポートは提供していますが、お客様が作成されたスクリプトのデバッグはサポートしていません。

サンプル スクリプトと README ファイル

CSA MC をインストールすると、独自のスクリプトの見本として使用するサンプル スクリプトも一緒にコピーされます。サンプル スクリプトは、スクリプト言語ごとに別々のフォルダに保存されています。これらのフォルダには、スクリプトを記述するのに役立つ、詳細な readme ファイルなどのファイルも含まれます。サンプル スクリプトは、CSA MC のインストール先ディレクトリの「samples¥csaapi」ディレクトリにあります。次の例を参考にしてください。

C:¥Program Files¥Cisco¥CSAMC¥CSAMC60¥samples¥csaapi

このディレクトリには、スクリプト インターフェイスの一般情報が記載された README.txt ファイルが含まれています。さらにこのディレクトリには、「Perl」、「Java」、および「CPP」のディレクトリもあり、各言語のサンプル スクリプトが格納されています。各言語のディレクトリには、各言語に関する重要な情報が記載された固有の README.txt ファイルが含まれています。


注意 スクリプトの作成または実行を試みる前に、これらの README.txt ファイルを読む必要があります。readme ファイルには、MC サーバ環境とクライアント環境のセットアップに関する情報が具体的に記されています。この情報は他の場所では提供されません。また、スクリプトが予測したとおりに動作するためには、readme の指示に従う必要があります。

暗号化と認証

CSA MC スクリプト インターフェイスが不正な方法で使用されていないことを確認するため、スクリプト インターフェイスでは暗号化と認証が必須になっています。

暗号化は、https プロトコルを使用して行われます。サンプル スクリプトには、プロトコルとして「https」が埋め込まれた URL が記述されています。このプロトコルは変更しないでください。変更すると、スクリプトは動作しなくなります。

認証は、CSA MC ユーザ インターフェイスのログイン システムの外側で行われます。スクリプト インターフェイスには、MS 上の既存の管理者アカウントに関する情報はありません。スクリプト インターフェイスを使用するには、この項で説明する手順に従って新しいユーザ ID とパスワードを作成し、スクリプトを使用して MC を設定できるようにしておく必要があります。スクリプトで MC にアクセスするために作成したユーザ ID とパスワードは、CSA MC ユーザ インターフェイスのアクセスとは無関係で、スクリプト インターフェイスにのみ適用されます。

スクリプト インターフェイスを使用する前に、次の手順を実行して、スクリプト インターフェイスのインフラストラクチャにユーザ ID とパスワードの情報を提供する必要があります。

まず、次のように入力して、apache ディレクトリに移動します。

cd <CSAMC_base_directory>¥apache2

次の例を参考にしてください。

cd Program Files¥Cisco¥CSAMC¥apache2

さらに、次の構文を使用して htpasswd ユーティリティを実行します。

bin¥htpasswd.exe -c conf¥csaapiUsers<csa mc version number>.pwd <username>

ユーザのパスワードの入力を求めるプロンプトが 2 回表示されます。

他のユーザを追加するには、次のように入力します。

bin¥htpasswd conf¥csaapiUsers<csa mc version number>.pwd <next user name>

ファイルには必ず csaapiUsers.pwd という名前を付けてください。

これが完了したら、スクリプトで、これらのユーザ ID とパスワードの組み合わせのいずれかを指定する必要があります。詳細については、csaapi ディレクトリの README ファイルと、サンプル スクリプトを参照してください。

オブジェクト

CSA MC スクリプト インターフェイスの多くの関数では、実行対象のオブジェクトを指定する必要があります。たとえば、「DeleteHosts」関数の場合は、削除の対象となるホストを指定する必要があります。


) スクリプト インターフェイスにおいて、「オブジェクト」は、ホスト、グループ、ポリシー、規則モジュール、規則などのエンティティに対応した、CSA MC データベース内のエントリを表します。


オブジェクトのグループを記述する機能を最大限に高めるため、CSA MC スクリプト インターフェイスでは、「オブジェクト式」の構文が使用されます。この構文は、名前/値のペアを、単純に次の形式で並べたものです。

NAME='VALUE' NAME='VALUE' NAME='VALUE'

たとえば、次のスクリプト インターフェイス関数を考えます。

StringArray DeleteHosts (String hostExpression)

また、ラーニング モードですべての Windows ホストを削除するには、次の引数を指定して関数を呼び出します。

DeleteHosts ("OS='Windows' LEARN_MODE='true'");

基本的に、オブジェクト式の構文は、柔軟性を持ちながら CSA MC データベース スキーマから独立した「SQL Lite」システムです。複数の名前/値のペアは、論理積(AND)がとられます。つまり、上記の例は、Windows かつ(AND)ラーニング モードのホストにだけ適用されます。

関数に無効な式が渡された場合、関数は常にエラー コードを返します。呼び出し側は、GetStatus() 関数および GetStatusMessage() 関数を使用して、詳細な情報を取得できます。

構文の説明は以上です。次に、有効な名前、およびそれぞれの名前で有効な値について説明します。

オブジェクト タイプ

スクリプト インターフェイスを使用して CSA MC にアクセスにする場合、注意すべき一般的な問題がいくつかあります。スクリプト インターフェイスを使用して、新しい設定項目を作成することはできません。操作できるのは既存の項目だけです。また、規則を生成することができます。次の項では、すべてのスクリプト言語を対象に、スクリプトによる設定で使用できる CSA MC 関数(オブジェクト タイプ)について説明します。各オブジェクトは、名前/値のペアで指定します。次に、サポートされているオブジェクト タイプの一覧を示します。

HOST
GROUP
POLICY
RULE_MODULE
RULE
APP_CLASS
VAR

 

サポートされている名前(オブジェクト タイプ別)

次の一覧は、オブジェクト タイプごとに有効な名前を示しています。

オブジェクト タイプ:ホスト

名前:

HOST_NAME
IP_ADDR
GROUP_NAME
POLICY_NAME
RULE_MODULE_NAME
OS_TYPE
OS_ARCHITECTURE
OS_DESC
ACTIVE
TEST_MODE
LEARN_MODE
 

オブジェクト タイプ:グループ

名前:

GROUP_NAME
POLICY_NAME
HOST_NAME
VERSION
TEST_MODE
LEARN_MODE
OS_TYPE
OS_ARCHITECTURE
 

オブジェクト タイプ:ポリシー

名前:

POLICY_NAME

GROUP_NAME

RULE_MODULE_NAME
VERSION
 

オブジェクト タイプ:規則モジュール

名前:

RULE_MODULE_NAME
POLICY_NAME
VERSION
TEST_MODE
LEARN_MODE
OS_TYPE
TARGET_OS
 

オブジェクト タイプ:規則

名前:

RULE_ID
RULE_NAME
RULE_TYPE
ACTION
RULE_MODULE_NAME
 

オブジェクト タイプ:アプリケーション クラス

名前:

APP_CLASS_NAME
VERSION
OS_TYPE
TARGET_OS
 

オブジェクト タイプ:変数

名前:

VAR_NAME
VAR_TYPE
VERSION
OS_TYPE
TARGET_OS

オブジェクト式の値

次に、前の項で挙げたそれぞれの名前で有効な値の一覧を示します。特に指定のない限り、ワイルドカード文字の使用はすべての値のエントリでサポートされています。

HOST_NAME

ホスト名の文字列式は次のように表されます。値の例を示します。

bugtrack.amer.cisco.com
bugtrack*
bugtrack.????.cisco.com

ホスト名の値の大文字と小文字は区別されません。

IP_ADDR

IP アドレスの文字列式は次のように表されます。値の例を示します。

1.1.1.1
1.1.1.*
15?.*.*.*

 

GROUP_NAME

グループ名の文字列式は次のように表されます。値の例を示します。

Desktops - All types
Servers - * deployed

グループ名の値の大文字と小文字は区別されません。

POLICY_NAME

ポリシー名の文字列式は次のように表されます。値の例を示します。

Email client - Linux
Email client *

 

RULE_MODULE_NAME

規則モジュール名の文字列式は次のように表されます。値の例を示します。

Email Client Module - Low Security
Email Client Module - ? Security

 

RULE_ID

規則 ID の文字列式は次のように表されます。値の例を示します。

"51"

RULE_NAME

規則名の文字列式は次のように表されます (厳密に言えば、規則には名前がありません。RULE_NAME を使用すると、個々の規則の MC UI に表示される [Description] フィールドに対してクエリーを実行できます)。値の例を示します。

Email worm

 

RULE_TYPE

このフィールドでは、タイプ別に規則を識別できます。規則タイプごとに特定の名前があるので、入力する規則タイプ名は、次のいずれかの文字列と一致している必要があります。

Agent service control
Agent UI control
Application control
Buffer overflow
Clipboard access control
COM component access control
Connection rate limit
Data access control
File access control
Global event log
Global IP address quarantine
Global network scan
Global virus scan
Kernel protection
Network access control
Network interface control
Network shield
NT Event log
Registry access control
Resource access control
Rootkit / kernel protection
Service restart
Sniffer and protocol detection
Syslog control
System API control

文字列を完全に照合するのではなく、ワイルドカードを使用して規則タイプを照合することもできます。たとえば、次のように入力すると、タイプミスの可能性は低くなります。

RULE_TYPE=’Rootkit*’

一方、次の例では、タイプミスが起きやすくなります。

RULE_TYPE=’ Rootkit / kernel protection’

 

ACTION

この名前には、次の文字列値が認められています。特定の数のアクション タイプがあるので、入力する値は、次のいずれかの文字列と一致していなければなりません。他の値を入力するとエラーになります。

PRIORITY_TERMINATE
PRIORITY_DENY
PRIORITY_ALLOW
QUERY
TERMINATE
DENY
MONITOR
SET

ACTION タイプでは、ワイルドカードはサポートされていません。

VERSION

CSA MC のリリース バージョンの文字列式は次のように表されます。値の例を示します。

5.2 r578
5.2*
5.2.? r6??

 

OS_TYPE

このフィールドでは、「WINDOWS」または「UNIX」のいずれかを指定できます。一般的に、このフィールドは、各種データベース テーブルの ostype フィールドに相関しています。

OS_ARCHITECTURE

このフィールドを使用すると、OS_TYPE フィールドを使用した場合より細かい指定が可能です。このフィールドは、HOST および GROUP タイプのオブジェクトに適用できます。有効な値は、WINDOWS、SOLARIS、および LINUX です。一般に、このフィールドはデータベースの architecture フィールドに対応しています。

TARGET_OS

このフィールドを使用すると、OS_TYPE フィールドを使用した場合より細かい指定が可能です。このフィールドは、RULE_MODULE、APP_CLASS、および VAR タイプのオブジェクトに適用できます。有効な値は、ALL、XP、SOLARIS、および LINUX です。一般に、TARGET_OS フィールドはデータベースの osflavor フィールドに対応しています。

OS_DESC

このフィールドでは、ホストの「os」データベース フィールドに対してクエリを直接実行できます。このフィールドには「Windows 2003」のような説明が格納されるので、Windows 2000 と Windows 2003 を区別できます。

ACTIVE

この名前では、マシンがアクティブかどうかに応じてブール値(「TRUE」または「FALSE」)を入力できます。「YES」と「NO」も許容値です。

TEST_MODE

この名前では、マシンがアクティブかどうかに応じてブール値(「TRUE」または「FALSE」)を入力できます。「ON」と「OFF」も許容値です。

LEARN_MODE

この名前では、マシンがアクティブかどうかに応じてブール値(「TRUE」または「FALSE」)を入力できます。「ON」と「OFF」も許容値です。

APP_CLASS_NAME

アプリケーション クラス名の文字列式は次のように表されます。値の例を示します。

FTP applications
Software installer invoked applications

 

VAR_NAME

変数名の文字列式は次のように表されます。値の例を示します。

Apache executables
Ephemeral port ranges

 

VAR_TYPE

この名前には、次の文字列値が認められています。特定の数の変数タイプがあるので、入力する値は、次のいずれかの文字列と一致していなければなりません。許容値は次のとおりです。

COM
DATA
FILE_UNIX
FILE_WINDOWS
NETWORK_ADDRESS
NETWORK_SERVICE
QUERY
REGISTRY

 

VAR_TYPE では、ワイルドカードはサポートされていません。

オブジェクト タイプの名前

スクリプト インターフェイスには、任意のタイプのオブジェクトに実行できる一般的な関数がいくつかあります(GetNames()、GetMostActive() など)。スクリプト インターフェイスでは、このような汎用関数に対象となるオブジェクトのタイプを示すのに、文字列変数の入力システムを使用します。許容値は次のとおりです。

HOST
GROUP
POLICY
RULE_MODULE
RULE
APP_CLASS
VAR

 

上記のオブジェクト タイプの値には、「オブジェクト タイプ」文字列を必要とする関数に個別に渡すことができるという特長があります。それに加えて、任意のオブジェクト タイプの名前/値のペアで、「OBJ_TYPE」という名前と組み合わせることもできます。たとえば、Linux に関連付けられたアプリケーション クラスの名前のリストを取得するには、次のような名前/値の式を作成します。

"OBJ_TYPE='APP_CLASS' OS='Linux'"

オブジェクト タイプが関数自体により暗示されている関数(GetHostInfo など)、またはオブジェクト式とは別にオブジェクト タイプの文字列をパラメータとして取る関数(GetObjectCount など)では、OBJ_TYPE の指定を省略できます。

ワイルドカードの指定

スクリプト インターフェイスでは、SQL で利用できるワイルドカードと同様のワイルドカードをサポートしていますが、構文が多少異なります。次のワイルドカード文字がサポートされています。

*(アスタリスク):文字数が 0 以上の文字列と一致します。

?(疑問符):任意の 1 文字と一致します。

エスケープ文字の使用

ワイルドカード文字(または単一引用符の文字)をリテラルに指定する必要が生じることがまれにあります。つまり、次の例のように、ワイルドカードの文字が含まれる文字列を表現する場合などです。

Bob's Group

このような表現をサポートするため、「\」というエスケープ文字を使用して「エスケープ」する必要がある文字が 4 つあります。これらの文字は次のとおりです。

*

?

'(単一引用符)

\(バックスラッシュ)

たとえば、次のようなグループ名を指定するとします。

Bob's Group

次の例のように、単一引用符の前にバックスラッシュを挿入する必要があります。

GROUP_NAME='Bob\'s Group'

リテラルなバックスラッシュ文字にもバックスラッシュが必要です。たとえば、C:\foo というグループ名を指定するには、次のように入力する必要があります。

GROUP_NAME='C:\\foo'

最後の例として、疑問符で終わる文字列を指定する場合は、次のように入力する必要があります。

GROUP_NAME='*\?'

上記の例では、アスタリスクはワイルドカードですが、疑問符はリテラルとして使用されています。

CSA MC では、グループやホストなどの名前に使用できる文字が制限されているので注意が必要です。そのため、ワイルドカード文字をリテラルに使用する必要はほとんどありません。ただし、将来 CSA MC の命名の制限が撤廃されても、エスケープ文字の機能は存続します。


) Perl でスクリプトを記述する場合、バックスラッシュ文字の使用に関して追加の注意点が 1 つあります。Perl で文字列にバックスラッシュ文字を埋め込むには、バックスラッシュを 2 つ指定する必要があります。このため、Perl で Bob's Group というグループ名を指定するには、実際には次のように入力する必要があります。


my $objExp = "GROUP_NAME='Bob\\'s Group'"

さらに複雑な例として、C:\foo を指定する場合は、実際には次のように 4 つのバックスラッシュを入力する必要があります。

my $objExp = "GROUP_NAME='C:\\\\foo'"

このような複雑な結果になったのは、バックスラッシュ文字を 2 回エスケープする必要があるからです。1 回は Perl のため、もう 1 回はスクリプト インターフェイスのために必要です。詳細については、スクリプト インターフェイスの README ファイルを参照してください。

LIMIT 名を使用した無用のアクションの防止

任意のタイプのオブジェクトに適用できる名前トークンが 1 つあります。このトークンは LIMIT と呼ばれます。LIMIT 句を使用すると、呼び出し側は、関数のオブジェクト式で返されるオブジェクトの数が指定した制限を上回った場合に、関数がすぐに終了するように指定できます。

たとえば、「server」という文字列で始まるすべてのホストを削除する必要があり、この説明に一致するホストが 2 つを超えないと予想される場合は、次のような関数を実行します。

DeleteHosts ("HOST_NAME='bugtrack*' LIMIT='2'")

この呼び出しでは、「server」という文字列で始まるホストの数が 2 を超える場合、ホストは削除されません。

この LIMIT 句を使用すると、事実上、呼び出し先の関数内で GetObjectCount メソッドを呼び出すことができるので、呼び出しを 1 回節約することができます。LIMIT トークンは GetObjectCount 関数内に配置すると効果がないので注意してください。

LIMIT 文を含むオブジェクト式を持つ関数が失敗した場合は、GetStatus() 関数を呼び出します(詳細は後述します)。エラー コードが「200」の場合、オブジェクト式で記述されたオブジェクトの数が LIMIT 値を上回っています。

ブロッキング関数と ノンブロッキング関数

一般的に、スクリプト インターフェイス関数は、「ブロッキングする」関数と「ブロッキングしない」関数の 2 つのグループに分けることができます。この項では、その違いについて説明し、この違いと戻り値やステータス情報の取得の関連性について説明します。

ブロッキング関数

ブロッキング関数が実行されると、サーバは、関数が完了するまで待機してから値を返します。少数の関数を除き、API の関数はブロッキング関数です。

通常、「set/update」動作を実装するブロッキング関数(AddHostsToGroups など)は、ブール値(失敗の場合は false、それ以外の場合は true)を返します。「get」動作を実装するブロッキング関数(GetLastIpAddrs など)は、取得したデータのデータ タイプ(文字列、文字列配列、整数など)を返します。

ブロッキング関数のステータスやエラーの詳細な情報を取得するには、プロセス ID を 0 にしていずれかのステータス関数(GetStatus および GetStatusMessage)を呼び出します。詳細については、「関数のステータスの取得と関数の完了待ち」を参照してください。

ノンブロッキング関数

ノンブロッキング関数は、関数が完了する前に制御をクライアント スクリプトに戻します。一般的に、完了まで時間がかかる関数はノンブロッキング関数です。ノンブロッキング関数は、制御をすぐにクライアント スクリプトに戻すことにより、クライアントとサーバ間の接続がタイムアウトしないようにします。次に、ノンブロッキング関数の現在の一覧を示します。

GenerateRules()

GenerateReport()

Import()

Export()

RunHostTask()

BackupConfig()


) スクリプト インターフェイスの他の関数はすべてブロッキングします。


ノンブロッキング関数を実行すると、通常、スクリプト インターフェイス サーバはクライアント スクリプトに「I got your request, and I am working on it. Please check back with me later to learn how it went.」というメッセージを送信します。すべてのノンブロッキング関数は、整数のプロセス ID を返します。プロセス ID は、後で関数のステータスを取得するときに使用できます。

クライアント スクリプトでは、WaitForProcess を使用して、ノンブロッキング関数が完了するまで待機できます。また、ステータス関数(GetStatus および GetStatusMessage)を使用して、ノンブロッキング関数のステータスをチェックできます。詳細については、「関数のステータスの取得と関数の完了待ち」を参照してください。

API 関数の説明

ここでは、個々の API 関数の詳細について説明します。

関数のステータスの取得と関数の完了待ち

CSAMC スクリプト インターフェイスは、最近実行された関数のステータスを取得するための、包括的なインフラストラクチャを提供します。この項では、インフラストラクチャの主要素について説明します。説明する要素には、数字のステータス コード、プロセス ID、およびステータス情報を返してノンブロッキング関数を待つ関数が含まれます。

ステータス コード

スクリプト インターフェイスは、クライアントによって実行された関数のステータスを伝達するのに、数字のステータス コードを使用します。通常、ステータス コード 0 は成功、0 よりも大きいステータス コードは失敗、0 未満のステータス コードは何も起きなかったことをそれぞれ表します。

次に、全ステータス コードの一覧を示します。

成功
失敗
アクションなし
ID

説明

ID

説明

ID

説明

0

SUCCESS

1

GENERIC ERROR

-1

PENDING

 

100

UNKNOWN PROCESS

-100

NO ACTION

 

200

ILLEGAL OBJECT EXPR.

-200

NO OBJECT MATCH

 

300

DB OPEN FAILURE

-201

NO OBJECT MATCH

 

301

DB READ FAILURE

-300

LIMIT EXCEEDED

これらのステータス コードの大多数は自己説明型ですが、次に示すように詳細を必要とするものもあります。

無効な形式のオブジェクト式を関数に渡した場合、この状態はエラー条件になり、その状態のステータス コードは 200 になります。

一方、いずれのオブジェクトも一致しないオブジェクト式を関数に渡した場合(たとえば、オブジェクト式が "HOST_NAME='A*'" で、名前が「A」で始まるホストがない場合)、受け取るステータス コードは -200(負の 200)です。これはエラー コードではなく、「アクションなし」を表すコードです。一般に、スクリプト インターフェイスでは、何もしないという要求はエラーとは見なされません。

上記の状況と似ていますが、オブジェクト式で LIMIT 句を指定し、オブジェクト式で記述されたオブジェクトの数が LIMIT 句で指定された制限を上回っている場合、戻りコードは -300(負の 300)になります。これもエラー コードではなく、「アクションなし」を示すコードです。

プロセス ID:関数の実行の識別

関数を実行するたびに、1 つのプロセス ID がその関数の実行に関連付けられます。このプロセス ID は、ステータス コードと関数の実行の関連付けを取得するために使用できます。

ノンブロッキング関数(詳細については、 「ブロッキング関数と ノンブロッキング関数」 を参照)のプロセス ID は、関数から返される整数です。

ブロッキング関数のプロセス ID は常に 0 です。つまり、プロセス ID が 0 のプロセスのステータス コードを取得することは、直前に実行されたブロッキング関数のステータス コードを取得することと同じことになります。

関数の実行に関するステータス コードの取得

実行した関数のプロセス ID を入手すれば、プロセス ID を次の関数に渡すだけで、その関数のステータスを取得できます。

- Integer GetStatus (Integer processID)

この API 関数は、有効なステータス コードをスクリプト インターフェイス サーバに要求します。引数はプロセス ID で、戻り値はステータス コードです。

詳細なステータス メッセージの取得

エラーの具体的な内容に関するテキスト情報を取得するには、次の関数を呼び出します。

- String GetStatusMessage (Integer processID)

この関数は、渡された ID を持つプロセスのステータス メッセージを返します。渡された ID が 0 の場合、GetStatusMessage は直前に呼び出された API 関数のステータス メッセージを返します。

渡された ID を持つプロセスが実行中の場合、戻り値は「PENDING」になります。プロセスが成功した場合、戻り値は「SUCCESS」になります。

GetStatusMessage は、関数が失敗した理由に関する追加情報の取得を試みるときに役立ちます。

ノンブロッキング関数の完了待ち

- Integer WaitForProcess (Integer processID, Integer timeout)

この関数は、指定したプロセスが完了するか、タイムアウト(秒単位)が発生するまで、ブロッキングします。この関数は、指定した関数がタイムアウト前に終了した場合はその関数のステータス コードを返し、それ以外の場合は -1 を返します。この関数を使用すると、ループを記述しなくても、関数の完了を簡単にブロッキングできます。

オブジェクト式のテスト

オブジェクト式の文字列は、オブジェクトのセットを記述するために使用され、引数として関数に渡されます。関数の中には、誤ったオブジェクトのセットに対して実行すると、深刻な影響を与える関数もあります。次の 2 つのメニュー関数は、「健全性チェック」を提供します。このチェックを使用すると、スクリプトは、特定の式で操作を実行する前に、その式から返されるオブジェクトを判別できます。

Integer GetObjectCount(String objType, String objExpression)

GetObjectCount は、オブジェクト式によって参照されるオブジェクトの数を返します。次の例を参考にしてください。

GetObjectCount("HOST", "OS='WINDOWS'")

この例では、Windows ホストの数が返されます。


) LIMIT トークンはこの関数では無効なので、通常は、この関数のオブジェクト式には含めません。


StringArray GetNames(String objType, String objExpression)

GetNames は、オブジェクト式に一致するすべてのオブジェクトの名前が含まれる文字列配列を返します。次の例を参考にしてください。

GetNames ("HOST", "OS='LINUX' ACTIVE='FALSE'")

この例では、すべての非アクティブな Linux ボックスのホスト名のリストが返されます。


) オブジェクト タイプが「RULE」の場合、厳密に言えば規則には名前がないので、この関数は規則 ID を文字列の形式で返します。


システム全体の状態の変更

次の関数は、システム全体の状態を変更します。それぞれの関数は、目的のアクションを実行するプロセスを開始し、すぐにプロセス ID を返します。これらの関数は、その処理が終了するまでブロッキングしません。

Integer GenerateRules ()

GenerateRules() は、単に規則を生成します。この関数はブロッキングしません。この関数は、プロセス ID を返します。プロセス ID は、規則が正常に生成されたかどうかを判別するため、GetStatus で使用できます。

Integer Import (String filename)

Import() は、指定したファイルからオブジェクトをインポートします。フル パス名を指定する必要があります。Import はブロッキングしません。代わりにプロセス ID を返します。ファイル名では、ワイルドカードはサポートされていません。


) リモート ドライブにあるファイルからインポートすることはできません。インポート ファイルは CSA MC システムでローカルに存在している必要があります。


Integer Export (String filename, String desc, String emailAddr, StringArray objExpressions)

Export() 関数は、オブジェクトをファイルにエクスポートします。エクスポートされたファイルはデフォルトの CSAMC エクスポート ディレクトリに保存され、CSA MC GUI の [Exports] ページからアクセスできます。オプションの電子メール アドレスを指定した場合、エクスポート ファイルのコピーが添付ファイルとしてその電子メール アドレスに送信されます。

オブジェクトは、オブジェクト式の配列として指定されます。それぞれのオブジェクト式は、「オブジェクト式」の項で説明した名前/値のペアの形式で表します。

重要:それぞれのオブジェクト式で、1 つのオブジェクト タイプ(「OBJ_TYPE='POLICY'」など)を指定する必要があります。それ以外の場合はエラーになります。

次に、すべての Windows アプリケーション クラスをエクスポートするサンプル配列を示します。

sampleArray[] = { "OBJ_TYPE='APP_CLASS' OS_TYPE='W'" };

Export はブロッキングしません。代わりにプロセス ID を返します。

重要:記述可能なオブジェクト式が、すべて Export() 関数で許容されるとは限りません。HOST または RULE タイプのオブジェクトはエクスポートできません。また、オブジェクト タイプ VAR の直後で許容される名前は VAR_TYPE だけです。つまり、名前、バージョン、OS_TYPE、または OS_FLAVOR を指定して、変数をエクスポートすることはできません。変数をエクスポートできるのは、VAR_TYPE を指定した場合だけです。

注:この関数で電子メールを送信するには、電子メールの送信先であるサーバの名前をスクリプト インターフェイスに通知する必要があります。そのためには、SetConfigVar 関数を使用して、「csaapi.email_server」パラメータに電子メール サーバの名前を設定します。この操作は 1 回しか実行しないでください。

注:スクリプト インターフェイスが電子メールを送信できるようにするには、最初に、許容される Web サーバ アクションを規制する CSAMC 規則に微調整を加える必要があります。詳細については、スクリプト インターフェイスのサンプル スクリプトと README.txt ファイルを参照してください。


) エクスポート ファイルを複数のアドレスに送信するには、電子メール アドレスをセミコロン(;)で区切ります。例:joe@company.com;jane@company.com


Integer RunHostTask (String hostTaskName)

RunHostTask() は、ホストの管理タスクを実行します。RunHostTask はブロッキングしません。代わりにプロセス ID を返します。RunHostTask では、CSA MC スクリプト インターフェイスのワイルドカードのメカニズムがサポートされています。

Integer BackupConfig()

BackupConfig() は、バックアップ タスクを実行します。BackupConfig はブロッキングしません。代わりにプロセス ID を返します。ユーザが、CSA MC UI の [Maintenance] > [Backup Configuration] 画面でバックアップのタイプとディレクトリ名をあらかじめ指定しない限り、BackupConfig は失敗します。

Boolean SetConfigVar(String name, String value)

SetConfigVar() は、CSA MC マシン上の「set_config.csapl」スクリプトと同じ機能を実行します。SetConfigVar() を使用すると、システム全体に存在する、多数の持続的な CSA MC 設定変数を変更できます。通常、有効な設定変数名とそれに関連付けられた値は CSA MC のマニュアルの別の場所に記載しますが、次の 2 つの設定変数は、電子メールを送信するすべてのスクリプト インターフェイス関数で重要なので、ここで説明します。

csaapi.email_server

csaapi.orig_email_addr

1 番目の設定変数は、スクリプト インターフェイスにより電子メールが送信される宛先アドレスを指定するのに使用します。2 番目の設定変数は、スクリプト インターフェイスにより送信される電子メールの送信者アドレスを指定するのに使用します。

たとえば、スクリプト インターフェイスですべての電子メール(たとえば GenerateReport からの電子メール)を myserver.cisco.com というサーバに送信するには、次の呼び出しを実行します。

SetConfigVar ("csaapi.email_server", "myserver.cisco.com")

この場合も、電子メールを生成するスクリプト インターフェイス関数を実行する前に、電子メール サーバを設定する必要があります。

注:これらの文字列パラメータでは、ワイルドカードはサポートされていません。

注:この関数で設定されるすべての設定変数は、CSA MC データベースで持続性があります。つまり、設定する必要があるのは 1 回だけです。

String GetConfigVar (String name)

GetConfigVar は、CSA MC 設定データベースに格納されているすべての設定変数の値を返します。CSA MC マシン上の「set_config.csapl」スクリプトと同じ値を返します。

これらの CSA MC 設定変数の詳細については、前述の SetConfigVar の説明を参照してください。

注:3 つの異なる状況の結果として、空の文字列が返されることがあります。それらの状況とは、データベース内の値が実際に空の文字列である場合、データベース内で値が設定されていない場合、およびスクリプト インターフェイスでエラーが発生した場合です。これら 3 つの状況を区別するには、GetStatus を呼び出します。戻りコード 0(成功)は、データベース内で値が空の文字列であることを示します。負の戻り値(アクションなし)は、一致するレコードがデータベースになかったことを示します。正の戻り値(失敗)は、スクリプト インターフェイスにエラーがあること、およびエラーの詳細を取得するには GetStatusMessage を呼び出す必要があることを示します。

ホスト グループの割り当て

次の関数は、ホストやグループの割り当てを変更します。次に示すすべての関数で、成功時には TRUE、失敗時には FALSE が返されます。また、これらすべての関数で、関数のいずれかの部分が失敗しても、すべての変更がロールバックされます。つまり、hostExpression に一致するすべてのホストが正しく操作されるか、まったく操作が行われないかのいずれかです。

これらの関数は、操作が完了するまでブロッキングします。これらの関数では規則は生成されません。その操作は別個に行う必要があります。

これらの関数に共通することですが、ホスト式やグループ式がホストやグループを返さなくても、エラーや失敗とは見なされません。この場合、関数は TRUE(成功)を返すだけで、何も行いません。その理由は、スクリプトで一定の基準に一致するホストを操作しようとしても、オブジェクト式の基準に一致するホストが存在しない場合があるからです。

オブジェクト式に一致するオブジェクトがないため、ホストを操作できなかった状況を検出するには、スクリプトで GetStatus 関数を呼び出します。

Boolean AddHostsToGroups (String hostExp, String groupExp)

この関数は、ホスト式に一致するすべてのホストを、グループ式に一致するすべてのグループに追加します。この関数は、いずれのグループからもホストを削除しません。この関数はホストを追加するだけです。

次の例では、Group Test というグループのすべてのホストを、Windows の Desktops - All types に追加します。

AddHostsToGroups("GROUP_NAME='Group Test'", "GROUP_NAME='Desktops - All types' OS_TYPE='WINDOWS' VERSION='5.0 r173'")

追加するホストのオペレーティング システムが、グループ オブジェクト式に一致するグループのオペレーティング システムとは異なる場合、そのホストはグループに移動されません。エラー条件は生成されず、ホストはスキップされます。

Boolean RemoveHostsFromGroups (String hostExp, String groupExp)

この関数は、ホスト式に一致するすべてのホストを、グループ式に一致するすべてのグループから削除します。この関数は、いずれのグループにもホストを追加しません。この関数はホストを削除するだけです。

次の例では、Group Test というグループのすべてのホストを、Windows の Desktops - All types から削除します。

RemoveHostsFromGroups ("GROUP_NAME='Group Test'", "GROUP_NAME='Desktops - All types' OS_TYPE='WINDOWS' VERSION='5.0 r173'")

Boolean MoveHosts (String hostExp, String fromGroupExp, String toGroupExp)

この関数は、ホスト式に一致するすべてのホストを、「from group expression」に一致するすべてのグループから削除し、「to group expression」に一致するすべてのグループに追加します。

理論上は、MoveHosts を実行したときと、AddHostsToGroups と RemoveHostsFromGroups を順に実行したときでは、結果が異なる可能性があります。その理由は、MoveHosts は追加を実行する前に「from」および「to」グループを計算するのに対し、後者の組み合わせは、ホストが追加された後で「from」からの削除を計算することにあります。ただし、実際には、ほとんどの場合、両方のアプローチの結果は同じです。

次の例では、Group Test というグループのすべてのホストを、Windows の Desktops - All types に移動します。

MoveHosts ("GROUP_NAME='Group Test'", "GROUP_NAME='Desktops - All types' OS_TYPE='WINDOWS' VERSION='5.0 r173'")

「from group」に一致するグループがあり、「to group」に一致するグループがない場合、この関数は失敗します。これは、「from group」からホストが削除される結果になり、それが呼び出し側の意図とは異なる場合があるからです。この関数は、OS の互換性が原因で、1 つまたは複数のホストを移動できない場合にも失敗します。

Boolean DeleteHosts (String hostExpression)

この関数は、ホスト式に一致するすべてのホストを、CSA MC のごみ箱に送信します。この関数を使用する場合は、注意する必要があります。

ホストの操作

次の関数は、何らかの方法でホストを操作します。これらすべての関数は、パラメータとしてホスト式(オブジェクト式)を取ります。

これらの関数に共通することですが、ホスト式がホストを返さなくても、エラーや失敗とは見なされません。その理由は、スクリプトで一定の基準に一致するホストを操作しようとしても、オブジェクト式の基準に一致するホストが存在しない場合があるからです。

ホスト式に一致するホストがないため、ホストを操作できなかった状況を検出するには、スクリプトで GetStatus 関数を呼び出します。

Boolean SendHint (String hostExp)

この関数は、ホスト式に一致するすべてのホストにヒントを送信します。

この関数は、すべてのホストがヒントを受信するまでブロッキングしません。スクリプト インターフェイスのインフラストラクチャは、適切なホストに優先権を与えるように CSA MC のヒント インフラストラクチャに指示する「タグ」を、CSA MC データベースに配置するだけです。プロセッサの速度やヒントが送信されるホストの数などの多くの要因によって、ヒントが送信されるまで若干の遅延が発生する場合があります。この遅延が存在するのは、ポーリング サーバがポーリングによって過負荷にならないようにするためです。

この関数は、成功した場合は true を返し、失敗した場合は false を返します。

Boolean ResetAgent (String hostExp, Integer resetMask)

この関数は、Cisco Security Agent をリセットします。この関数は、対応する CSA MC UI の関数と同じように動作します。関数が実行されると、スクリプト インターフェイスのインフラストラクチャは、次回のポーリング時に適切なエージェントをリセットするように指示するフラグを、CSA MC データベースに設定します。

この関数の呼び出し側は、次の一覧から目的の値を追加することによって、リセット マスクを計算する必要があります。
1: Cached Responses and Logging

2: Local Firewall Settings

4: Learned Information

8: System Security

16: System State

32: Untrusted Applications

64: User Query Responses

128: AntiVirus Tags

256: Data Classification (DLP) Tags

512: Local Signatures

たとえば、「System Security」と「System State」だけをリセットする場合、マスクは 8 と 16 を加算した 24 になります。

重要:この関数は、CSA MC データベースのフラグが設定されるまでブロッキングします。それから、成功した場合は true を返し、失敗した場合は false を返します。この関数が返されても、すべてのエージェントがリセットされたという意味ではありません。次回のポーリングでエージェントをリセットするように CSA MC が設定されたというだけです。場合によっては、ResetAgent 関数を呼び出してから SendHint 関数を呼び出すことにより、エージェントのポーリングを促進することができます。

ホスト情報の取得

次の関数は、指定したホストに関する情報を返します。エラーが発生したか、一致するホストがない場合、各関数は空の文字列配列を返します。GetStatus は、成功した場合は 0、ホスト式に一致するホストがない場合は 1、その他の種類の失敗が発生した場合は別の数字を返します。

StringArray GetHostInfo (String hostExpression)

返される配列のそれぞれの文字列には、CSA MC システム上の [Hosts] ページにある、指定したホストの情報が含まれます。

StringArray GetLastIpAddrs (String hostExpression)

この関数は、1 つまたは複数のホストの IP アドレスの履歴を取得するときに使用できます。配列の各文字列の形式は次のとおりです。

<ip addr> <hostname> <ACTIVE|INACTIVE>

次の例を参考にしてください。

1.1.1.1 host1 ACTIVE

1.1.1.2 host2 ACTIVE

10.10.10.10 host3 ACTIVE

10.10.10.11 host4 INACTIVE

10.10.10.12 host5 INACTIVE

StringArray GetDiagnosticInfo (String hostExpression)

この関数は、ホスト式の引数に一致するホストの診断情報を取得するときに使用できます。

この関数では、CSA MC サーバが診断情報を収集する方法や格納する方法が異なるため、関数の動作が、ホスト情報を取得する他の CSAAPI 関数と若干異なります。

GetDiagnosticInfo が実行されると、CSA MC は次の 2 つの操作を実行します。

1. サーバは、現在データベースに存在する、当該ホストに関するすべての診断情報をスクリプトに返送します。特定のホストに関する診断情報がデータベースに存在しない場合、そのホストについては、最新の診断情報の再チェックを依頼する文字列が、クライアント スクリプトに送信されます。

2. サーバは、適切なホスト上の Cisco Security Agent に、新しい診断情報を CSA MC システムに送信するように依頼します。各ホストは、次回のポーリング時(デフォルトの間隔は 10 分)に、新しい診断情報を CSA MC システムに送信します。この情報は、CSA MC データベースに格納されます。

したがって、特定のホストに関する最新の診断情報を取得するには、GetDiagnosticInfo 関数を 2 回呼び出すことが推奨されています。初回の呼び出しは、最新の情報をホストに要求するためだけに行い、戻り値は廃棄してかまいません。2 回目の呼び出しは、SendHint を呼び出した後、またはポーリング間隔が経過するまで待った後に行います。2 回目の呼び出しで返される文字列配列は、ホストから取得できる最新の診断情報を表します。

システム全体の情報の取得

次の関数は、システム全体に関する情報を返します。

StringArray GetMostActive (String objType, Integer numOfObjects, String timespan)

この関数は、指定した期間内で最もアクティブな「n」個のオブジェクトを返します。この関数は、CSA MC UI の [Status Summary] ページに表示されるのと同じ情報を提供します。

重要:この関数で現在サポートされているオブジェクト タイプは、HOST と RULE の 2 つだけです。

重要:「timespan」変数の有効値は、DAY、WEEK、および ALL だけです。

ホストの場合、戻り値の配列は、次のような形式の文字列のリストになります。

myhost [W] - 174 events

規則の場合、戻り値の配列は、次のような形式の文字列のリストになります。

File access control [id=266], CSA MC Security Module [W, V5.2 r0] - 6 events

例を示します。

直前の 24 時間で最もアクティブな 10 個のホストのリストを取得するには、次の構文を使用します。

GetMostActive ("HOST", 10, "DAY")

直前の 1 週間で最もアクティブな 20 個の規則のリストを取得するには、次の構文を使用します。

GetMostActive ("RULE", 20, "WEEK")

Integer GetLastDayEventCount ()

この関数は、24 時間以内に生成されたイベントの数を返します。

StringArray GetReportNames ()

この関数は、現在定義されているすべてのレポートの名前が含まれるリストを返します。

StringArray GetHostTaskNames ()

この関数は、現在定義されているすべてのホストの管理タスクの名前が含まれるリストを返します。

イベント情報の取得

この項の関数は、イベントに関する情報を返します。

StringArray GetLatestEvents (String objType, String objExpression, Integer numOfEvents)

この関数は、式に一致するオブジェクトに対応した、最新のイベントを返します。

重要:この関数では、サポートされていない定義済みのオブジェクト タイプがあります。サポートされているタイプは、HOST、GROUP、POLICY、RULE_MODULE、および RULE です。サポートされていないタイプは、CLASS および VAR です。

StringArray GetLatestAudit (Integer numOfEvents)

この関数は、最新の「n」個の監査追跡イベントを返します。

レポートの取得

Integer GenerateReport (String reportName, String emailAddress)

この関数は、レポートを生成します。空の電子メール アドレスが指定された場合、レポートは単に CSA MC 上のデフォルトのレポート ディレクトリに配置されます。正当な電子メール アドレスが指定された場合、レポートは該当するアドレスに送信され、CSA MC 上のデフォルトのレポート ディレクトリから削除されます。

この関数は、レポートが作成されるまでブロッキングしません。その代わり、この関数はレポートを作成するプロセスを作成します。この関数は、プロセス ID を返します。プロセス ID は、レポートが正常に生成されたかどうかを判別するため、または生成された日時を判別するため、GetStatus で使用できます。

注:この関数で電子メールを送信するには、電子メールの送信先であるサーバの名前をスクリプト インターフェイスに通知する必要があります。そのためには、SetConfigVar 関数を使用して、「csaapi.email_server」パラメータに電子メール サーバの名前を設定します。この操作は 1 回しか実行しないでください。

注:スクリプト インターフェイスが電子メールを送信できるようにするには、最初に、許容される Web サーバ アクションを規制する CSA MC 規則に微調整を加える必要があります。詳細については、スクリプト インターフェイスのサンプル スクリプトと README.txt ファイルを参照してください。


) レポートを複数のアドレスに送信するには、電子メール アドレスをセミコロン(;)で区切ります。例:joe@company.com;jane@company.com