Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Como uso o AES para criptografar uma tabela do Apache HBase no Amazon EMR?
Quero usar o Advanced Encryption Standard (AES) para criptografar uma tabela do Apache HBase no Amazon EMR.
Resolução
Observação: se você usar o Amazon Simple Storage Service (Amazon S3) como fonte de dados em vez do Sistema de Arquivos Distribuído do Hadoop (HDFS), use a criptografia do lado do servidor e do lado do cliente para proteger os dados.
Criptografar uma nova tabela do Apache HBase
Conclua as seguintes etapas:
-
Abra o console do Amazon EMR.
-
Escolha um cluster que já tenha o HBase. Ou crie um novo cluster com o HBase.
-
Use SSH para se conectar ao nó primário do cluster do Amazon EMR.
-
Execute o comando keytool para criar uma chave secreta de criptografia com AES:
sudo keytool -keystore /etc/hbase/conf/hbase.jks -storetype jceks -storepass:file mysecurefile -genseckey -keyalg AES -keysize 128 -alias example-aliasObservação: substitua example-alias pelo seu alias.
Exemplo de saída: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". -
Adicione as seguintes propriedades ao arquivo hbase-site.xml para cada nó no cluster do Amazon EMR. Forneça o caminho e a senha de hbase.jks para o parâmetro hbase.crypto.keyprovider. Além disso, especifique seu alias no parâmetro 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>Observação: em vez do algoritmo MD5 padrão, é possível usar um algoritmo de hash de chave de criptografia personalizado, como HBase-25181. Para mais informações, consulte Adicionar opções para desativar a criptografia de famílias de colunas e escolher o algoritmo de hash para chaves de criptografia agrupadas no site da Apache. Para definir o hash, use a opção de configuração hbase.crypto.key.hash.algorithm. O exemplo a seguir usa o algoritmo SHA-512:
<property> <name>hbase.crypto.key.hash.algorithm</name> <value>SHA-512</value></property> -
Copie o arquivo hbase.jks para todos os nós do cluster no local especificado no parâmetro 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/Observação: substitua example-host-to-copy e example-to-host pelos nomes DNS públicos dos seus nós.
-
Reinicie todos os serviços do HBase nos nós primário e central. Em seguida, repita os comandos “stop” e “start” do hbase-regionserver em cada nó central.
Observação: quando você interrompe e inicia os servidores da região AWS, isso pode afetar as leituras e gravações recorrentes nas tabelas do HBase em seu cluster. Interrompa e inicie os daemons do HBase somente durante o tempo de inatividade. É uma prática recomendada interromper e iniciar um cluster de teste antes de interromper e iniciar um cluster de produção.Amazon EMR 5.30.0 e versões posteriores:
sudo systemctl stop hbase-mastersudo systemctl stop hbase-regionserver sudo systemctl start hbase-mastersudo systemctl start hbase-regionserverVersões do Amazon EMR 4x ao 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 -
Faça login no shell do HBase:
# hbase shell -
Crie uma tabela com criptografia com AES:
create 'example-table',{NAME=>'columnfamily',ENCRYPTION=>'AES'}Observação: substitua example-table pelo nome da sua tabela.
Exemplo de saída:0 row(s) in 1.6760 seconds=> Hbase::Table - example-table1 -
Confirme se a criptografia com AES está ativada:
describe 'example-table'
Observação: substitua example-table pelo nome da sua tabela.
Exemplo de saída:
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
Criptografe uma tabela do Apache HBase
Conclua as seguintes etapas:
-
Descreva a tabela não criptografada:
describe 'example-table'Observação: Substitua example-table pela tabela que você deseja descrever.
Exemplo de saída: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 -
Ative a criptografia com AES:
alter 'example-table',{NAME=>'columnfamily2',ENCRYPTION=>'AES'}Observação: substitua example-table pela sua tabela.
Exemplo de saída:Updating all regions with the new schema... 1/1 regions updated. Done.0 row(s) in 1.9000 seconds3. -
Confirme se a tabela está criptografada:
describe 'example-table'Observação: substitua example-table pela sua tabela.
Exemplo de saída: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 secondsObservação: se você criar um índice secundário na tabela, a criptografia WAL poderá não funcionar e uma resposta java.lang.NullPointerException é gerada. Para resolver esse problema, defina hbase.regionserver.wal.encryption como falso no arquivo hbase-site.xml:
<property> <name>hbase.regionserver.wal.encryption</name> <value>false</value> </property>
Informações relacionadas
- Tópicos
- Analytics
- Tags
- Amazon EMR
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
- feita há 10 meses
- feita há 9 meses
- feita há 10 meses
AWS OFICIALAtualizada há um ano