Ansichten:
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.
Hinweis
Hinweis
Endpunkte 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:
  1. Laden Sie das Deep Security Web-Services-SDK herunter
  2. Erstellen Sie ein Benutzerkonto, das ein REST-API-Client verwenden kann

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.
  1. Navigieren Sie in der Server- und Workload Protection Konsole zu AdministrationBenutzerverwaltungRollen.
  2. Klicken Sie auf Neu.
  3. Deaktivieren Sie Allow Access to Workload Security Manager User Interface und aktivieren Sie Allow Access to Web Service API.
  4. Wenn alle anderen Konfigurationen abgeschlossen sind, klicken Sie auf Speichern.
  5. Laden Sie einen Benutzer ein, dem Konto beizutreten, wie hier beschrieben.
  6. 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.
  7. 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/apiVersion
Allerdings 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 AdministrationSystem SettingsSicherheit.
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:
  1. Klicken Sie in Eclipse auf DateiImportieren.
  2. Wählen Sie AllgemeinExisting Projects into Workspace als Importquelle aus.
  3. Klicken Sie auf Durchsuchen und wählen Sie den Beispielordner des Deep Security Web-Services-SDK als Stammverzeichnis aus.
  4. 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 RunRun AsJava Application. 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:
  • Der Anrufer hat keine Zugriffsrechte auf die Web-Services-APIs.
  • Der aufrufende Benutzer hat keine Zugriffsrechte, um die fehlgeschlagene API aufzurufen.
  • Die SID des Anrufers ist ungültig.
  • Der Anrufer ist ein Benutzer in einem Mandanten, aber die API ist nur auf primäre Mandantenbenutzer beschränkt.
404 Nicht gefunden
Einer der folgenden Gründe:
  • Der Anrufer hat auf eine ungültige URL zugegriffen, die nicht Teil der REST-API ist.
  • Der Anrufer hat eine Ressource angegeben, die nicht existiert. Zum Beispiel wurde versucht, einen Mandanten anhand der ID zu löschen, und die angegebene ID entspricht keinem vorhandenen Mandanten.
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:
  • Es ist ein Datenbankfehler aufgetreten.
  • Ein anderer nicht behandelter Fehler ist aufgetreten.

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>
Tipp
Tipp
Um 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&lt;?> clientResponse = (ClientResponse&lt;?>)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