Die REST-API, die ursprünglich in einer früheren Version von Deep Security veröffentlicht
wurde, ist weiterhin verfügbar, obwohl sie veraltet ist und keine neuen Funktionen
hinzugefügt werden. Wenn möglich, sollten Sie die Server- und Workload Protection-API verwenden, um von neuen Funktionen und fortlaufendem Support zu profitieren.
Für weitere Informationen siehe Automation Center: Verwenden Sie die Legacy-APIs.
Wann die Legacy-REST-API verwendet werden sollte
Sie sollten weiterhin die Legacy-REST-API verwenden, wenn sie die benötigten Funktionen
bietet und diese Funktionen in der Server- und Workload Protection-API noch nicht bereitgestellt werden. Die folgende Tabelle fasst die Verfügbarkeit
der REST-API-Funktionen in der Server- und Workload Protection-API zusammen.
HinweisEndpunkte werden kontinuierlich zur Server- und Workload Protection-API hinzugefügt. Überprüfen Sie regelmäßig diese Tabelle auf Änderungen.
|
|
Kategorie
|
Funktion
|
Server- und Workload Protection-API-Unterstützung
|
|
Authentifizierung
|
Einloggen und Abmelden
|
|
|
Sitzung beschreiben und beenden
|
Nicht verfügbar
|
|
|
Administratoren
|
Erstellen, beschreiben, auflisten, ändern und löschen Sie einen Administrator
|
Ja - Siehe Administratoren im API-Referenzhandbuch
|
|
Richtlinieneinstellungen
|
Beschreiben, ändern und löschen Sie die Anti-Malware-Einstellungen einer Richtlinie
|
Ja - Siehe Richtlinie ändern im API-Referenz
|
|
Zurücksetzen, beschreiben und ändern der Scanner-Einstellungen einer Richtlinie
|
Nicht verfügbar
|
|
|
Beschreiben und ändern Sie die Application Control-Einstellungen einer Richtlinie
|
Ja - Siehe Richtlinie ändern im API-Referenz
|
|
|
Hosts (Computer)
|
Beschreiben, ändern und löschen Sie die Anti-Malware-Einstellungen eines Computers
|
Ja - Siehe Computer ändern im API-Referenzhandbuch
|
|
Setzen Sie die Scanner-Einstellungen eines Computers zurück, beschreiben und ändern
Sie sie
|
Nicht verfügbar
|
|
|
Erstellen, löschen, beschreiben, auflisten, ändern und synchronisieren Sie einen intelligenten
Ordner
|
Nicht verfügbar
|
|
|
Listen Sie die Computer in einem intelligenten Ordner auf
|
Nicht verfügbar
|
|
|
Listen, deaktivieren, beschreiben und ändern Sie Relais und Relaisgruppen
|
Nicht verfügbar
|
|
|
Liste den Baum der Hostgruppen
|
Ja - Siehe Computergruppen auflisten im API-Referenzhandbuch
|
|
|
Beschreiben, ändern und löschen Sie Scanner-Einstellungen auf einem Computer
|
Nicht verfügbar
|
|
|
Malware-Suche-Konfigurationen
|
Erstellen, beschreiben, auflisten, ändern und löschen einer Malware-Suche-Konfiguration
|
Ja - Siehe Anti-Malware-Konfigurationen im API-Referenz
|
|
Geplante Aufgaben
|
Erstellen, löschen, beschreiben, ändern und auflisten von geplanten Aufgaben
|
Ja - Siehe Geplante Aufgaben im API-Referenz
|
|
Geplante Aufgabenempfängerliste ändern
|
Ja - Siehe Geplante Aufgaben > Eine geplante Aufgabe ändern > Anforderungstext > generateReportTaskParameters
im API-Referenz
|
|
|
Berichte
|
Berichtvorlagen auflisten
|
Ja - Siehe Berichtvorlagen im API-Referenz
|
|
Warnungen
|
Beschreiben und auflisten von Warnungen
|
Nicht verfügbar
|
|
Beschreiben, auflisten, ändern und zurücksetzen von Alarmtypen
|
Nicht verfügbar
|
|
|
Eine Warnung verwerfen und eine Warnung für ein einzelnes Ziel verwerfen
|
Nicht verfügbar
|
|
|
Ereignisbasierte Aufgaben
|
Erstellen, löschen und auflisten von ereignisbasierten Aufgaben
|
Ja - Siehe Eventbasierte Aufgaben im API-Referenz
|
|
Rollen
|
Hinzufügen, Löschen und Ändern des Zugriffs eines Rolle auf Host, Hostgruppe und Richtlinie
|
Nicht verfügbar
|
|
Eine Rollenberechtigung hinzufügen und löschen
|
Nicht verfügbar
|
|
|
Rollen erstellen, löschen, beschreiben, ändern und auflisten
|
Nicht verfügbar
|
|
|
Abrechnung
|
AWS Marketplace-Abrechnungsdatensätze und Instanzraten auflisten
|
Nicht verfügbar
|
|
Cloud
|
Verbinden Sie sich mit einem AWS-Konto, löschen, ändern und beschreiben Sie die Verbindung
|
Nicht verfügbar
|
|
Listen, erstellen, löschen, beschreiben, ändern und synchronisieren von Cloud-Konten
(nicht AWS)
|
Nicht verfügbar
|
|
|
Application Control
|
Beschreiben, auflisten und ein Entscheidungsprotokoll rückgängig machen
|
Nicht verfügbar
|
|
Erstellen, löschen, beschreiben und auflisten von Regelsätzen
|
Nicht verfügbar
|
|
|
Beschreiben Sie ein globales Regelwerk und fügen Sie Regeln für das globale Regelwerk
hinzu oder löschen Sie diese
|
Nicht verfügbar
|
|
|
Beschreiben, auflisten und überprüfen Sie Anwendungsdrift und Computerdrift
|
Nicht verfügbar
|
|
|
Erstellen, löschen, beschreiben und auflisten von Softwareinventaren
|
Nicht verfügbar
|
|
|
Beschreiben und Ändern des Vertrauenswürdigen Aktualisierungsmodus (Wartungsmodus)
|
Nicht verfügbar
|
|
|
Eindringschutz
|
Erstellen, löschen, ändern, beschreiben und auflisten von SSL-Konfigurationen
|
Nicht verfügbar
|
|
Verbundene Bedrohungsabwehr
|
Liste der verdächtigen Objekte löschen und ändern
|
Nicht verfügbar
|
|
Ereignisse
|
Listen und beschreiben Sie Anti-Malware-, Integritätsüberwachungs-, Protokollinspektions-,
Web Reputation- und Application Control-Ereignisse
|
Nicht verfügbar
|
|
Listen, erstellen, löschen, beschreiben und ändern von Syslog-Konfigurationen
|
Nicht verfügbar
|
|
|
SAML
|
Beschreiben Sie einen SAML-Dienstanbieter
|
Nicht verfügbar
|
|
Auflisten, erstellen, löschen, beschreiben und ändern von SAML-Identitätsanbietern
|
Nicht verfügbar
|
|
|
Eine Rolle mit SAML übernehmen
|
Nicht verfügbar
|
|
|
Diagnose
|
Manager- und Agent-Diagnosepakete abrufen
|
Nicht verfügbar
|
|
Lizenzen
|
Beschreiben Sie Lizenzstatus und aktualisieren Sie Aktivierungscodes
|
Nicht verfügbar
|
|
Neuigkeiten-Feed
|
Beschreiben, auflisten und Nachrichten-Feed-Elemente verwerfen
|
Nicht verfügbar
|
|
Umgebung
|
Liste, erstellen, löschen, beschreiben und ändern Sie einen Proxy
|
Nicht verfügbar
|
Richten Sie Ihre Umgebung ein, um die REST-API zu verwenden
Führen Sie die folgenden Aufgaben aus, um Ihre Umgebung für die Entwicklung mit der
REST-API vorzubereiten:
Laden Sie das Web-Services-SDK herunter
Laden Sie die ZIP-Datei des Web-Services-SDK herunter und extrahieren Sie sie:
Die ZIP-Datei enthält REST-API-Dokumentation, eine Java-Client-Bibliothek, die bei
der Entwicklung von Java-Client-Anwendungen hilft, und Beispiele, die die Bibliothek
verwenden. Wenn Sie eine andere Sprache verwenden oder Java nutzen und Ihre eigene
REST-Client-Technologie einsetzen möchten, verwenden Sie die REST-API-Referenzdokumentation,
um die Syntax für API-Aufrufe zu lernen. Für jede Operation bietet die Referenz die
HTTP-Syntax einschließlich des HTTP-Pfads und der Operation (GET, PUT, etc.) sowie
eine Beschreibung der Struktur der Daten, die an den API-Aufruf übergeben oder von
ihm empfangen werden.
Siehe die Readme-Datei des ZIP für eine vollständige Liste der Inhalte und weitere
wichtige Informationen.
Erstellen Sie eine Webdienstrolle und einen Benutzer
Erstellen Sie eine Rolle, die Berechtigungen zum Zugriff auf die Deep Security Web-Services-API-Endpunkte
(sowohl SOAP als auch REST) und alle anderen Funktionen hat, die Sie mit der REST-API
verwenden möchten. Aus Sicherheitsgründen sollten Sie eine Rolle und einen Benutzer
speziell für Ihre API-Aufrufe erstellen.
Die REST-API erzwingt alle Rollen-Zugriffskontrollen, wie Computerrechte, Sicherheitsprofilrechte
und Benutzerrechte. Wenn Sie beispielsweise eine Rolle für die Web-Service-APIs erstellen,
die einem Benutzer erlaubt, bestimmte Computer zu sehen, kann ein REST-API-Client,
der sich als dieser Benutzer authentifiziert, nur die angegebenen Computer anzeigen.
- Navigieren Sie in der Server- und Workload Protection Konsole zu .
- Klicken Sie auf Neu.
- Deaktivieren Sie Allow Access to Workload Security Manager User Interface und aktivieren Sie Allow Access to Web Service API.
- Wenn alle anderen Konfigurationen abgeschlossen sind, klicken Sie auf Speichern.
- Laden Sie einen Benutzer ein, dem Konto beizutreten, wie hier beschrieben.
- Geben Sie die erforderlichen Eigenschaften für den Benutzer an. Wählen Sie für die Eigenschaft Rolle die Rolle aus, die Sie gerade erstellt haben.
- Notieren Sie sich den Benutzernamen und das Passwort des neuen Benutzerkontos.
Entwickeln Sie eine REST-API-Clientanwendung
Verwenden Sie die Programmiersprache Ihrer Wahl, um Code zu schreiben, der die REST-API
gemäß der Dokumentation der API aufruft. Sie können jede Programmiersprache verwenden,
die XML- oder JSON-Codierung und die HTTP- und HTTPS-Protokolle unterstützt.
Für weitere Informationen siehe Automation Center: Verwenden Sie die Legacy-APIs.
Grundlegender API-Zugriff
Alle Zugriffe auf die REST-API erfolgen über den REST-API-Endpunkt:
https://app.deepsecurity.trendmicro.com/rest.Da die REST-API standardmäßige HTTP-Mechanismen verwendet und einige der Operationen
ohne Authentifizierung über HTTP GET zugänglich sind, können diese Methoden über einen
Webbrowser aufgerufen werden. Zum Beispiel gibt die folgende URL die REST-API-Version
an den Browser zurück:
https://dsm.example.com:4119/rest/apiVersionAllerdings erfordern die meisten REST-API-Aufrufe eine Authentifizierung. Um Aufrufe
zu authentifizieren, geben Sie eine Sitzungskennung (SID) entweder als Abfrageparameter
für GET- und DELETE-Methoden oder im Nachrichtenkörper der PUT- und POST-Methoden
an. Um eine Sitzungs-ID zu erhalten, rufen Sie die
/rest/authentication/login-URL mit dem Benutzernamen und dem Passwort eines Benutzers auf, der berechtigt ist,
auf die API zuzugreifen.Verwalten Sie Ihre Sitzungen
Führen Sie die folgenden Aktionen aus, um Ihre Sitzungen zu verwalten:
- Beenden Sie API-Sitzungen, wenn sie nicht mehr benötigt werden. Server- und Workload Protection begrenzt die Anzahl der Sitzungen, die gleichzeitig aktiv sein können. Ihre Anwendung
sollte ihre Sitzungen beenden, um die maximale Anzahl gleichzeitiger Sitzungen nicht
zu erreichen. Rufen Sie die
/rest/authentication/logout-URL auf, um die Sitzung zu beenden. - Sitzungen laufen nach einem konfigurierbaren Zeitraum ab. Um die Anzahl der gleichzeitigen Sitzungen pro Benutzer und die Sitzungszeitüberschreitung zu ändern, gehen Sie zu .
Der Beispiel-Java-Code unten veranschaulicht diesen Prozess.
Verwenden Sie den bereitgestellten Java REST API-Client
Der bereitgestellte Java REST API-Client basiert auf dem RESTEasy Client Framework und dem Apache HTTPComponents-Projekt. Dieses Framework nimmt die Java-Schnittstellen, die mit JAX-RS-Anmerkungen versehen
sind, und generiert Implementierungen der Schnittstellen, die mit Server- und Workload Protection kommunizieren können. Der Java REST API-Client kümmert sich um die gesamte Objektserialisierung
und -deserialisierung, HTTP-URLs und HTTP-Methoden für Sie.
Um den Java REST API-Client zu verwenden, fügen Sie die JAR-Datei im lib-Ordner auf
dem Klassenpfad Ihrer Anwendung hinzu. Die JAR-Datei hat Abhängigkeiten von anderen
Drittanbieter-Bibliotheken. Einzelheiten finden Sie in der pom.xml-Datei des Eclipse-Projekts
im Beispielverzeichnis.
Die Schnittstellen für alle APIs befinden sich im Java-Paket
com.trendmicro.ds.platform.rest.api. Alle an die API gesendeten oder von der API empfangenen Objekte befinden sich im
Java-Paket com.trendmicro.ds.platform.rest.object und in den Unterpaketen.Beispiel-Java-Code
Der folgende Beispielcode verwendet den Java REST API-Client, um sich bei Server- und Workload Protection zu authentifizieren.
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- und 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();
}
}
Verwenden Sie den Beispiel-Java-Code
Beispiel-Java-Code ist im Ordner "samples" enthalten. Die Beispiele sind Teil eines
Eclipse-Projekts, das Sie in Ihren Eclipse-Arbeitsbereich importieren können:
- Klicken Sie in Eclipse auf .
- Wählen Sie als Importquelle aus.
- Klicken Sie auf Durchsuchen und wählen Sie den Beispielordner des Deep Security Web-Services-SDK als Stammverzeichnis aus.
- Stellen Sie sicher, dass das REST API Samples-Projekt ausgewählt ist, und klicken Sie auf Fertig stellen.
Um eine Beispieldatei in Eclipse auszuführen, öffnen Sie die Datei und klicken Sie
auf . Die Beispiele erfordern Befehlszeilenargumente, die Sie im Bildschirm "Ausführungskonfigurationen"
festlegen müssen.
HTTP-Statuscodes
Die REST-API verwendet standardmäßige HTTP-Statuscodes, um den Status von Anfragen
zurückzugeben. Die folgende Tabelle zeigt die Antwortcodes, die verwendet werden können,
und die Umstände, unter denen sie zurückgegeben werden.
|
HTTP-Statuscode
|
Bedeutung
|
|
200 OK
|
Die Anfrage wurde erfolgreich abgeschlossen.
|
|
400 Ungültige Anfrage
|
Der Anrufer hat nicht alle Daten bereitgestellt, die der Anruf erfordert.
|
|
401 Nicht autorisiert
|
Die SID des Anrufers ist aufgrund von Inaktivität abgelaufen. Der Authentifizierungsprozess
muss wiederholt werden.
|
|
403 Verboten
|
Einer der folgenden Gründe:
|
|
404 Nicht gefunden
|
Einer der folgenden Gründe:
|
|
405 Methode nicht gefunden
|
Der Anrufer hat eine HTTP-Methode angegeben, die für die gegebene URL nicht zulässig
ist. Zum Beispiel die Verwendung von HTTP POST, um auf eine API zuzugreifen, die nur
GET-Zugriff bietet.
|
|
500 Interner Serverfehler
|
Einer der folgenden Gründe:
|
Fehlermeldungen
Wenn ein API-Aufruf einen anderen Statuscode als
200 OK zurückgibt, enthält der Antworttext normalerweise JSON-Code, der dem folgenden Beispiel
ähnelt:{
"error": {
"message": "The Activation Code KA47-R947M-KDLUZ-A8WLF-WM6A3-LOL is invalid."
}
}
Einige Aufrufe enthalten XML-Code anstelle von JSON, wie im folgenden Beispiel:
<error> <message>Error message string</message> </error>
TippUm die Verwendung eines XML-Antwortkörpers zu erzwingen, fügen Sie Ihrer Anfrage einen
Accept-Header mit dem Wert application/xml hinzu. |
Die Fehlermeldung kann hilfreich sein, um das Problem zu debuggen, ist jedoch nicht
geeignet, um sie den Endbenutzern einer Anwendung zu präsentieren.
API-Aufrufe, die javax.ws.rs.core.Response zurückgeben
Einige API-Aufrufe sind dokumentiert, dass sie ein Objekt vom Typ javax
.ws.rs.core.Response zurückgeben. Diese Aufrufe können als Rückgabe von nichts anderem als dem HTTP-Statuscode
betrachtet werden.Wenn Sie den bereitgestellten Java REST API-Client verwenden, ist es wichtig, das
Ergebnis solcher Aufrufe abzurufen, anstatt sie zu ignorieren. Sobald Sie das
Response-Objekt haben, muss die zugrunde liegende Verbindung zum Server manuell zurück in
den Verbindungs-Pool freigegeben werden, wie im RESTEasy Client Framework beschrieben.
Zum Beispiel:org.jboss.resteasy.client.ClientResponse<?> clientResponse = (ClientResponse<?>)apiObject.methodThatReturnsResponse(methodParameters); clientResponse.releaseConnection();
Besondere Überlegungen
Geben Sie Daten in Abfrageparametern an
Wenn Sie in Suchanfragen Daten angeben, kodieren Sie diese gemäß den in Abschnitt
5 von RFC 822 festgelegten Datencodierungsregeln, außer dass Jahre als 4-stellige Zahlen kodiert
werden sollten, wie in Abschnitt 5.2.14 von RFC 1123 beschrieben. Zum Beispiel kodieren Sie
November 31 2012 at 3:45 PM Eastern Standard Time als 31 Nov 2012 15:45:00 -0500.In Java könnten diese Daten mit
java.text.SimpleDateFormat und dem Datumsformatmuster dd MMM yyyy HH:mm:ss zzz kodiert werden.Beispielsweise wird bei einer Sitzungs-ID von
DC5A4AA79326DF3E149A26EA2DA6B0C7 die folgende URL alle Hostschutzinformationen nach November 31 2012 at 3:45 PM Eastern Standard Time abfragen, wobei Leerzeichen in der Datumsverschlüsselung mit %20 URL-codiert wurden:https://dsm.example.com:4119/rest/monitoring/usages/hosts/protection?sID=DC5A4AA79326DF3E149A26EA2DA6B0C7&from=31%20Nov%202012%2015:45:00%20-0500
