Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Transparente Verschlüsselung in HDFS auf Amazon EMR
Die transparente Verschlüsselung wird durch die Verwendung von HDFS-Verschlüsselungszonen implementiert, wobei es sich dabei um HDFS-Pfade handelt, die von Ihnen definiert werden. Jede Verschlüsselungszone verfügt über ihren eigenen Schlüssel, der unter Verwendung der hdfs-site
-Konfigurationsklassifikation auf dem Schlüssel-Server gespeichert wird.
Ab Amazon-EMR-Version 4.8.0 können Sie anhand der Amazon-EMR-Sicherheitskonfigurationen Datenverschlüsselungseinstellungen für Cluster einfacher konfigurieren. Sicherheitskonfigurationen bieten Einstellungen, um die Sicherheit für Daten während der Übertragung und für Daten im Ruhezustand in Amazon Elastic Block Store (Amazon EBS)-Speichervolumen sowie EMRFS-Daten in Amazon S3 zu unterstützen. Weitere Informationen finden Sie unter Daten während der Übertragung und im Ruhezustand verschlüsseln im Verwaltungshandbuch für Amazon EMR.
Amazon EMR verwendet standardmäßig den Hadoop KMS. Sie können jedoch einen anderen KMS verwenden, der den KeyProvider API-Vorgang implementiert. Jede Datei in einer HDFS-Zone verfügt über ihren eigenen, eindeutigen Datenverschlüsselungsschlüssel, der durch den Verschlüsselungszonenschlüssel verschlüsselt ist. HDFS-Daten werden verschlüsselt end-to-end (im Ruhezustand und während der Übertragung), wenn Daten in eine Verschlüsselungszone geschrieben werden, da Verschlüsselungs- und Entschlüsselungsaktivitäten nur im Client stattfinden.
Sie können keine Dateien zwischen den Verschlüsselungszonen oder von einer Verschlüsselungzone nach unverschlüsselten Pfaden verschieben.
Der HDFS-Client NameNode und der HDFS-Client interagieren über den API-Vorgang mit dem Hadoop KMS (oder einem von Ihnen konfigurierten alternativen KMS). KeyProvider Das KMS speichert Verschlüsselungsschlüssel im Unterstützungsschlüsselspeicher. Außerdem enthält Amazon EMR die JCE-Richtlinie für unbegrenzte Stärke, so dass Sie Schlüssel mit einer gewünschten Länge erstellen können.
Weitere Informationen finden Sie unter Transparente Verschlüsselung in HDFS
Anmerkung
In Amazon EMR ist KMS über HTTPS nicht standardmäßig im Hadoop-KMS aktiviert. Weitere Informationen zum Aktivieren von KMS über HTTPS finden Sie in der Hadoop-KMS-Dokumentation
Konfigurieren der transparenten HDFS-Verschlüsselung
Sie können die transparente Verschlüsselung in Amazon EMR konfigurieren, indem Sie Schlüssel erstellen und Verschlüsselungszonen hinzufügen. Hierfür gibt es mehrere Möglichkeiten:
-
Verwenden der Amazon-EMR-Konfigurations-API-Operation beim Erstellen eines Clusters
-
Verwenden eines Hadoop-JAR-Schritts mit command-runner.jar
-
Anmelden am Master-Knoten des Hadoop-Clusters und verwenden der Befehlszeilen-Clients
hadoop key
undhdfs crypto
-
Verwenden von REST APIs für Hadoop KMS und HDFS
Weitere Informationen zu REST APIs finden Sie in der entsprechenden Dokumentation für Hadoop KMS und HDFS.
Erstellen von Verschlüsselungszonen und deren Schlüssel während der Cluster-Erstellung unter Verwendung der CLI
Mithilfe der hdfs-encryption-zones
-Klassifizierung im Konfiguration-API-Vorgang können Sie bei der Erstellung eines Clusters einen Schlüsselnamen und eine Verschlüsselungszone angeben. Amazon EMR erstellt diesen Schlüssel im Hadoop-KMS auf Ihrem Cluster und konfiguriert die Verschlüsselungszone.
-
Erstellen Sie einen Cluster mit dem folgenden Befehl.
aws emr create-cluster --release-label
emr-7.7.0
--instance-type m5.xlarge --instance-count 2 \ --applications Name=App1
Name=App2
--configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.jsonAnmerkung
Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).
myConfig.json
:[ { "Classification": "hdfs-encryption-zones", "Properties": { "/myHDFSPath1": "path1_key", "/myHDFSPath2": "path2_key" } } ]
Manuelles Erstellen von Verschlüsselungszonen und deren Schlüssel auf dem Master-Knoten
-
Starten Ihres Clusters mit einer Amazon-EMR-Version größer als 4.1.0.
-
Stellen Sie mit dem Hauptknoten Ihres Clusters mithilfe von SSH eine Verbindung her.
-
Erstellen Sie einen Schlüssel im Hadoop-KMS.
$ hadoop key create path2_key path2_key has been successfully created with options Options{cipher='AES/CTR/NoPadding', bitLength=256, description='null', attributes=null}. KMSClientProvider[http://ip-x-x-x-x.ec2.internal:16000/kms/v1/] has been updated.
Wichtig
Die Schlüsselnamen müssen im Hadoop-KMS in Kleinbuchstaben geschrieben werden. Wenn Sie einen Schlüssel mit Großbuchstaben verwenden, wird der Start Ihres Clusters fehlschlagen.
-
Erstellen des Verschlüsselungszonenpfads in HDFS.
$ hadoop fs -mkdir /myHDFSPath2
-
Machen Sie den HDFS-Pfad mit dem von Ihnen erstellten Schlüssel zu einer Verschlüsselungszone.
$ hdfs crypto -createZone -keyName path2_key -path /myHDFSPath2 Added encryption zone /myHDFSPath2
Um Verschlüsselungszonen und ihre Schlüssel manuell zu erstellen, verwenden Sie den AWS CLI
-
Fügen Sie manuell Schritte zum Erstellen der KMS-Schlüssel und Verschlüsselungszonen mithilfe des folgenden Befehls hinzu.
aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=CUSTOM_JAR,Name="Create First Hadoop KMS Key",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop key create path1_key\""] \ Type=CUSTOM_JAR,Name="Create First Hadoop HDFS Path",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop fs -mkdir /myHDFSPath1\""] \ Type=CUSTOM_JAR,Name="Create First Encryption Zone",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hdfs crypto -createZone -keyName path1_key -path /myHDFSPath1\""] \ Type=CUSTOM_JAR,Name="Create Second Hadoop KMS Key",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop key create path2_key\""] \ Type=CUSTOM_JAR,Name="Create Second Hadoop HDFS Path",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop fs -mkdir /myHDFSPath2\""] \ Type=CUSTOM_JAR,Name="Create Second Encryption Zone",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hdfs crypto -createZone -keyName path2_key -path /myHDFSPath2\""]
Anmerkung
Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).
Überlegungen zur transparenten HDFS-Verschlüsselung
Eine bewährte Methode ist das Erstellen einer Verschlüsselungszone für jede Anwendung, in der möglicherweise Dateien geschrieben werden. Sie können auch das gesamte HDFS verschlüsseln, indem Sie die hdfs-encryption-zones Klassifizierung in der Konfigurations-API verwenden und den Stammpfad (/) als Verschlüsselungszone angeben.
Hadoop-Schlüsselverwaltungsserver (KMS)
Hadoop
Verwenden Sie zur Konfiguration von Hadoop KMS die hadoop-kms-site Klassifizierung, um Einstellungen zu ändern. Zur Konfiguration ACLs verwenden Sie die Klassifizierung kms-acls.
Weitere Informationen finden Sie in der Hadoop-KMS-Dokumentation
Anmerkung
In Amazon EMR ist KMS über HTTPS nicht standardmäßig im Hadoop-KMS aktiviert. Informationen zum Aktivieren von KMS über HTTPS finden Sie in der Hadoop-KMS-Dokumentation
Wichtig
Die Schlüsselnamen müssen im Hadoop-KMS in Kleinbuchstaben geschrieben werden. Wenn Sie einen Schlüssel mit Großbuchstaben verwenden, wird der Start Ihres Clusters fehlschlagen.
Konfigurieren von Hadoop KMS in Amazon EMR
Mit Amazon-EMR-Version 4.6.0 oder höher lautet kms-http-port
9700 und kms-admin-port
9701.
Sie können die Hadoop-KMS während der Cluster-Erstellung konfigurieren. Verwenden Sie dazu die Konfigurations-API für Amazon-EMR-Versionen. Nachstehend finden Sie die Konfigurationsobjektklassifizierungen, die für Hadoop-KMS zur Verfügung stehen:
Klassifizierung | Dateiname |
---|---|
hadoop-kms-site | kms-site.xml |
hadoop-kms-acls | kms-acls.xml |
hadoop-kms-env | kms-env.sh |
hadoop-kms-log4j | kms-log4j.properties |
So richten Sie Hadoop KMS ACLs mit der CLI ein
-
Erstellen Sie mit dem folgenden Befehl einen Cluster ACLs mit Hadoop KMS:
aws emr create-cluster --release-label
emr-7.7.0
--instance-type m5.xlarge --instance-count 2 \ --applications Name=App1
Name=App2
--configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.jsonAnmerkung
Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).
myConfig.json
:[ { "Classification": "hadoop-kms-acls", "Properties": { "hadoop.kms.blacklist.CREATE": "hdfs,foo,myBannedUser", "hadoop.kms.acl.ROLLOVER": "myAllowedUser" } } ]
Deaktivieren des Hadoop-KMS-Cache mithilfe der CLI
-
Verwenden Sie den folgenden Befehl, um einen Cluster mit Hadoop-KMS zu erstellen, wobei
hadoop.kms.cache.enable
auffalse
festgelegt ist:aws emr create-cluster --release-label
emr-7.7.0
--instance-type m5.xlarge --instance-count 2 \ --applications Name=App1
Name=App2
--configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.jsonAnmerkung
Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).
myConfig.json
:[ { "Classification": "hadoop-kms-site", "Properties": { "hadoop.kms.cache.enable": "false" } } ]
Einrichten der Umgebungsvariablen im Skript kms-env.sh
mit CLI
-
Ändern der Einstellungen in
kms-env.sh
über diehadoop-kms-env
-Konfiguration. Verwenden Sie den folgenden Befehl, um einen Cluster mit Hadoop-KMS zu erstellen:aws emr create-cluster --release-label
emr-7.7.0
--instance-type m5.xlarge --instance-count 2 \ --applications Name=App1
Name=App2
--configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.jsonAnmerkung
Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).
myConfig.json
:[ { "Classification": "hadoop-kms-env", "Properties": { }, "Configurations": [ { "Classification": "export", "Properties": { "JAVA_LIBRARY_PATH": "
/path/to/files
", "KMS_SSL_KEYSTORE_FILE": "/non/Default/Path/
.keystore", "KMS_SSL_KEYSTORE_PASS": "myPass
" }, "Configurations": [ ] } ] } ]
Weitere Informationen zur Konfiguration von Hadoop-KMS finden Sie in der Hadoop-KMS-Dokumentation
Transparente HDFS-Verschlüsselung auf EMR-Clustern mit mehreren Hauptknoten
Apache Ranger
Apache Ranger KMS speichert seinen Root-Schlüssel und seine Encryption Zone (EZ)-Schlüssel in Ihrem Amazon RDS für einen Amazon-EMR-Cluster mit mehreren Primärknoten. Um die transparente Verschlüsselung in HDFS auf einem Amazon-EMR-Cluster mit mehreren Primärknoten zu aktivieren, müssen Sie die folgenden Konfigurationen bereitstellen.
-
Amazon RDS oder Ihre eigene MySQL-Server-Verbindungs-URL zum Speichern des Ranger-KMS-Root-Schlüssels und des EZ-Schlüssels
-
Benutzername und Passwort für MySQL
-
Passwort für den Ranger-KMS-Root-Schlüssel
-
PEM-Datei der Zertifizierungsstelle (CA) für die SSL-Verbindung zum MySQL-Server. Sie können das Zertifikatspaket für Sie AWS-Region unter Zertifikatspakete für Amazon RDS herunterladen.
Sie können diese Konfigurationen mithilfe der ranger-kms-dbks-site
-Klassifizierung und der ranger-kms-db-ca
-Klassifizierung bereitstellen, wie im folgenden Beispiel veranschaulicht.
[{ "Classification": "ranger-kms-dbks-site", "Properties": { "ranger.ks.jpa.jdbc.url": "
jdbc:log4jdbc:mysql://mysql-host-url.xx-xxx-1.xxx.amazonaws.com:3306/rangerkms
", "ranger.ks.jpa.jdbc.user": "mysql-user-name
", "ranger.ks.jpa.jdbc.password": "mysql-password
", "ranger.db.encrypt.key.password": "password-for-encrypting-a-master-key
" } }, { "Classification": "ranger-kms-db-ca", "Properties": { "ranger.kms.trust.ca.file.s3.url": "<S3-path-of-downloaded-pem-file>" } } ]]
Nachfolgend finden Sie Konfigurationsobjektklassifizierungen für Apache Ranger KMS.
Klassifizierung | Beschreibung |
---|---|
ranger-kms-dbks-site | Ändert die Werte in der dbks-site.xml-Datei von Ranger KMS. |
ranger-kms-site | Ändern Sie die Werte in der ranger-kms-site XML-Datei von Ranger KMS. |
ranger-kms-env | Ändert die Werte in der Ranger KMS-Umgebung. |
ranger-kms-log4j | Ändert die Werte in der kms-log4j.properties-Datei von Ranger KMS. |
ranger-kms-db-ca | Ändert die Werte für die CA-Datei auf S3 für die MySQL SSL-Verbindung mit Ranger KMS. |
Überlegungen
-
Es wird dringend empfohlen, Ihre Amazon-RDS-Instance zu verschlüsseln, um die Sicherheit zu verbessern. Weitere Informationen finden Sie unter Übersicht über die Verschlüsselung von Amazon-RDS-Ressourcen.
-
Es wird dringend empfohlen, für jeden Amazon-EMR-Cluster eine separate MySQL-Datenbank mit mehreren Primärknoten zu verwenden, um eine hohe Sicherheit zu gewährleisten.
-
Um transparente Verschlüsselung in HDFS auf einem Amazon-EMR-Cluster mit mehreren Primärknoten zu konfigurieren, müssen Sie beim Erstellen des Clusters die
hdfs-encryption-zones
-Klassifizierung angeben. Andernfalls wird Ranger KMS nicht konfiguriert oder gestartet. Die Neukonfiguration derhdfs-encryption-zones
-Klassifizierung oder einer der Hadoop KMS-Konfigurationsklassifizierungen auf einem laufenden Cluster wird auf Amazon-EMR-Clustern mit mehreren Primärknoten nicht unterstützt. -
Das PEM-Zertifikatspaket, das Sie von Zertifikatspakete für Amazon RDS herunterladen, fasst mehrere Zertifikate in einer Datei zusammen. Amazon EMR 7.3.0 und höher unterstützt den Import mehrerer Zertifikate aus der PEM-Datei mit der Konfiguration.
ranger.kms.trust.ca.file.s3.url