New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Comment utiliser AES pour chiffrer une table Apache HBase dans Amazon EMR ?
Je souhaite utiliser Advanced Encryption Standard (AES) pour chiffrer une table Apache HBase dans Amazon EMR.
Résolution
Remarque : Si vous utilisez Amazon Simple Storage Service (Amazon S3) comme source de données au lieu du système de fichiers distribué Hadoop (HDFS), utilisez le chiffrement côté serveur et côté client pour protéger les données.
Chiffrer une nouvelle table Apache HBase
Procédez comme suit :
-
Ouvrez la console Amazon EMR.
-
Choisissez un cluster qui inclut déjà HBase. Vous pouvez également créer un nouveau cluster avec HBase.
-
Utilisez SSH pour vous connecter au nœud primaire du cluster Amazon EMR.
-
Exécutez la commande keytool pour créer une clé secrète pour le chiffrement AES :
sudo keytool -keystore /etc/hbase/conf/hbase.jks -storetype jceks -storepass:file mysecurefile -genseckey -keyalg AES -keysize 128 -alias example-alias
Remarque : Remplacez example-alias par votre alias.
Exemple de sortie :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".
-
Ajoutez les propriétés suivantes au fichier hbase-site.xml pour chaque nœud du cluster Amazon EMR. Indiquez le chemin hbase.jks et le mot de passe pour le paramètre hbase.crypto.keyprovider. Spécifiez également votre alias dans le paramètre hbase.crypto.master.key.name :
<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>
Remarque : Au lieu de l'algorithme MD5 par défaut, vous pouvez utiliser un algorithme de hachage de clé de chiffrement personnalisé, tel que HBase-25181. Pour plus d'informations, consultez la page Ajouter des options pour désactiver le chiffrement des familles de colonnes et choisir un algorithme de hachage pour les clés de chiffrement encapsulées sur le site Web d'Apache. Pour définir le hachage, utilisez l'option de configuration hbase.crypto.key.hash.algorithm. L'exemple suivant utilise l'algorithme SHA-512 :
<property> <name>hbase.crypto.key.hash.algorithm</name> <value>SHA-512</value></property>
-
Copiez le fichier hbase.jks vers tous les nœuds de cluster situés à l'emplacement spécifié dans le paramètre hbase.crypto.keyprovider :
cd /etc/hbase/conf scp hbase.jks example-host-to-copy:/tmp ssh example-to-hostsudo cp /tmp/hbase.jks /etc/hbase/conf/
Remarque : Remplacez example-host-to-copy et example-to-host par les noms DNS publics de vos nœuds.
-
Redémarrez tous les services HBase sur les nœuds primaire et principal. Puis, répétez les commandes d’arrêt et de démarrage hbase-regionserver sur chaque nœud principal.
Remarque : Lorsque vous arrêtez et démarrez des serveurs de région AWS, cela peut affecter les lectures et les écritures en cours dans les tables HBase de votre cluster. Arrêtez et démarrez les démons HBase uniquement pendant les durées d’indisponibilité. Il est recommandé d'arrêter et de démarrer un cluster de test avant d'arrêter et de démarrer un cluster de production.Amazon EMR 5.30.0 et versions ultérieures :
sudo systemctl stop hbase-mastersudo systemctl stop hbase-regionserver sudo systemctl start hbase-mastersudo systemctl start hbase-regionserver
Versions Amazon EMR 4x à 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
-
Connectez-vous au shell HBase :
# hbase shell
-
Créez une table avec chiffrement AES :
create 'example-table',{NAME=>'columnfamily',ENCRYPTION=>'AES'}
Remarque : Remplacez example-table par le nom de votre table.
Exemple de sortie :0 row(s) in 1.6760 seconds=> Hbase::Table - example-table1
-
Vérifiez que le chiffrement AES est activé :
describe 'example-table'
Remarque : Remplacez example-table par le nom de votre table.
Exemple de sortie :
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
Chiffrer une table Apache HBase existante
Procédez comme suit :
-
Décrivez la table non chiffrée :
describe 'example-table'
Remarque : Remplacez example-table par la table que vous souhaitez décrire.
Exemple de sortie :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
-
Activez le chiffrement AES :
alter 'example-table',{NAME=>'columnfamily2',ENCRYPTION=>'AES'}
Remarque : Remplacez example-table par votre table.
Exemple de sortie :Updating all regions with the new schema... 1/1 regions updated. Done.0 row(s) in 1.9000 seconds3.
-
Vérifiez que la table est chiffrée :
describe 'example-table'
Remarque : Remplacez example-table par votre table.
Exemple de sortie :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 seconds
Remarque : Si vous créez un index secondaire sur la table, le chiffrement WAL risque de ne pas fonctionner et une réponse java.lang.NullPointerException se produit. Pour résoudre ce problème, définissez hbase.regionserver.wal.encryption sur faux dans le fichier hbase-site.xml :
<property> <name>hbase.regionserver.wal.encryption</name> <value>false</value> </property>
Informations connexes
Vidéos associées


Contenus pertinents
- demandé il y a 2 moislg...
- demandé il y a 4 jourslg...
- demandé il y a 13 jourslg...
- demandé il y a 2 anslg...
- AWS OFFICIELA mis à jour il y a 3 ans
- AWS OFFICIELA mis à jour il y a 3 ans
- AWS OFFICIELA mis à jour il y a 2 ans