Transformieren Sie Ihr SOC mit einem SIEM der nächsten Generation
Transformieren Sie Ihr SOC mit einem SIEM der nächsten Generation
REST steht für REpresentational State Transfer und ist ein Architekturstil für die Entwicklung von APIs, die über das HTTP-Protokoll kommunizieren.
Hinter den Kulissen müssen APIs im Rahmen ihrer Operationen häufig Daten bearbeiten. Meist werden diese Datenoperationen – abgekürzt CRUD – auf Backend-Datenbanken angewendet. CRUD steht für Create (Erstellen), Read (Lesen), Update (Aktualisieren) und Delete (Löschen), also die vier grundlegenden Operationen.
Da durch REST-API-Aufrufe CRUD-Operationen ausgeführt werden, müssen API-Entwickler und Data Engineers die Beziehung zwischen den beiden kennen. Obwohl CRUD und REST unterschiedlichen Zwecken dienen, sollten sie sich bezüglich ihres Verhaltens nicht gegenseitig beeinträchtigen.
In diesem Artikel erläutern wir, was CRUD und REST sind, welche Gemeinsamkeiten und Unterschiede sie haben und wie sich ihr Verhalten am besten überwachen lässt.
Was ist CRUD?
CRUD-Operationen werden für herkömmliche relationale Datenbankverwaltungssysteme (z. B. PostgreSQL oder SQL Server) und die neueren NoSQL-Datenbanken (z. B. MongoDB oder DynamoDB) genutzt. Obwohl auch dateiorientierte Operationen Daten bearbeiten, bezieht sich CRUD im Allgemeinen auf datensatzorientierte Operationen in Computerdatenbanken.
In relationalen Datenbankverwaltungssystemen (RDBMS) werden einzelne Tabellenzeilen einer Datenbank als Datensatz bezeichnet, während Spalten Attribute oder Felder genannt werden. Schauen wir uns nun die vier CRUD-Operationen nacheinander an.
Create (Erstellen)
Die Create-Operation erstellt einen neuen Datenbankeintrag. Bei SQL wird diese Operation mit INSERT ausgeführt.
Lesen
Die Read-Operation ruft basierend auf Suchkriterien Datensätze (je nach Datenbanktyp auch Dokumente bzw. Elemente) aus einer Datenbanktabelle (oder Kollektion) ab. Bei SQL wird diese Operation mit SELECT ausgeführt. Read-Operationen können je nach Abfrage auch eine Teilmenge von Datensätzen und Feldern zurückgeben.
Update (Aktualisieren)
Die Update-Operation, die bei SQL ebenfalls UPDATE heißt, ändert vorhandene Datensätze in einer Datenbank. Ebenso wie die Read-Operation kann sich die Update-Operation auf alle oder nur einen Teil von Datensätzen bzw. Feldern beziehen.
Delete (Löschen)
Die Delete-Operation, die bei SQL ebenfalls DELETE heißt, entfernt einen oder mehrere Datensätze aus der Datenbank.
In NoSQL-Datenbanken können die Ausdrücke, die den CRUD-Operationen entsprechen, je nach Plattform, Datenstruktur und Sprache unterschiedlich sein. In MongoDB gilt beispielsweise:
- Eine Create-Operation verwendet
db.collection.insertOne()oderdb.collection.insertMany(). - Eine Read-Operation verwendet
db.collection.find()oderdb.collection.findOne(). - Ein Aktualisierungsvorgang verwendet
db.collection.updateOne(),db.collection.updateMany(), oderdb.collection.replaceOne(). - Ein Löschvorgang verwendet
db.collection.deleteOne()oderdb.collection.deleteMany().
Meist führt der API-Anwendungscode CRUD-Operationen aus, indem er gespeicherte Prozeduren, Funktionen oder Trigger im RDBMS aufruft. In einigen Fällen übergibt der API-Code auch dynamisch generierte SQL-Befehle an das Datenbank-Modul.
In NoSQL-Datenbanken sendet der API-Anwendungscode die Befehle über den Datenbanktreiber. Beispielsweise kann eine Java-Anwendung die HBase-Treiberbibliothek aufrufen, um CRUD-Befehle an die Datenbank zu schicken. Hinter den Kulissen übersetzt der Treiber die Java-Befehle und wendet sie auf die Datenbank an.
Ein Praxisbeispiel für CRUD
Schauen wir uns ein Beispiel für CRUD in der Praxis an. Wenn ein Benutzer eine Reise über eine Online-Reiseservice-App bucht, erstellt die Anwendung einen Datensatz für die Reservierung, liest Informationen über verfügbare Hotels und Zimmer und aktualisiert die Liste der verfügbaren Zimmer, wenn eine Reservierung bestätigt wird, oder sie löscht den gesamten Reservierungsdatensatz, wenn der Benutzer die Anfrage abbricht. Ähnliche Operationen laufen in jeder transaktionsverarbeitenden Anwendung ab.
Was ist REST?
REST ist ein Architekturstil für APIs, der häufig in verteilten Anwendungen eingesetzt wird. REST-APIs (oder RESTful-APIs) sind Anwendungen, die den Prinzipien der REST-Architektur entsprechen und Client-Anwendungen sowie anderen APIs ermöglichen, über ihre API-Endpunkte mit ihnen zu interagieren. Anwendungen, die auf RESTful-APIs zugreifen, senden ihre Anfragen in der Regel über HTTP-Methoden. Die sechs Grundprinzipien von REST lauten:
- Einheitliche Schnittstelle: Die einheitliche Schnittstelle ermöglicht es jedem API-Client, stets auf die gleiche standardisierte Weise mit dem Server zu kommunizieren, unabhängig von der Programmiersprache oder Implementierung des Clients oder Servers.
- Client-Server: Das Client-Server-Modell sieht getrennte Rollen für den Client und den API-Server vor. Der Server ist für Backend-Funktionen wie Datenspeicherung, Validierung und Authentifizierung verantwortlich. Der Client übernimmt die Benutzeroberfläche, die Erstellung von Abfragen usw.
- Zustandslosigkeit: Um zustandslos zu sein, muss jede Client-Anfrage an die API alle Informationen enthalten, die der Server zur Ausführung der Aufgabe benötigt. Der Server speichert keine Informationen über den Sitzungszustand des Clients oder Servers. Für die API ist jede Client-Anfrage neu und von der vorherigen Anfrage getrennt.
- Caching: Das Caching-Prinzip schreibt vor, dass die Antwort von der API bestimmt, ob der Client die Antwort der API zwischenspeichern darf. Die API markiert die Antwort als zwischenspeicherbar oder nicht zwischenspeicherbar.
- Mehrschichtige Systeme: Die Schichtung bezieht sich auf die Einbeziehung optionaler Komponenten, die Funktionalität bereitstellen, z. B. Lastenausgleich, Validierung usw. Diese Schichten müssen für den Client sichtbar sein. Die Komponenten in den jeweiligen Schichten dürfen nichts anderes sehen können als die Schicht, mit der sie arbeiten.
- Code on Demand (optional): Mit Code on Demand können Clients Code vom API-Server herunterladen und ausführen.
REST-APIs sind in modernen Anwendungen weit verbreitet. Sie werden zum Beispiel in großem Umfang in Wetter-APIs, Video-Streaming-Diensten, sozialen Medien oder Ridesharing-Anwendungen genutzt.
HTTP-Methoden
Clients verpacken RESTful-API-Anfragen mit HTTP-Methoden:
- GET: Mit der GET-Anfrage wird die API aufgefordert, eine Ressource (z. B. einen Datenbankeintrag oder den Inhalt einer Datei) abzurufen und an den Client zu schicken.
- POST: Mit der POST-Methode schickt der Client Daten an den API-Server, der mit den bereitgestellten Daten eine Ressource erstellt.
- PUT: Wenn der Client eine PUT-Anfrage an die API sendet, verweist er damit auf den URI einer bestimmten Ressource und stellt Daten im Anfragetext bereit. Nachdem der API-Server die PUT-Anfrage erhalten hat, prüft er, ob die Ressource bereits existiert. Wenn die Ressource bereits vorhanden ist, aktualisiert die API die Ressource mit den in der PUT-Anfrage enthaltenen Daten. Wenn die Ressource noch nicht existiert, erstellt die API die Ressource mit den bereitgestellten Daten.
- PATCH: Der Client sendet eine PATCH-Anfrage an die API, um eine vorhandene Ressource teilweise zu aktualisieren.
- DELETE: Der Client sendet eine DELETE-Anfrage an die API, um eine vorhandene Ressource zu löschen.
Beispiele für REST-API-Anfragen
Mehrere Client-Tools können Anfragen an API-Endgeräte senden. Ein gängiges Befehlszeilentool ist cURL. Nachfolgend finden Sie einige Beispiele dafür, wie cURL HTTP-Anfragen an ein fiktiveS REST-API-Endgerät gesendet werden können.
Der Endpunkt für unsere fiktive REST-API ist http://www.foobar.com. Wir schicken verschiedene HTTP-Anfragen an diese API, um Kundendatensätze zu erstellen, zu lesen, zu aktualisieren oder zu löschen.
Im folgenden Code-Ausschnitt fordert der cURL-Client Informationen über einen Kunden mit der Kunden-ID 19 an. Dies ist eine GET-Anfrage.
curl -v http://www.foobar.com/find_customert_record?id=19
Als Nächstes fügen wir einen Kundendatensatz mit einer POST-Anfrage hinzu. Im folgenden Beispielbefehl fügen wir die Daten in den Text der HTTP-Anfrage ein.
curl -X POST -d 'id=10&customer_name=joe_bloggs' http://www.foobar.com/add_customer_record
In diesem Beispiel verweisen wir auf eine Datei, die die Daten zur Erstellung des Datensatzes enthält.
curl -X POST -d @customer_record.json -H "Content-Type: application/json" http://www.foobar.com/add_customer_record
Mit der folgenden PUT-Anfrage aktualisieren wir den Kundendatensatz.
curl -d 'id=10&client_name=jane_bloggs' -X PUT http://www.foobar.com/update_customer_record
Und im letzten Schritt entfernen wir den Kunden mit der Kunden-ID 22:
curl -X DELETE http://www.foobar.com/delete_customer_record?id=22
REST und CRUD im Vergleich: Gemeinsamkeiten und Unterschiede
Wie Sie sehen können, sind sich RESTful-API-Operationen und Datenbank-CRUD-Operationen trotz ihrer Unterschiede häufig sehr ähnlich:
Im oben erwähnten Beispiel einer Online-Reiseservice-App initiiert eine Webanwendung die CRUD-Operationen Create, Read, Update und Delete. Die Frontend-Website führt REST-API-Aufrufe aus, anschließend übersetzt der API-Code diese Anfragen in Datenbank-CRUD-Befehle und leitet sie an den Datenbanktreiber weiter. Sobald der Datenbanktreiber eine Antwort sendet (erfolgreich oder nicht erfolgreich), übersetzt der API-Code diese in eine HTTP-Antwort und schickt sie an den Client.
Eine Antwort an die anfragende Partei wird sowohl bei REST als auch bei CRUD gesendet. Für REST-API-Clients erfolgt dies in Form einer Standard-HTTP-Antwort (z. B. 200 OK, 404 Ressource nicht gefunden, 500 Interner Serverfehler). Bei CRUD hat jedes Datenbank-Modul eigene Antwortcodes für Erfolg, Fehler oder Warnung.
Sehen wir uns nun die Unterschiede an.
Wir haben bereits erläutert, wie REST und CRUD in verschiedenen Teilen eines Anwendungspakets funktionieren. REST-APIs erhalten ihre Nutzdaten über das HTTP-Protokoll, während CRUD das jeweilige Protokoll der Datenbank verwendet. Auch die Netzwerkpakete haben eine unterschiedliche Struktur. In der Regel akzeptieren REST-APIs Client-Anfragen über Port 80 oder 443. Dies lässt sich jedoch individuell konfigurieren. Bei CRUD-Operationen wird der Port über die Konfiguration des Datenbankservers festgelegt. Der Standardport für SQL Server ist beispielsweise Port 1433.
CRUD-Funktionen können auch im Code der REST-API existieren. REST-APIs sind jedoch nicht nur auf den Aufruf von CRUD-Operationen beschränkt, sondern können auch andere Funktionen, Subroutinen und sogar andere APIs ausführen.
Es gibt zwar zahlreiche öffentliche und private REST-APIs, doch nur eine begrenzte Anzahl von Datenbank-Modulen (z. B. RDBMS, NoSQL und In-Memory-Datenbanken) ist heute verfügbar.
Entdecken Sie die weltweit führende KI-native Plattform für SIEM und Protokollmanagement der nächsten Generation
Stärken Sie Ihre Cybersicherheit mit der CrowdStrike Falcon®-Plattform, der führenden KI-nativen Plattform für SIEM und Protokollmanagement. Sie erleben Sicherheitsprotokollierung im Petabyte-Bereich und haben die Wahl zwischen cloudnativer oder selbst gehosteter Bereitstellung. Protokollieren Sie Ihre Daten mit einer leistungsstarken, indexfreien Architektur ohne Engpässe – so sind Bedrohungssuchen mit einer Datenerfassung von über 1 PB pro Tag möglich. Dank Echtzeitsuchfunktionen sind Sie Angreifern einen Schritt voraus und erzielen bei komplexen Abfragen Latenzen von unter einer Sekunde. Sie profitieren von umfassender Transparenz, können Daten konsolidieren, um Silos aufzubrechen, und ermöglichen Ihren Sicherheits-, IT- und DevOps-Teams, Bedrohungen zu erkennen, die Leistung zu überwachen und nahtlose Compliance zu gewährleisten – bei drei Milliarden Ereignissen in weniger als einer Sekunde.