Unser Newsletter rund um technische Themen,
das Unternehmen und eine Karriere bei uns.

5 Minuten Lesezeit (944 Worte)

Blockchain Table & Immutable Table

Um sicherzustellen, dass Tabellen und Datenbanken vor unautorisierten Änderungen durch Hacker oder unbefugte Personen geschützt sind, führte Oracle im August 2021 Blockchain und Immutable-Tabellen ein. Diese besonderen Tabellen zeichnen sich durch ihre Unveränderlichkeit aus, wobei die Zeilen durch kryptografische Verfahren miteinander verbunden und zeitlich geschützt werden.

Eine Immutable-Tabelle definiert eine „Insert-Only“-Tabelle, in der neue Datensätze hinzugefügt werden können, während bereits vorhandene Datensätze weder bearbeitet noch für einen festgelegten Zeitraum gelöscht werden können. Dies gewährleistet, dass die Tabelle unveränderlich bleibt und vor jeglichen Änderungen geschützt ist. Eine Immutable-Tabelle ist in der Lage, sowohl relationale Daten als auch JSON-Dokumente zu speichern.

Eine Blockchain-Tabelle ist eine weiterentwickelte Variante der Immutable-Tabelle. Sie teilt die gleichen grundlegenden Funktionen und verfügt zusätzlich über eine erweiterte Eigenschaft: Jede Zeile in der Kette, mit Ausnahme der ersten, wird durch einen kryptografischen Hash mit den vorherigen Zeilen verbunden. Die Hash-Werte werden automatisch berechnet, basierend auf dem Hash-Wert der vorherigen Zeile und den Daten der aktuellen Zeile. Diese zusätzliche Verkettung durch kryptografische Hashes stärkt die Sicherheit der Tabelle und schützt sie vor Manipulation.

Die besondere Funktionalität der Blockchain-Tabellen liegt in den versteckten Spalten, den sogenannten Hidden Columns. Diese Spalten sind systemrelevante Elemente, die speziell dazu dienen, die Blockchain-Funktionalität zu gewährleisten und das gesamte Konstrukt zu verwalten. Sie spielen eine entscheidende Rolle bei der Überprüfung der Manipulationssicherheit der Zeilen. Die Hidden Columns können nur durch explizite Einbeziehung ihrer Spaltennamen durch eine Abfrage angezeigt werden.

Dadurch entsteht eine Kette an Blöcken, die mit unterschiedlichen Daten gefüllt und miteinander verbunden sind. 

Um die Integrität der Tabelle über einen bestimmten Zeitraum zu gewährleisten, werden bei ihrer Erstellung spezifische Zeitfenster angegeben. Dies erfolgt durch präzise Anweisungen, die wie folgt aussehen: 

Beim Erstellen einer Blockchain- und Immutable-Tabelle müssen gewisse Parameter angegeben werden, die für die zeitliche Aufbewahrung zuständig sind und sich auf das Löschen der Tabelle beziehen. Bei einer Blockchain-Tabelle kommt noch ein weiterer Parameter dazu, der den Hashing-Algorithmus angibt und welche Version der Tabelle verwendet werden soll.

Die Anweisung NO DROP UNTIL … DAYS IDLE gibt an, wie viele Tage die Tabelle inaktiv sein muss, bevor sie gelöscht werden kann. Alternativ besagt die Anweisung NO DROP, dass die Tabelle überhaupt nicht gelöscht werden kann, unabhängig von ihrer Inaktivitätsdauer.

Die Anweisung NO DELETE bezieht sich auf die einzelnen Zeilen in der Tabelle und bedeutet, dass die Zeilen generell nicht gelöscht werden können. NO DELETE UNTIL … DAYS AFTER INSERT gibt hingegen an, wie viele Tage nach dem Einfügen vergangen sein müssen, um den Datensatz zu löschen. Das festgelegte Minimum für diese Angabe beträgt 16 Tage und kann ausschließlich durch einen ALTER TABLE-Befehl erhöht werden. Jeglicher Versuch, das Zeitfenster zu verringern, führt zu einem Fehler.

Da es eine Insert-Only-Tabelle ist, funktioniert die Anweisung INSERT INTO … und es ist möglich neue Datensätze in die Tabelle einzufügen. Anders sieht es bei den anderen DML (Data Manipulation Language)-Anweisungen aus. Die UPDATE-Anweisung und die normale DELETE-Anweisung funktionieren bei einer Blockchain-Tabelle nicht, da sonst ein Widerspruch gegen die Idee einer unveränderlichen Blockchain-Tabelle gegeben wäre.

Im September 2023 veröffentlichte Oracle die Version 23c, welche neue Funktionen für die Blockchain-Tabelle mit sich bringt. In dieser neuen Version ist es möglich mittels des ALTER TABLE-Statements, neue Spalten hinzuzufügen (ALTER TABLE ADD COLUMNS), Spalten zu entfernen (ALTER TABLE DROP COLUMNS), wobei diese jedoch nicht vollständig gelöscht werden, sondern lediglich zu Hidden Columns umgewandelt werden sowie Spalten umzubenennen (ALTER TABLE RENAME COLUMNS). Im Gegensatz dazu verfügen die Tabellen der älteren Version 21c nicht über diese erweiterten Funktionen.

Um Daten in der Tabelle zu pflegen, stellt Oracle spezielle Prozeduren im DBMS_BLOCKCHAIN_TABLE-Package bereit. Dieses Package bietet eine Vielzahl von Prozeduren zur Verwaltung und Sicherung von Daten innerhalb einer Blockchain-Tabelle. Eine dieser Prozeduren ist DELETE_EXPIRED_ROWS, die beim Ausführen alle abgelaufenen Einträge löscht. 

Es gibt noch weitere Prozeduren, welche die Sicherheit und Richtigkeit der Blockchain-Tabellen garantieren. Mit der VERIFY_ROWS-Prozedur wird die Vollständigkeit der Kette überprüft, während mit der SIGN_ROWS-Prozedur jede einzelne Zeile signiert wird, um zusätzliche Sicherheit zu gewährleisten. Zudem existieren noch weitere Prozeduren, die zur Verwaltung und Aufrechterhaltung von Blockchain-Tabellen verwendet werden.

Das Löschen einer aktiven Blockchain-Tabelle kann in der Regel auf verschiedene Weisen erfolgen, jedoch sind die Möglichkeiten begrenzt. Die einfachste Methode besteht darin, auf das Ablaufen des Zeitfensters von „NO DROP UNTIL … DAYS IDLE“ zu warten. Daher sollte beim Testen darauf geachtet werden, dieses Zeitfenster nicht zu hoch einstellen, um die Tabelle schnell wieder zu löschen.

Sollte die Tabelle gelöscht werden müssen, bevor das Zeitfenster abgelaufen ist oder die Option „NO DROP“ aktiviert ist, kann dies problematisch werden. Die einzige Möglichkeit, eine aktive Blockchain-Tabelle zu löschen, ist es, die gesamte Datenbank zu löschen. Diese Methode ist jedoch nicht ideal und wird nicht empfohlen, da dabei alle anderen Daten in der Datenbank ebenfalls verloren gehen. 

Fazit

Grundsätzlich bieten Blockchain-Tabellen entscheidende Sicherheitsvorteile, indem sie nicht nur Daten sicher speichern, sondern auch vor unberechtigten Veränderungen schützen. Das Fehlen der Möglichkeit zum Löschen vor Ablauf der Zeitfrist und zur nachträglichen Bearbeitung von Datensätzen trägt zur Unveränderlichkeit und Integrität der gespeicherten Daten bei. Darum ist es notwendig beim Einfügen von Daten besonders sorgfältig zu sein, da einmal eingefügte Informationen nicht mehr verändert werden können.

Es ist jedoch wichtig zu beachten, dass die Sicherheitsvorteile und die Unveränderlichkeit der Blockchain-Tabelle mit einem gewissen Leistungsaufwand verbunden sind. Aktionen mit größeren Datenmengen können die Performance beeinträchtigen, da im Hintergrund komplexe Prozeduren wie die Berechnung von Hash-Werten ablaufen. 

Seminarempfehlung

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Samstag, 21. Dezember 2024

Sicherheitscode (Captcha)

×
Informiert bleiben!

Bei Updates im Blog, informieren wir per E-Mail.