AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
Wie verwende ich AES, um eine Apache HBase-Tabelle in Amazon EMR zu verschlüsseln?
Ich möchte Advanced Encryption Standard (AES) verwenden, um eine Apache HBase-Tabelle in Amazon EMR zu verschlüsseln.
Behebung
Hinweis: Wenn du Amazon Simple Storage Service (Amazon S3) als Datenquelle anstelle von Hadoop Distributed File System (HDFS) verwendest, verwende die serverseitige und clientseitige Verschlüsselung, um Daten zu schützen.
Eine neue Apache HBase-Tabelle verschlüsseln
Führe die folgenden Schritte aus:
-
Öffne die Amazon EMR-Konsole.
-
Wähle einen Cluster, der bereits HBase hat. Oder erstelle einen neuen Cluster mit HBase.
-
Verwende SSH, um eine Verbindung zum Primärknoten des Amazon EMR-Clusters herzustellen.
-
Führe den Befehl keytool aus, um einen geheimen Schlüssel für die AES-Verschlüsselung zu erstellen:
sudo keytool -keystore /etc/hbase/conf/hbase.jks -storetype jceks -storepass:file mysecurefile -genseckey -keyalg AES -keysize 128 -alias example-aliasHinweis: Ersetze example-alias durch deinen Alias.
Beispielausgabe:Output:Enter key password for example-key-store (RETURN if same as keystore password): Warning:The JCEKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /etc/hbase/conf/hbase.jks -destkeystore /etc/hbase/conf/hbase.jks -deststoretype pkcs12". -
Füge der Datei hbase-site.xml für jeden Knoten im Amazon EMR-Cluster die folgenden Eigenschaften hinzu. Gib den hbase.jks-Pfad und das Passwort für den Parameter hbase.crypto.keyprovider an. Gib außerdem den Alias im Parameter hbase.crypto.master.key.name an:
<property> <name>hbase.crypto.keyprovider.parameters</name> <value>jceks:///etc/hbase/conf/hbase.jks?password=your_password</value> </property> <property> <name>hbase.crypto.master.key.name</name> <value>example-alias</value> </property> <property> <name>hbase.regionserver.hlog.reader.impl</name> <value>org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogReader</value> </property> <property> <name>hbase.regionserver.hlog.writer.impl</name> <value>org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogWriter</value> </property> <property> <name>hfile.format.version</name> <value>3</value> </property> <property> <name>hbase.regionserver.wal.encryption</name> <value>true</value> </property> <property> <name>hbase.crypto.keyprovider</name> <value>org.apache.hadoop.hbase.io.crypto.KeyStoreKeyProvider</value> </property>Hinweis: Anstelle des standardmäßigen MD5-Algorithmus kannst du einen benutzerdefinierten Hash-Algorithmus für den Verschlüsselungsschlüssel wie HBase-25181 verwenden. Weitere Informationen findest du auf der Apache-Website unter Add options for disabling column family encryption and choosing hash algorithm for wrapped encryption keys (Hinzufügen von Optionen zum Deaktivieren der Spaltenfamilienverschlüsselung und Auswahl eines Hash-Algorithmus für verpackte Verschlüsselungsschlüssel). Verwende die Konfigurationsoption hbase.crypto.key.hash.algorithm, um den Hash festzulegen. Das folgende Beispiel verwendet den SHA-512-Algorithmus:
<property> <name>hbase.crypto.key.hash.algorithm</name> <value>SHA-512</value></property> -
Kopiere die Datei hbase.jks auf alle Cluster-Knoten im Speicherort, der im Parameter hbase.crypto.keyprovider angegeben ist:
cd /etc/hbase/conf scp hbase.jks example-host-to-copy:/tmp ssh example-to-hostsudo cp /tmp/hbase.jks /etc/hbase/conf/Hinweis: Ersetze example-host-to-copy und example-to-host durch die öffentlichen DNS-Namen deiner Knoten.
-
Starte alle HBase-Services auf dem Primär- und Core-Knoten neu. Wiederhole dann die Stopp- und Startbefehle hbase-regionserver auf jedem Core-Knoten.
Hinweis: Wenn du Server in der AWS-Region stoppst und startest, kann dies die laufenden Lese- und Schreibvorgänge in HBase-Tabellen auf dem Cluster beeinträchtigen. Stoppe und starte die HBase-Daemons nur während einer Ausfallzeit. Es hat sich bewährt, einen Test-Cluster zu stoppen und zu starten, bevor du einen Produktions-Cluster stoppst und startest.Amazon EMR 5.30.0 und spätere Versionen:
sudo systemctl stop hbase-mastersudo systemctl stop hbase-regionserver sudo systemctl start hbase-mastersudo systemctl start hbase-regionserverVersionen von Amazon EMR 4x auf Amazon EMR 5.29.0:
sudo initctl stop hbase-master sudo initctl stop hbase-regionserver sudo initctl start hbase-master sudo initctl start hbase-regionserver -
Melde dich bei der HBase-Shell an:
# hbase shell -
Erstelle eine Tabelle mit AES-Verschlüsselung:
create 'example-table',{NAME=>'columnfamily',ENCRYPTION=>'AES'}Hinweis: Ersetze example-table durch deinen Tabellennamen.
Beispielausgabe:0 row(s) in 1.6760 seconds=> Hbase::Table - example-table1 -
Vergewissere dich, dass die AES-Verschlüsselung aktiviert ist:
describe 'example-table'
Hinweis: Ersetze example-table durch deinen Tabellennamen.
Beispielausgabe:
Table example-table is ENABLED table1 COLUMN FAMILIES DESCRIPTION {NAME => 'columnfamily', BLOOMFILTER => 'ROW', ENCRYPTION => 'AES', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'} 1 row(s) in 0.0320 seconds
Eine vorhandene Apache HBase-Tabelle verschlüsseln
Führe die folgenden Schritte aus:
-
Beschreibe die unverschlüsselte Tabelle:
describe 'example-table'Hinweis: Ersetze example-table durch die Tabelle, die du beschreiben möchtest.
Beispielausgabe:Table example-table is ENABLED table2 COLUMN FAMILIES DESCRIPTION {NAME => 'cf2', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '6 5536', REPLICATION_SCOPE => '0'}1 row(s) in 0.0140 seconds2 -
Aktiviere die AES-Verschlüsselung:
alter 'example-table',{NAME=>'columnfamily2',ENCRYPTION=>'AES'}Hinweis: Ersetze example-table durch deine Tabelle.
Beispielausgabe:Updating all regions with the new schema... 1/1 regions updated. Done.0 row(s) in 1.9000 seconds3. -
Vergewissere dich, dass die Tabelle verschlüsselt ist:
describe 'example-table'Hinweis: Ersetze example-table durch deine Tabelle.
Beispielausgabe:Table example-table is ENABLED table2 COLUMN FAMILIES DESCRIPTION {NAME => 'columnfamily2', BLOOMFILTER => 'ROW', ENCRYPTION => 'AES', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}1 row(s) in 0.0120 secondsHinweis: Wenn du einen sekundären Index für die Tabelle erstellst, funktioniert die WAL-Verschlüsselung möglicherweise nicht und es erfolgt eine java.lang.NullPointerException-Antwort. Um dieses Problem zu beheben, setze hbase.regionserver.wal.encryption in der Datei hbase-site.xml auf false (falsch):
<property> <name>hbase.regionserver.wal.encryption</name> <value>false</value> </property>
Ähnliche Informationen
- Themen
- Analytics
- Tags
- Amazon EMR
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 3 Jahren