Sicherheitsorchestrierung, -automatisierung und -reaktion (SOAR) Plattformen nutzen APIs (Programmierschnittstellen) intensiv, um die Orchestrierung unterschiedlicher Sicherheitstools (Produkte) zu steuern und die gewünschten Aktionen auszulösen. Neben SOAR-Produkten sind APIs bei nahezu allen Diensten, Tools und Produkten, die von IT-Fachkräften verwendet werden, weit verbreitet.
Obwohl APIs extrem verbreitet sind, haben Sie möglicherweise keine Erfahrung mit ihrer Verwendung oder wissen bei der Interaktion mit einem Dienst gar nicht, dass dieser über eine API verfügt. Facebook verwendet beispielsweise ein API-Framework namens [Name des Frameworks einfügen]. Graph-API.
“Die Graph-API ist die primäre Methode für Apps, um Daten aus dem Facebook-Social-Graph zu lesen und zu schreiben.”
APIs gibt es in vielen verschiedenen Formen, aber unabhängig vom verwendeten API-Framework ermöglichen sie es IT-Fachleuten, mit einem System oder Dienst zu interagieren. APIs ermöglichen die schnelle Entwicklung und Vernetzung von Systemen, sei es innerhalb einer einzelnen Anwendung oder in größerem Umfang wie bei Swimlane.
Die Nutzung von APIs ermöglicht es Einzelpersonen (und Organisationen) weltweit, Informationen schnell, sicher (bei korrekter Implementierung) und in einem definierten Format auszutauschen und miteinander zu interagieren. Ohne APIs wäre die Automatisierung in ihrer heutigen Form nicht möglich.
Im ersten Teil dieser zweiteiligen Serie gebe ich einen Überblick über REST (Representable State Transfer) APIs und die wichtigsten Punkte, um Ihnen den Einstieg in das Thema APIs zu erleichtern.
Authentifizierung
REST-APIs erfordern typischerweise einen Authentifizierungsmechanismus für die Interaktion mit der API. Dies ist Standard bei der Nutzung kostenpflichtiger Produkte oder Dienstleistungen, jedoch nicht unbedingt bei Open-Source-Intelligence-Tools (OSINT) oder anderen kostenlosen Diensten im Internet.
APIs verwenden verschiedene Standard- und benutzerdefinierte Authentifizierungsmethoden. Es ist unmöglich, sie alle aufzulisten, aber einige der folgenden Authentifizierungsmethoden werden häufig verwendet:
|
Typ |
Beispiel |
Beschreibung |
|
Keine Authentifizierung |
Abfrage der ThreatMiner-API und Nachschlagen der Domain google.com |
Eine API, die keine zusätzlichen Informationen beim Anfordern von Daten erfordert. |
|
Benutzername und Passwort |
Abfragen der lokalen Microsoft Exchange-API |
Eine API, die eine einfache Authentifizierung mit Ihrem Benutzernamen und Passwort erfordert. |
|
Token |
Abfrage von haveibeenpwned.com, wofür Sie ein kostenloses Konto und ein API-Token erstellen müssen. |
Eine API, die ein eindeutiges Token zur Nutzung des API-Dienstes erfordert. Dieses Token muss üblicherweise im Header Ihrer Anfrage angegeben werden. |
|
Delegation |
Die Verwendung der Microsoft Graph API erfordert OAuth2-Authentifizierung. |
Eine API, die in Verbindung mit einem Authentifizierungsdienst arbeitet, der Ihnen temporäre Token zur Nutzung der API bereitstellt. |
Dies sind nur einige Beispiele für die verschiedenen Authentifizierungsmechanismen, die ein Dienst verwenden kann. Je nach Produkt und Unternehmen kann ein Standard wie die oben genannten gewählt oder ein eigener Mechanismus verwendet werden.
Der Hauptzweck dieser Authentifizierungsmechanismen besteht darin, sicherzustellen, dass Sie über die korrekten Zugriffsrechte für den Dienst verfügen und dass Sie die vorgeschriebenen Nutzungsgrenzen für den Dienst nicht überschreiten.
Wenn Sie an einer detaillierteren Betrachtung der OAuth2-Implementierung von Microsoft interessiert sind, dann schauen Sie sich diese dreiteilige Serie an, die ich geschrieben habe und die diesen speziellen Authentifizierungsmechanismus näher erläutert: Teil 1, Teil 2, Und Teil 3.
Versionen
Zukünftig werde ich einen fiktiven Dienst namens nutzen. Joshs Bedrohungsanalysedienst Die URL für diesen Dienst lautet: https://joshsthreatintel.example.
Sie können eine solche Website besuchen und mit ihr interagieren, wie Sie es normalerweise mit jeder anderen Website tun würden, aber im Hintergrund befindet sich eine API, die es Ihnen ermöglicht, programmatisch auf Informationen zuzugreifen, um die Automatisierung voranzutreiben.
Eine gute API zeichnet sich durch eine sehr gute Dokumentation aus, die detailliert beschreibt, wie man den Dienst authentifizierungsgerecht nutzt. Ein gängiger Standard ist Stolzieren, Wir müssen aber nicht verstehen, was Swagger ist (es handelt sich um einen Standard, der eine schnellere Entwicklung von APIs und eine Standardisierung ihrer Dokumentation ermöglicht).
Bei https://joshsthreatintel.example Unsere API ist versioniert und kann durch Hinzufügen aufgerufen werden. /v1 zu unserer URL. Wenn Sie auf diesen Ordner auf unserer Website zugreifen, kann er leer sein, Sie erhalten möglicherweise eine Benachrichtigung, dass Sie nicht authentifiziert sind, oder es kann sich um eine Seite mit der API-Dokumentation handeln. In jedem Fall erreichen Sie das Stammverzeichnis unserer API über diese URL: https://joshsthreatintel.example/v1/.
Jede API, auf die Sie stoßen werden, kann in einer oder mehreren Versionen vorliegen. Beispielsweise gibt es havibeenpwned.com in drei Versionen:
Methoden
REST-basierte APIs sind für die Interaktion mit spezifischen, im Quellcode definierten Methoden vorgesehen. Diese Methoden reagieren je nach verwendetem Typ und den an die API gesendeten Daten unterschiedlich. Die typischen Methoden, die bei der Interaktion mit einer API verwendet werden, sind in der folgenden Tabelle aufgeführt:
|
Verfahren |
Begriffsbeschreibung |
Beschreibung |
|
ERHALTEN |
Abrufen oder Lesen |
GET-Methoden werden verwendet, um Informationen von einer API abzurufen. |
|
POST |
Erstellen, Hinzufügen oder Aufrufen |
POST-Methoden werden verwendet, um Daten zu erstellen oder hinzuzufügen oder um eine Aktion auszulösen. |
|
SETZEN |
Patch oder Update |
PUT-Methoden werden verwendet, um Daten zu aktualisieren oder sie auf irgendeine Weise zu verändern. |
|
LÖSCHEN |
Zerstören oder Entfernen |
DELETE-Methoden werden verwendet, um Daten zu entfernen oder eine Aktion zu stoppen. |
Die gängigsten Methoden sind GET und POST. Je nach API-Typ (REST oder SOAP) und Dienst müssen Sie möglicherweise zusätzliche Informationen in den Headern Ihrer API-Anfrage angeben.
Typischerweise sendet man bei einer GET-Anfrage eine HTTP-Anfrage an einen Endpunkt (Pfad in einer URL), um bestimmte Informationen von der API abzurufen. Stellen Sie sich beispielsweise vor, unser fiktiver Bedrohungsanalysedienst hätte einen Endpunkt namens IP-Adresse und erfordert, dass Sie diesem Endpunkt eine IP-Adresse zuweisen. Dieser Endpunkt könnte beispielsweise so aussehen: /ip/123.123.123.123, die wir an unsere Stamm-URL anhängen: https://joshsthreatintel.example/v1/ip/123.123.123.123.
Im Rahmen unserer Anfrage geben wir in unserem Aufruf an diesen Endpunkt an, dass wir eine ERHALTEN Wir haben eine Anfrage gestellt und möchten Informationen über die IP-Adresse 123.123.123.123 erhalten.
Hier sind zwei Beispiele dafür in Python und PowerShell Core:
- Python:
- Importanfragen
- response = requests.get('https://joshsthreatintel.example/v1/ip/123.123.123.123')
- PowerShell:
- $response = Invoke-RestMethod -Uri '‘https://joshsthreatintel.example/v1/ip/123.123.123.123’' -Methode GET
Möglicherweise steht ein anderer Endpunkt zur Verfügung, der Ihnen Folgendes ermöglicht: POST eine spezifische URL zu unserem fiktiven Dienst (Joshs Bedrohungsanalysedienst) damit es auf schädliche Aktivitäten überprüft werden kann. Dieser Endpunkt wird genannt URL und würde an unsere Stamm-URL angehängt werden: https://joshsthreatintel.example/v1/url.
Zusätzlich zur normalen HTTP-Anfrage müssen wir beim Senden einer Anfrage an diesen simulierten Dienst zum Scannen einer URL folgende Angaben machen: Körper unserer Anfrage die URL, die wir wollen Joshs Bedrohungsanalysedienst zum Scannen. Ein Beispiel dafür in Python ist:
import requests body = { 'url': 'http://some.malicious.website.com' } response = requests.post('https://joshsthreatintel.example/v1/url', data=body}
Sie werden feststellen, dass das obige Beispiel üblich und von den meisten APIs bevorzugt ist, aber dieser Endpunkt könnte Ihnen auch Folgendes ermöglichen: ERHALTEN eine URL unter Verwendung von Abfrageparametern.
Ein Abfrageparameter ist im Grunde ein Mittel, um Informationen von einer API zu filtern oder auszuwählen. Abfrageparameter werden häufig verwendet, wenn ein Dienst dem Benutzer ermöglicht, die von einem API-Aufruf zurückgegebenen Ergebnisse zu beeinflussen. Sie können aber auch verwendet werden, um eine Aktion auszulösen, beispielsweise um eine URL zu scannen, anstatt Attribute im Body einer HTTP-Anfrage anzugeben.
Abfrageparameter werden typischerweise aneinandergereiht, was (meiner Meinung nach) die Lesbarkeit beeinträchtigt. Hier ist ein Beispiel, das Ihnen bei der Verwendung von Abfrageparametern mit APIs begegnen kann:
https://joshsthreatintel.example/v1/url?url=some.malicious.website.com {Website-Pfad zur API}/{Endpunkt}?{param=Wert}
Wie Sie dem obigen Beispiel entnehmen können, haben wir den Stammpfad unserer API und dann den Endpunkt; der ist der URL in diesem Fall. Nach dem URL Am Endpunkt können wir unseren Abfrageparameter sehen. Unser Abfrageparameter beginnt mit einem ? Anschließend folgen der Parametername und der Wert, den wir für diesen Parameter verwenden.
Ein API-Endpunkt ermöglicht die Angabe mehrerer Abfrageparameter. Hier ist beispielsweise die URL-Syntax zum Abrufen von Informationen von der REST-API von RIPE (Réseaux IP Européens) für eine bestimmte IP-Adresse:
https://rest.db.ripe.net/search?source=ripe&query-string={querystring} {Website-Pfad zur API}/{Endpunkt}?{param=value}&{param=value}
Möglicherweise ist Ihnen die Hinzufügung eines/einer aufgefallen. &, Dies deutet darauf hin, dass ein weiterer Abfrageparameter vorhanden ist. Dieser enthält ebenfalls einen Parameternamen und den Wert, den wir für diesen Parameter verwenden. Eine API kann es ermöglichen, mehrere dieser Parameter aneinanderzureihen. In der API-Dokumentation finden Sie Informationen darüber, was für einen bestimmten Endpunkt zulässig ist.
Sie werden feststellen, dass APIs in der Praxis Abfrageparameter verwenden oder verlangen, dass Sie ein Schlüssel-Wert-Paar an den Anfragetext übermitteln.
Überschriften
Bei der Verwendung von APIs müssen Sie möglicherweise zusätzliche Informationen hinzufügen. ERHALTEN oder POST oder eine andere Methode zur Überschriften einer HTTP-Anfrage. Dies kann ein Authentifizierungstoken sein, das den Inhaltstyp angibt oder andere Informationen bereitstellt.
Vereinfacht ausgedrückt, ein Überschrift Der Wert ist ein Metadatenwert, der zur Herstellung einer Verbindung mit einer API verwendet wird. Diese Metadaten werden von der API zur Authentifizierung oder zur Festlegung der Umgebung für die auszuführende Aktion/Anfrage verwendet.
Es ist sehr üblich, dass APIs, die eine Authentifizierung erfordern, die Angabe eines Tokens in den HTTP-Anfrageheadern verlangen. Dieses Token kann ein Langzeittoken sein oder, im Falle eines delegierungsbasierten Authentifizierungsverfahrens (z. B. OAuth2), ein temporäres Token, das nach einer bestimmten Zeit erneuert werden muss. In beiden Fällen ist die Bereitstellung dieser Authentifizierungsmethode für APIs gängig.
Möglicherweise müssen Sie auch Folgendes angeben: Akzeptieren oder Inhaltstyp Überschriften zusammen mit einem Genehmigung Header. Vereinfacht ausgedrückt besteht ein Header typischerweise aus einem Schlüssel-Wert-Paar. Hier ist ein Beispiel in Python, wie diese beiden Header aussehen könnten:
custom_headers = { 'Accept': 'application/json', 'Authorization': 'Bearer {SOME_AUTHENTICATION_TOKEN}' }
Diese Header werden dann zusammen mit unserer HTTP-Anfrage an den Server gesendet. Ob Header bei der Verwendung einer API erforderlich sind, hängt von der jeweiligen API-Anfrage ab. Falls eine API sie benötigt, sind sie in der Regel für alle in Ihren HTTP-Anfragen verwendeten Methoden erforderlich.
Ich hoffe, dies hilft Ihnen, die Grundlagen von REST-APIs zu verstehen. Im nächsten Beitrag werde ich SOAP-APIs (Simple Object Access Protocol) genauer erläutern, die deutlich komplexer als REST-APIs sind.
Demo anfordern
Vereinbaren Sie eine Live-Demonstration von Swimlane Turbine mit unseren Experten! Erfahren Sie, wie unsere KI-gestützte Sicherheitsautomatisierungsplattform Ihnen helfen kann, die komplexesten Probleme in Ihrer gesamten Sicherheitsorganisation zu lösen.

