HBase
 sql >> Datenbank >  >> NoSQL >> HBase

Apache Hadoop Ozone Security – Authentifizierung

Apache Ozone ist ein verteilter Objektspeicher, der auf dem Hadoop Distributed Data Store-Dienst aufbaut. Es kann Milliarden von kleinen und großen Dateien verwalten, die von anderen verteilten Dateisystemen nur schwer zu handhaben sind. Ozone unterstützt umfangreiche APIs wie Amazon S3, Kubernetes CSI sowie native Hadoop-Dateisystem-APIs. Dies macht Ozone für verschiedene Arten von Big-Data-Workloads wie Data Warehouse auf Apache Hive, Datenaufnahme mit Apache Nifi, Streaming mit Apache Spark/Flink und maschinelles Lernen mit Tensorflow leicht nutzbar.

Angesichts des wachsenden Datenbestands und der vielfältigen Workloads, die eine Zusammenarbeit zwischen verschiedenen Gruppen erfordern, ist die Datensicherheit von größter Bedeutung. Ozone-Sicherheit wurde seit der Veröffentlichung von Apache Hadoop Ozone 0.4.0 mit Beiträgen aus den Communities hinzugefügt. Es wurde auch als technische Vorschau in Clouderas CDP Data Center 7.0-Version aufgenommen. Sicherheit kann in vier Bausteine ​​eingeteilt werden:Authentifizierung, Autorisierung, Prüfung und Verschlüsselung. Wir werden den Authentifizierungsteil in diesem Blog zusammen mit den restlichen in den Folgebeiträgen behandeln.

Authentifizierung ist der Prozess der Erkennung der Identität eines Benutzers für Ozone-Komponenten. Ozone ist mit der Apache Hadoop-Sicherheitsarchitektur kompatibel und unterstützt starke Authentifizierung mit Kerberos sowie Sicherheitstoken.

Kerberos-basierte Authentifizierung

Wie in Abbildung 1 unten gezeigt, werden Dienstkomponenten, einschließlich OM (Ozone Manager), SCM (Storage Container Manager) und Datandoes, alle über Kerberos miteinander authentifiziert. Jeder Dienst muss mit einem gültigen Kerberos-Prinzipalnamen und einer Keytab-Datei konfiguriert werden, die vom Dienst verwendet werden, um sich beim Start des Dienstes im sicheren Modus anzumelden. Weitere Details zur OM/SCM/Datanode-Kerberos-Konfiguration finden Sie in den Apache Hadoop Ozone-Dokumenten. Dementsprechend müssen Ozone-Clients entweder ein gültiges Kerberos-Ticket oder Sicherheitstoken bereitstellen, um auf Ozone-Dienste wie Ozone Manager für Metadaten und Datanode für Lese-/Schreibblöcke zugreifen zu können.

Sicherheitstoken

Wie Hadoop-Delegierungstoken hat das Ozone-Sicherheitstoken eine Token-ID zusammen mit einer signierten Signatur des Ausstellers. Ozone Manager gibt Delegierungstoken und Blocktoken für Benutzer oder Client-Anwendungen aus, die mit Kerberos authentifiziert wurden. Die Signatur des Tokens kann von Token-Validierern validiert werden, um die Identität des Ausstellers zu verifizieren. Auf diese Weise kann ein gültiger Token-Inhaber den Token verwenden, um Operationen gegen die Cluster-Dienste auszuführen, als ob er Kerberos-Tickets des Ausstellers hätte.

Delegierungstoken ausgestellt von Ozone Manager ermöglicht Token-Inhabern den Zugriff auf Metadatendienste, die von Ozone Manager bereitgestellt werden, wie z. B. das Erstellen eines Volumes oder das Auflisten der Objekte in einem Bucket. Nach Erhalt einer Anfrage von einem Client mit einem Delegierungstoken validiert der Ozone-Manager das Delegierungstoken, indem er die Signatur des Unterzeichners über seinen öffentlichen Schlüssel überprüft. Delegierungstokenoperationen wie Abrufen, Erneuern und Abbrechen können nur über eine Kerberos-authentifizierte Verbindung ausgeführt werden.

Token blockieren ähneln Delegations-Tokens in dem Sinne, dass sie vom Ozone-Manager ausgestellt/signiert werden. Sie werden vom Ozone-Manager ausgegeben, wenn eine Client-Anfrage Blocklesen oder -schreiben auf Datanode beinhaltet. Im Gegensatz zu Delegierungstoken, die mit expliziten Get/Renew/Cancel-APIs angefordert werden, werden sie zusammen mit den Schlüssel-/Block-Standortinformationen transparent an Clients übergeben. Block-Token werden von Datanodes validiert, wenn sie die Lese-/Schreibanfrage von Clients erhalten, die den öffentlichen Schlüssel des Ozone-Managers des Sängers verwenden. Block-Token kann nicht explizit vom Client erneuert werden. Nach Ablauf muss der Client die Schlüssel-/Blockspeicherorte erneut abrufen, um neue Blocktoken zu erhalten.

S3-Geheimnis

Ozone unterstützt das Amazon S3-Protokoll über das Ozone S3 Gateway. Im sicheren Modus gibt Ozone Manager ein s3-Geheimnis für Kerberos-authentifizierte Benutzer oder Client-Anwendungen aus, die über S3-APIs auf Ozone zugreifen. Wir werden das in späteren Blogs zu Ozone S3 Gateway behandeln.

Wie funktioniert das Ozone Security Token?

Wie in Abbildung 2 gezeigt, verlassen sich das herkömmliche Apache Hadoop-Delegierungstoken und das Blocktoken auf gemeinsame Geheimnisse zwischen dem Tokenaussteller und dem Tokenvalidierer, um das Token zu signieren und zu validieren. Wenn der Aussteller und der Prüfer unterschiedlich sind, z. B. im Fall von Block-Token, muss der gemeinsam genutzte Hauptschlüssel daher regelmäßig über die Leitung übertragen werden, um zwischen dem Aussteller des Tokens (Namenode) und dem Prüfer des Tokens (Datenknoten) zu synchronisieren.

Stattdessen verfolgt Ozone Security Token einen zertifikatbasierten Ansatz. Wie in Abbildung 3 gezeigt, entkoppelt es die Token-Aussteller und Token-Validatoren vollständig mit einer zertifikatbasierten Signatur. Auf diese Weise sind Token sicherer, da gemeinsame Geheimnisse niemals über das Kabel transportiert werden.

Im sicheren Modus bootet SCM als CA (Certificate Authority) und erstellt ein selbstsigniertes CA-Zertifikat. Datanode und Ozone Manager müssen sich bei SCM CA über einen CSR (Certificate Signing Request) registrieren. SCM validiert die Identität von Datanode und Ozone Manager über Kerberos und signiert das Zertifikat der Komponente. Die signierten Zertifikate werden von Ozone Manager und Datanode verwendet, um ihre Identität nachzuweisen. Dies ist besonders nützlich für die Signierung und Validierung von Delegierungstoken/Blocktoken.

Im Fall von Block-Token signiert Ozone Manager (Token-Aussteller) das Token mit seinem privaten Schlüssel und Datanodes (Token-Validator) verwendet das Zertifikat von Ozone Manager, um Block-Token zu validieren, da sowohl Ozone Manager als auch Datanode SCM-CA-signierten Zertifikaten vertrauen.

Im Falle eines Delegierungstokens, wenn Ozone Manager (sowohl Tokenaussteller als auch -validator) im HA-Modus (High Availability) ausgeführt wird. Es laufen mehrere Ozone Manager-Instanzen gleichzeitig. Ein Delegierungstoken, das von Ozone Manager-Instanz 1 ausgestellt und signiert wurde, kann von Ozone Manager-Instanz 2 validiert werden, wenn sich der führende Ozone Manager ändert, da beide Instanzen SCM-CA-signierten Zertifikaten vertrauen. Weitere Einzelheiten zum Designdokument von Ozone HA finden Sie hier.

Schlussfolgerung

Die Authentifizierung ist einer der wichtigsten Bausteine ​​der Sicherheit von Apache Hadoop Ozone. Sie sollten jetzt besser verstehen, welche Authentifizierungsmechanismen von Apache Hadoop Ozone unterstützt werden und wie sie funktionieren. Dies wird helfen, andere Sicherheitssäulen von Ozone wie Autorisierung und Auditierung zu verstehen.

Bleiben Sie dran für Folgeartikel zu Ozone Security Authorization, Audit, Encryption und GDPR. Wenn Sie daran interessiert sind, tief zu tauchen, finden Sie weitere technische Details im Ozone-Sicherheitsdesigndokument.

Referenz

[1] Apache Hadoop Ozone-Architektur

[2] Benchmarking Ozone:Clouderas Speicher der nächsten Generation für CDP

[3] Was ist Kerberos? · Hadoop und Kerberos:Der Wahnsinn hinter dem Tor

[4] Apache Hadoop Ozone-Dokument

[5] Hinzufügen von Sicherheit zu Apache Hadoop

[6] Apache Hadoop Ozone HA Designdokument auf HDDS-505.

[7] Apache Hadoop Ozone Security Design Document auf HDDS-4.