Comment chiffrer une table HBase dans Amazon EMR à l'aide d'AES ?
Je veux utiliser l'algorithme AES (Advanced Encryption Standard) pour chiffrer une table Apache HBase sur un cluster Amazon EMR.
Résolution
Vous pouvez chiffrer une table HBase nouvelle ou existante à l'aide de la fonction de chiffrement transparent. Cette fonction chiffre les données HFile et les journaux de transaction (WAL) au repos.
Remarque : lorsque vous utilisez Amazon Simple Storage Service (Amazon S3) comme source de données plutôt que HDFS, vous pouvez protéger les données au repos et en transit à l'aide du chiffrement côté serveur et côté client. Pour plus d'informations, consultez la section Protection des données à l'aide du chiffrement.
Chiffrer une nouvelle table HBase
1. Ouvrez la console Amazon EMR.
2. Sélectionnez un cluster qui dispose déjà de HBase ou créez un cluster avec HBase.
3. Connectez-vous au nœud maître à l'aide de SSH.
4. Utilisez la commande keytool pour créer une clé secrète d'une longueur appropriée pour le chiffrement AES. Fournissez un mot de passe et un alias.
Exemple de commande :
sudo keytool -keystore /etc/hbase/conf/hbase.jks -storetype jceks -storepass:file mysecurefile -genseckey -keyalg AES -keysize 128 -alias your-alias<br>
Remarque : le fichier : securefile contient un mot de passe storepass. Assurez-vous que le fichier n'est lisible que par son propriétaire et qu'il est supprimé après utilisation.
Exemple de sortie :
Output: Enter key password for <your_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".
5. Ajoutez les propriétés suivantes au fichier hbase-site.xml sur chaque nœud du cluster EMR. Dans la propriété hbase.crypto.keyprovider.parameters, fournissez le chemin d'accès à hbase.jks ainsi que le mot de passe. Il s'agit du même mot de passe que celui que vous avez spécifié dans la commande keytool à l'étape 4. Dans la propriété hbase.crypto.master.key.name, spécifiez votre alias.
<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><your-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>
6. Copiez le fichier hbase.jks sur tous les nœuds de cluster. Veillez à copier le fichier à l'emplacement spécifié dans la propriété hbase.crypto.keyprovider.parameters. Dans l'exemple suivant, remplacez HostToCopy et ToHost par les noms DNS publics correspondants pour les nœuds.
cd /etc/hbase/conf scp hbase.jks HostToCopy:/tmp ssh ToHost sudo cp /tmp/hbase.jks /etc/hbase/conf/
7. Redémarrez tous les services HBase sur les nœuds maîtres et principaux, comme illustré dans l'exemple suivant. Réutilisez les commandes stop (arrêter) et start (démarrer) hbase-regionserver sur chaque nœud principal.
Remarque : l'arrêt et le démarrage des serveurs Region peuvent avoir un impact sur les lectures/écritures en cours dans les tables HBase de votre cluster. Par conséquent, arrêtez et démarrez les démons HBase uniquement pendant les temps d'arrêt. Vérifiez les impacts possibles sur un cluster de test avant de démarrer et d'arrêter un cluster de production.
Amazon EMR 5.30.0 et versions ultérieures :
sudo systemctl stop hbase-master sudo systemctl stop hbase-regionserver sudo systemctl start hbase-master sudo systemctl start hbase-regionserver
Versions d'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
8. Connectez-vous au shell HBase :
# hbase shell
9. Créez une table avec le chiffrement AES :
create 'table1',{NAME=>'columnfamily',ENCRYPTION=>'AES'}
Exemple de résultat :
0 row(s) in 1.6760 seconds => Hbase::Table - table1
10. Décrivez la table pour confirmer que le chiffrement AES est activé :
describe 'table1'
Exemple de résultat :
Table table1 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 existante
1. Décrivez la table non chiffrée :
describe 'table2'
Exemple de résultat :
Table table2 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 seconds
2. Utilisez la commande alter pour activer le chiffrement AES :
alter 'table2',{NAME=>'cf2',ENCRYPTION=>'AES'}
Exemple de résultat :
Updating all regions with the new schema... 1/1 regions updated. Done. 0 row(s) in 1.9000 seconds
3. Vérifiez que la table est chiffrée :
describe 'table2'
Exemple de résultat :
Table table2 is ENABLED table2 COLUMN FAMILIES DESCRIPTION {NAME => 'cf2', 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 (par exemple, avec Apache Phoenix), le chiffrement WAL peut ne pas fonctionner. Dans ce cas, vous obtenez une réponse « java.lang.NullPointerException ». Pour résoudre ce problème, définissez hbase.regionserver.wal.encryption sur false dans le fichier hbase-site.xml. Exemple :
<property> <name>hbase.regionserver.wal.encryption</name> <value>false</value> </property>
Informations connexes
Vidéos associées
Contenus pertinents
- Réponse acceptéedemandé il y a 7 moislg...
- demandé il y a un anlg...
- demandé il y a 2 moislg...
- demandé il y a un anlg...
- demandé il y a 9 moislg...
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 3 ans
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a un an