Teilen über


Ledger-Übersicht

Gilt für: SQL Server 2022 (16.x) Azure SQL-Datenbank Azure SQL Managed Instance

Das Einrichten einer Vertrauensstellung rund um die Integrität von in Datenbanksystemen gespeicherten Daten ist ein seit langem bestehendes Problem bei allen Organisationen, die Finanzdaten, Patientendaten oder andere vertrauliche Daten verwalten. Das Ledgerfeature bietet Funktionen für manipulationssichere Beweise in Ihrer Datenbank. Sie können kryptografisch gegenüber Dritten, (z. B. Prüfern oder anderen Geschäftspartnern) nachweisen, dass Ihre Daten nicht manipuliert wurden.

Ledger hilft beim Schutz von Daten vor Angreifern oder Benutzern mit umfangreichen Berechtigungen, einschließlich Datenbankadministratoren (Database Administrators, DBAs) sowie System- und Cloudadministratoren. Wie bei einem herkömmlichen Ledger werden Verlaufsdaten beibehalten. Bei der Aktualisierung einer Zeile in der Datenbank wird der vorherige Wert in einer Verlaufstabelle verwaltet und geschützt. Ledger stellt eine Chronik aller Änderungen bereit, die im Laufe der Zeit an der Datenbank vorgenommen wurden.

Ledger und die Verlaufsdaten werden transparent verwaltet und bieten so Schutz ohne Anwendungsänderungen. Verlaufsdaten werden in einer relationalen Form verwaltet, um SQL-Abfragen für Überwachung, Forensik und andere Zwecke zu unterstützen. Das Feature bietet garantierte kryptografische Datenintegrität, während Leistungsfähigkeit, Flexibilität und Funktionalität der SQL-Datenbank erhalten bleiben.

Diagramm der Ledgertabellenarchitektur

Anwendungsfälle für Ledger

Sehen wir uns einige Vorteile der Nutzung eines Ledgers an.

Optimieren von Überwachungen

Der Wert jedes Produktionssystems basiert auf der Fähigkeit, den vom System genutzten und erzeugten Daten zu vertrauen. Wenn die Daten in Ihrer Datenbank von einem böswilligen Benutzer manipuliert wurden, kann dies zu katastrophalen Ergebnissen in den Geschäftsprozessen führen, die auf diesen Daten basieren.

Die Aufrechterhaltung des Vertrauens in Ihre Daten erfordert eine Kombination aus der Aktivierung der richtigen Sicherheitskontrollen, um potenzielle Angriffe, Sicherungs- und Wiederherstellungsmethoden sowie gründliche Notfallwiederherstellungsverfahren zu reduzieren. Überwachungen durch externe Parteien stellen die Anwendung dieser Methoden sicher.

Überwachungsprozesse sind sehr zeitintensive Aktivitäten. Für die Überwachung ist eine Untersuchung der implementierten Methoden vor Ort erforderlich, wie die Überprüfung von Überwachungsprotokollen sowie die Untersuchung der Authentifizierung und der Zugriffssteuerungen. Diese manuellen Prozesse können zwar potenzielle Sicherheitslücken offen legen, aber sie können keinen belegbaren Nachweis bieten, dass die Daten nicht böswillig geändert wurden.

Ledger liefert Prüfern den kryptografischen Nachweis der Datenintegrität. Dieser Nachweis kann dazu beitragen, den Überwachungsprozess zu optimieren. Darüber hinaus bietet er Nichtabstreitbarkeit in Bezug auf die Integrität der Systemdaten.

Geschäftsprozesse mit mehreren Parteien

In einigen Systemen (z. B. Lieferkettenverwaltungssystemen) müssen mehrere Organisationen den Status von einem Geschäftsprozess miteinander teilen. Diese Systeme kämpfen mit dem Problem der gemeinsamen Nutzung und Vertrauenswürdigkeit von Daten. Viele Organisationen nutzen herkömmliche Blockchains wie Ethereum oder Hyperledger Fabric, um ihre Geschäftsprozesse mit mehreren Parteien digital zu transformieren.

Blockchain ist eine hervorragende Lösung für Netzwerke mit mehreren Parteien, bei denen das Vertrauen zwischen am Netzwerk beteiligten Parteien gering ist. Viele dieser Netzwerke sind grundsätzlich zentralisierte Lösungen, bei denen Vertrauen wichtig ist. Eine vollständig dezentralisierte Infrastruktur ist aber eine „schwergewichtige“ Lösung.

Ledger bietet eine Lösung für diese Netzwerke. Teilnehmer können die Integrität der zentral gespeicherten Daten überprüfen, und zwar ohne die Komplexität und die Leistungsbeeinträchtigungen, die der Netzwerkkonsens in einem Blockchain-Netzwerk mit sich bringt.

Kundenerfolg

Vertrauenswürdiger Off-Chain-Speicher für Blockchain

Wenn ein Blockchain-Netzwerk für einen Geschäftsprozess mit mehreren Parteien benötigt wird, stellt es eine Herausforderung dar, die Daten in der Blockchain ohne Leistungseinbußen abfragen zu können.

Typische Muster zur Lösung dieses Problems umfassen das Replizieren von Daten aus der Blockchain in einen Off-Chain-Speicher, z. B. eine Datenbank. Sobald die Daten jedoch aus der Blockchain in die Datenbank repliziert wurden, garantiert die Datenintegrität, dass ein Blockchainangebot verloren geht. Ledger bietet Datenintegrität für die Off-Chain-Speicherung von Blockchain-Netzwerken und stellt so eine vollständige Datenvertrauensstellung für das gesamte System sicher.

Funktionsweise

Alle durch eine Transaktion in einer Ledgertabelle geänderten Zeilen werden kryptografisch mit einem SHA-256-Hash versehen. Dabei wird eine Merkle-Baumdatenstruktur verwendet, die einen Stammhash generiert, der alle Zeilen in der Transaktion darstellt. Die von der Datenbank verarbeiteten Transaktionen werden über eine Merkle-Baumdatenstruktur gemeinsam mit einem SHA-256-Hash versehen. Das Ergebnis ist ein Stammhash, der einen -Block bildet. Der Block wird dann mithilfe seines Stammhashes zusammen mit dem Stammhash des vorherigen Blocks als Eingabe für die Hashfunktion mit SHA-256 gehasht. Durch diesen Hashvorgang wird eine Blockchain gebildet.

Die Stammhashs im Datenbankledger – auch als Datenbankdigests bezeichnet – enthalten die kryptografisch gehashten Transaktionen und stellen den Zustand der Datenbank dar. Sie können regelmäßig generiert und außerhalb der Datenbank in einem manipulationssicheren Speicher gespeichert werden, z. B. Azure Blob Storage, konfiguriert mit Richtlinien für Unveränderlichkeit, Azure Confidential Ledger oder lokalen WORM-Speichergeräten (Write Once Read Many). Datenbankhashes werden später zur Überprüfung der Datenbankintegrität verwendet, indem der Wert des Hashes im Digest mit den berechneten Hashes in der Datenbank verglichen wird.

Die Ledgerfunktionalität kann Tabellen auf zwei Arten hinzugefügt werden:

Sowohl aktualisierbare Ledgertabellen als auch Ledgertabellen, die nur Anfügevorgänge unterstützen, bieten Funktionen für Manipulationsbeweis und digitale Forensik.

Aktualisierbare Ledgertabellen

Aktualisierbare Ledgertabellen eignen sich ideal für Anwendungsmuster, die eine Aktualisierung von Problemen und Löschungen bei Tabellen in Ihrer Datenbank erwarten, z. B. System of Record(SOR)-Anwendungen. Vorhandene Datenmuster für Ihre Anwendung müssen nicht geändert werden, um Ledgerfunktionen zu aktivieren.

In aktualisierbaren Ledgertabellen wird der Verlauf von Änderungen an beliebigen Zeilen in Ihrer Datenbank nachverfolgt, wenn es zu Transaktionen kommt, die Updates oder Löschungen durchführen. Eine aktualisierbare Ledgertabelle ist eine Tabelle mit Systemversionsverwaltung, die einen Verweis auf eine andere Tabelle mit einem gespiegelten Schema enthält.

Die andere Tabelle wird als Verlaufstabelle bezeichnet. Das System verwendet diese Tabelle, um bei jeder Aktualisierung oder Löschung einer Zeile in der Ledgertabelle automatisch die vorherige Version der Zeile zu speichern. Die Verlaufstabelle wird bei der Erstellung einer aktualisierbaren Ledgertabelle automatisch erstellt.

Die Werte in der aktualisierbaren Ledgertabelle und der zugehörigen Verlaufstabelle stellen eine zeitliche Chronik der Werte Ihrer Datenbank bereit. Die aktualisierbare Ledgertabelle wird durch eine vom System generierte Ledgeransicht mit der Verlaufstabelle verknüpft, sodass Sie diese Chronik Ihrer Datenbank problemlos abfragen können.

Weitere Informationen zu aktualisierbaren Ledgertabellen finden Sie unter Erstellen und Verwenden aktualisierbarer Ledgertabellen.

Ledgertabellen, die nur Anfügevorgänge unterstützen

Ledgertabellen, die nur Anfügevorgänge unterstützen, eignen sich ideal für Anwendungsmuster, in denen nur Einfügungen erfolgen, z. B. Security Information & Event Management(SEIM)-Anwendungen. Ledgertabellen, die nur Anfügevorgänge unterstützen, blockieren Updates und Löschungen auf API-Ebene. Diese Blockierung bietet mehr Manipulationsschutz gegenüber privilegierten Benutzern wie Systemadministratoren und DBAs.

Da nur Einfügungen in das System zulässig sind, gibt es bei Ledgertabellen, die nur Anfügevorgänge unterstützen, keine entsprechende Verlaufstabelle, weil kein Verlauf erfasst werden muss. Wie bei aktualisierbaren Ledgertabellen liefert eine Ledgeransicht Einblicke in die Transaktion, mit der Zeilen in die Tabelle (die nur Anfügevorgänge unterstützt) eingefügt wurden, und den Benutzer, der die Einfügung ausgeführt hat.

Weitere Informationen zu Ledgertabellen, die nur Anfügevorgänge unterstützen, finden Sie unter Erstellen und Verwenden von Ledgertabellen, die nur Anfügevorgänge unterstützen.

Ledgerdatenbank

Ledgerdatenbanken bieten eine einfache Lösung für Anwendungen, bei denen die Integrität aller Daten während der gesamten Lebensdauer der Datenbank geschützt werden muss. Eine Ledgerdatenbank kann nur Ledgertabellen enthalten. Das Erstellen regulärer Tabellen (die keine Ledgertabellen sind) wird nicht unterstützt. Jede Tabelle wird standardmäßig als Aktualisierbare Ledgertabelle mit Standardeinstellungen erstellt, wodurch die Erstellung solcher Tabellen sehr einfach ist. Eine Ledgerdatenbank wird zum Zeitpunkt der Erstellung als solche konfiguriert. Nach der Erstellung kann eine Ledgerdatenbank nicht in eine reguläre Datenbank konvertiert werden. Weitere Informationen finden Sie unter Konfigurieren einer Ledgerdatenbank.

Datenbank-Digests

Der Hash des letzten Blocks im Datenbankledger wird als Datenbankhash bezeichnet. Er stellt den Status aller Ledgertabellen in der Datenbank zum Zeitpunkt der Blockgenerierung dar.

Bei der Bildung eines Blocks wird dessen zugeordneter Datenbankdigest veröffentlicht und außerhalb der Datenbank in einem manipulationssicheren Speicher gespeichert. Da Datenbankhashes den Status der Datenbank zum Zeitpunkt ihrer Generierung darstellen, ist der Schutz der Hashes vor Manipulationen von entscheidender Bedeutung. Ein Angreifer, der Änderungszugriff auf die Hashes hat, hätte folgende Möglichkeiten:

  1. Manipulation der Daten in der Datenbank
  2. Generieren der Hashes, die die Datenbank mit diesen Änderungen darstellen
  3. Ändern der Hashes, sodass sie den aktualisierten Hash der Transaktionen im Block darstellen

Ledger bietet die Möglichkeit, Hashes automatisch zu generieren und in einem unveränderlichen Speicher oder in Azure Confidential Ledger zu speichern, um Manipulationen zu verhindern. Alternativ können Benutzer Datenbankhashes manuell generieren und am Speicherort ihrer Wahl speichern. Mithilfe von Datenbankdigests kann später verifiziert werden, dass die in Ledgertabellen gespeicherten Daten nicht manipuliert wurden.

Ledgerüberprüfung

Das Ledgerfeature erlaubt keine Änderung der Inhalte von Systemsichten, Nur-Anfüge-Tabellen und Verlaufstabellen des Ledgers. Ein Angreifer oder Systemadministrator, der Kontrolle über den Computer hat, kann jedoch alle Systemüberprüfungen umgehen und die Daten direkt manipulieren. So kann beispielsweise ein Angreifer oder Systemadministrator die Datenbankdateien im Speicher bearbeiten. Ledger kann solche Angriffe nicht verhindern, garantiert aber, dass Manipulationen bei einer Überprüfung der Ledgerdaten erkannt werden.

Der Ledgerüberprüfungsprozess verwendet einen oder mehrere zuvor generierte Datenbankhashes als Eingabe und berechnet die im Datenbankledger gespeicherten Hashes basierend auf dem aktuellen Status der Ledgertabellen neu. Wenn die berechneten Hashes nicht mit den Eingabehashes übereinstimmen, schlägt die Überprüfung fehl, was auf eine Manipulation der Daten hinweist. Ledger meldet dann alle erkannten Inkonsistenzen.

Weitere Informationen