以前のバージョンのDeep Securityで最初にリリースされたREST APIは引き続き使用できますが、廃止され、新機能は追加されません。可能であれば、 Server & Workload Protection APIを使用して、新機能と継続的なサポートを利用してください。
従来のREST APIを使用する場合
従来のREST APIが必要な機能を提供し、それらの機能が Server & Workload Protection APIでまだ提供されていない場合は、引き続き従来のREST APIを使用する必要があります。次の表は、 Server & Workload Protection APIで利用できるREST API機能をまとめたものです。
注意 Server & Workload Protection APIには、エンドポイントが継続的に追加されています。この表の変更を定期的に確認してください。
|
カテゴリ
|
機能
|
Server & Workload Protection APIのサポート
|
認証
|
ログインとログアウト
|
|
セッションの説明と終了
|
‐
|
|
管理者
|
管理者の作成、説明、一覧表示、変更、および削除
|
はい - 参照管理者APIレファレンス/参照情報の
|
ポリシー設定
|
ポリシーの不正プログラム対策設定の説明、変更、および削除
|
はい - 参照ポリシーの変更APIレファレンス/参照情報の
|
ポリシーの検索設定のリセット、説明、および変更
|
‐
|
|
ポリシーのアプリケーションコントロール設定の説明と変更
|
はい - 参照ポリシーの変更APIレファレンス/参照情報の
|
|
ホスト (コンピュータ)
|
コンピュータの不正プログラム対策設定の説明、変更、および削除
|
はい - 参照コンピュータの変更APIレファレンス/参照情報の
|
コンピュータのスキャナ設定のリセット、説明、および変更
|
‐
|
|
スマートフォルダの作成、削除、説明、一覧表示、変更、および同期
|
‐
|
|
スマートフォルダ内のコンピュータを一覧表示する
|
‐
|
|
RelayおよびRelayグループの一覧表示、無効化、説明、および変更
|
‐
|
|
ホストグループのツリーの表示
|
はい - 参照コンピュータグループの一覧表示APIレファレンス/参照情報の
|
|
コンピュータのスキャナ設定の説明、変更、および削除
|
‐
|
|
不正プログラム検索設定
|
不正プログラム検索設定の作成、説明、一覧表示、変更、および削除
|
はい - 参照不正プログラム対策の設定APIレファレンス/参照情報の
|
予約タスク
|
予約タスクの作成、削除、説明、変更、および一覧表示
|
はい - 参照予約タスクAPIレファレンス/参照情報の
|
予約タスクの受信者リストを変更する
|
はい - 参照してくださいスケジュールされたタスク> スケジュールされたタスクの変更 > リクエスト本文 > のgenerateReportTaskParameters APIレファレンス/参照情報
|
|
スクリプト
|
スクリプトの一覧表示
|
はい - 参照スクリプトAPIレファレンス/参照情報の
|
レポート
|
レポートテンプレートの一覧表示
|
はい - 参照レポートテンプレートAPIレファレンス/参照情報の
|
警告
|
アラートの説明と一覧表示
|
‐
|
アラートの種類の説明、一覧表示、変更、およびリセット
|
‐
|
|
アラートを消去し、単一のターゲットでアラートを消去します。
|
‐
|
|
イベントベースタスク
|
イベントベースのタスクを作成、削除、および一覧表示する
|
はい - 参照イベントベースのタスクAPIレファレンス/参照情報の
|
役割
|
役割のホスト、ホストグループ、およびポリシーアクセスの追加、削除、および変更
|
‐
|
役割権限の追加と削除
|
‐
|
|
役割の作成、削除、説明、変更、および一覧表示
|
‐
|
|
決済
|
AWS Marketplaceの課金レコードとインスタンスレートを一覧表示する
|
‐
|
クラウド
|
AWSアカウントへの接続、接続の削除、変更、および説明
|
‐
|
クラウドアカウントの一覧表示、作成、削除、説明、変更、および同期 (AWS以外)
|
‐
|
|
アプリケーションコントロール
|
決定ログの説明、一覧表示、および取り消し
|
‐
|
ルールセットの作成、削除、説明、および一覧表示
|
‐
|
|
グローバルルールセットの説明、およびグローバルルールセットルールの追加と削除
|
‐
|
|
アプリケーションドリフトとコンピュータドリフトの説明、一覧表示、および確認
|
‐
|
|
ソフトウェアインベントリの作成、削除、説明、および一覧表示
|
‐
|
|
信頼できるアップデートモード (メンテナンスモード) の説明と変更
|
‐
|
|
IPS
|
SSL設定の作成、削除、変更、説明、および一覧表示
|
‐
|
Connected Threat Defense
|
不審オブジェクトのリストの消去と変更
|
‐
|
イベント
|
不正プログラム対策、変更監視、セキュリティログ監視、Webレピュテーション、およびアプリケーションコントロールの各イベントの一覧と説明
|
‐
|
Syslog設定の一覧表示、作成、削除、説明、および変更
|
‐
|
|
SAML
|
SAMLサービスプロバイダの説明
|
‐
|
SAML IDプロバイダの一覧表示、作成、削除、説明、および変更
|
‐
|
|
SAMLを使用して役割を引き受ける
|
‐
|
|
診断
|
Managerとエージェントの診断パッケージを取得する
|
‐
|
ライセンス
|
ライセンスステータスの説明とアクティベーションコードのアップデート
|
‐
|
ニュースフィード
|
ニュースフィード項目の説明、一覧表示、および非表示
|
‐
|
環境
|
プロキシの一覧表示、作成、削除、説明、および変更
|
‐
|
REST APIを使用するための環境の設定
REST APIを使用して開発するための環境を準備するには、次のタスクを実行します。
WebサービスSDKのダウンロード
WebサービスSDKのZIPファイルをダウンロードして解凍します。
ZIPファイルには、REST APIドキュメント、Javaクライアントアプリケーションの開発に役立つJavaクライアントライブラリ、およびこのライブラリを使用するサンプルが含まれています。別の言語を使用している場合、またはJavaを使用していて独自のRESTクライアントテクノロジを使用する場合は、REST
APIリファレンスドキュメントを使用してAPI呼び出しの構文を学習してください。このリファレンスでは、各操作について、HTTPパスと操作 (GET、PUTなど) を含むHTTP構文、およびAPI呼び出しとの間でやり取りされるデータの構造について説明します。
内容の完全なリストとその他の重要な情報については、ZIPのReadmeファイルを参照してください。
Webサービスの役割とユーザの作成
Deep Security WebサービスAPIエンドポイント (SOAPとRESTの両方) およびREST APIで使用するその他の機能にアクセスする権限を持つロールを作成します。セキュリティ上の理由から、APIコール専用のロールとユーザを作成する必要があります。
REST APIは、コンピュータ権限、セキュリティプロファイル権限、ユーザ権限など、すべての役割のアクセス制御を適用します。たとえば、特定のコンピュータの表示をユーザに許可するWebサービスAPIのロールを作成すると、そのユーザとして認証されたREST
APIクライアントは、指定されたコンピュータのみを表示できます。
- Server & Workload Protection コンソールで、次の場所に移動します。 。
- [新規]をクリックします。
- [Workload Security Managerユーザインタフェースへのアクセスを許可] の選択を解除し、 [WebサービスAPIへのアクセスを許可]を選択します。
- 他のすべての設定が完了したら、 [保存]をクリックします。
- 詳細に従ってアカウントに参加するようユーザを招待するここ。
- ユーザに必要なプロパティを指定します。 [役割] プロパティで、作成した役割を選択します。
- 新しいユーザアカウントのユーザ名とパスワードを書き留めます。
REST APIクライアントアプリケーションの開発
任意のプログラミング言語を使用して、APIのドキュメントに従ってREST APIを呼び出すコードを記述します。 XMLまたはJSONエンコーディング、およびHTTPおよびHTTPSプロトコルをサポートする任意のプログラミング言語を使用できます。
基本的なAPIアクセス
REST APIへのすべてのアクセスは、REST APIエンドポイントを介して行われます。
https://app.deepsecurity.trendmicro.com/rest
。REST APIは標準のHTTPメカニズムを使用し、一部の操作にはHTTP GETを使用した認証なしでアクセスできるため、これらのメソッドにはWebブラウザからアクセスできます。たとえば、次のURLはREST
APIのバージョンをブラウザに返します。
https://dsm.example.com:4119/rest/apiVersion
ただし、ほとんどのREST API呼び出しには認証が必要です。呼び出しを認証するには、GETおよびDELETEメソッドのクエリパラメータとして、またはPUTおよびPOSTメソッドのメッセージ本文でセッション識別子
(SID) を指定します。セッションIDを取得するには、
/rest/authentication/login
APIへのアクセスを許可されたユーザのユーザ名とパスワードを含むURL。セッションの管理
セッションを管理するには、次の操作を行います。
- 不要になったAPIセッションを終了します。 Server & Workload Protection は、一度にアクティブにできるセッションの数を制限します。同時セッションの最大数に達しないように、アプリケーションはセッションを終了する必要があります。を呼び出します。
/rest/authentication/logout
セッションを終了するURL。 - 設定可能な期間が経過するとセッションがタイムアウトします。ユーザごとに許可される同時セッション数とセッションタイムアウトを変更するには、 。
はJavaコードの例以下に、このプロセスを示します。
提供されたJava REST APIクライアントを使用する
提供されるJava REST APIクライアントは、 RESTEasyクライアントフレームワークおよびApache HTTPComponentsプロジェクト。このフレームワークは、JAX-RSアノテーションでマークアップされたJavaインタフェースを取得し、 Server & Workload Protectionと通信できるインタフェースの実装を生成します。 Java REST APIクライアントは、すべてのオブジェクトのシリアル化と逆シリアル化、HTTP URL、およびHTTPメソッドを処理します。
Java REST APIクライアントを使用するには、アプリケーションのクラスパスのlibフォルダにJARファイルを含めます。 JARファイルが他のサードパーティライブラリに依存している。詳細については、samplesディレクトリにあるEclipseプロジェクトのpom.xmlファイルを参照してください。
すべてのAPIのインタフェースは、Javaパッケージにあります。
com.trendmicro.ds.platform.rest.api
。 APIとの間で送受信されるすべてのオブジェクトは、Javaパッケージ内にあります。com.trendmicro.ds.platform.rest.object
およびサブパッケージです。Javaコードの例
次のコード例では、Java REST APIクライアントを使用して Server & Workload Protectionで認証します。
import javax.ws.rs.core.Response.Status;
import org.jboss.resteasy.client.ClientResponse;
import org.jboss.resteasy.client.ClientResponseFailure;
import org.jboss.resteasy.client.ProxyFactory;
import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor;
import org.jboss.resteasy.plugins.providers.RegisterBuiltin;
import org.jboss.resteasy.spi.ResteasyProviderFactory;
import com.trendmicro.ds.platform.rest.api.IAuthenticationAPI;
import com.trendmicro.ds.platform.rest.message.error.ErrorMessage;
import com.trendmicro.ds.platform.rest.object.DSCredentials;
public class AuthenticateSample {
public static void main(String[] args) {
// URL for the REST API. Change this as appropriate.
String restApiUrl = "https://10.0.0.5:4119/rest";
// The user name to use for authentication. Change this as appropriate.
String username = "admin";
// The user's password. Change this as appropriate.
String password = "supersecretpassword";
// Variable to store the session identifier (SID).
String sID = null;
// RESTEasy client framework initialization that only needs to be done once per VM
RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
// An object that will execute HTTP requests
ApacheHttpClient4Executor executor = new ApacheHttpClient4Executor();
// Create the object that will communicate with the authentication API.
IAuthenticationAPI authClient = ProxyFactory.create(IAuthenticationAPI.class, restApiUrl, executor);
// Create the object to pass to the authentication call.
DSCredentials credentials = new DSCredentials();
credentials.setUserName(username);
credentials.setPassword(password);
try {
System.out.println("Attempting to authenticate to Server & Workload Protection REST API...");
sID = authClient.login(credentials);
System.out.println("Authentication successful.");
System.out.println("Authentication session ID string received: " + sID);
} catch (ClientResponseFailure e) {
// This is a special type of exception that means the server threw
// an exception because there was a problem with the credentials.
// It's important to handle these exceptions explicitly or the
// connection to the server won't be released back in to the
// underlying connection pool, meaning any subsequent API calls would fail.
// See the RESTEasy Client Framework documentation for more details.
ClientResponse<?> clientResponse = e.getResponse();
// Try to parse the error response in to an instance of the special
// ErrorMessage class and display the result.
Status status = clientResponse.getResponseStatus();
System.out.println("Server returned error status code " + status.getStatusCode() + " (" + status + ")");
ErrorMessage errorMessage = clientResponse.getEntity(ErrorMessage.class);
System.out.println("Returned error message: " + errorMessage.getMessage());
} catch (Exception e) {
// Some other error happened, most likely related to network communication problems.
System.out.println("There was an error during authentication.");
e.printStackTrace();
} finally {
if (sID != null) {
// Make sure to always log out.
System.out.println("");
System.out.println("Ending session...");
authClient.endSession(sID);
System.out.println("End session successful.");
// make sure the session ID isn't accidentally re-used.
sID = null;
}
}
// Cleanup: force the HTTP Client to close any open sockets
executor.close();
}
}
サンプルJavaコードの使用
サンプルのJavaコードは、samplesフォルダにあります。サンプルは、EclipseワークスペースにインポートできるEclipseプロジェクトの一部です。
- Eclipseで、 。
- 選択 インポート元。
- [参照] をクリックし、 Deep Security Web Services SDKのサンプルフォルダをルートとして選択します。
- [REST APIのサンプル] プロジェクトが選択されていることを確認し、 [完了]をクリックします。
Eclipse内でサンプルファイルを実行するには、ファイルを開き、
。サンプルには、[実行設定] 画面で設定する必要があるコマンドライン引数が必要です。HTTPステータスコード
REST APIは、標準のHTTPステータスコードを使用して要求のステータスを返します。次の表は、使用可能な対応コードと、返される状況を示しています。
HTTPステータスコード
|
意味
|
200 OK
|
要求が正常に終了しました。
|
400 Bad Request
|
呼び出し元が、呼び出しに必要なすべてのデータを提供しませんでした。
|
401 Unauthorized
|
呼び出し元のSIDが非アクティブのためタイムアウトしました。認証プロセスを繰り返す必要があります。
|
403 - アクセスは許可されていません
|
次のいずれかの理由:
|
404 - ページが見つかりません
|
次のいずれかの理由:
|
405 Method Not Found
|
呼び出し元が、指定されたURLで許可されていないHTTPメソッドを指定しました。たとえば、HTTP POSTを使用して、GETアクセスを提供するAPIにアクセスします。
|
500 - 内部サーバエラー
|
次のいずれかの理由:
|
エラー応答
API呼び出しで次のステータスコード以外が返された場合
200 OK
の場合、対応本文には通常、次の例のようなJSONコードが含まれます。{ "error": { "message": "The Activation Code KA47-R947M-KDLUZ-A8WLF-WM6A3-LOL is invalid." } }
次の例に示すように、一部の呼び出しにはJSONではなくXMLコードが含まれます。
<error> <message>Error message string</message> </error>
ヒントXML対応ボディの使用を強制するには、
Accept の値を使用してリクエストにヘッダを追加します。application/xml 。 |
エラーメッセージは、問題のデバッグには役立ちますが、アプリケーションのエンドユーザへの表示には適していません。
javax.ws.rs.core.Responseを返すAPI呼び出し
一部のAPI呼び出しは、javax型のオブジェクトを返すと文書化されています。
.ws.rs.core.Response
。これらの呼び出しは、HTTPステータスコードのみを返すものと考えることができます。提供されているJava REST APIクライアントを使用する場合は、そのような呼び出しの結果を無視するのではなく、取得することが重要です。を取得したら、
Response
「RESTEasyクライアントフレームワーク」で説明されているように、サーバへの基礎となる接続を手動で解放して接続プールに戻す必要があります。例:org.jboss.resteasy.client.ClientResponse<?> clientResponse = (ClientResponse<?>)apiObject.methodThatReturnsResponse(methodParameters); clientResponse.releaseConnection();
特別な考慮事項
クエリパラメータに日付を指定する
検索クエリで日付を指定する場合は、 RFC 822ただし、年は2桁ではなく4桁でエンコードする必要があります。 RFC1123 。たとえば、次のようにエンコードします。
November 31 2012 at 3:45 PM Eastern Standard Time
として31 Nov 2012 15:45:00 -0500
。Javaでは、これらの日付は次を使用してエンコードできます。
java.text.SimpleDateFormat
および日付形式パターンdd MMM yyyy HH:mm:ss zzz
。たとえば、
DC5A4AA79326DF3E149A26EA2DA6B0C7
の場合、次のURLはすべてのホスト保護情報をクエリします。November 31 2012 at 3:45 PM Eastern Standard Time
、日付エンコードのスペースはURLエンコードされています。%20
:https://dsm.example.com:4119/rest/monitoring/usages/hosts/protection?sID=DC5A4AA79326DF3E149A26EA2DA6B0C7&from=31%20Nov%202012%2015:45:00%20-0500