Descarregamento de arquivos de dados criptografados
UNLOAD cria arquivos automaticamente usando a criptografia do lado do servidor do Amazon S3 (SSE-S3) com chaves de criptografia gerenciadas pela AWS. Você também pode especificar a criptografia no lado do servidor com uma chave do AWS Key Management Service (SSE-KMS) ou a criptografia do lado do cliente com uma chave gerenciada pelo cliente. UNLOAD não oferece suporte à criptografia do lado do servidor do Amazon S3 usando uma chave gerenciada pelo cliente. Para obter mais informações, consulte Proteger dados usando a criptografia no lado do servidor.
Para descarregar no Amazon S3 usando criptografia do lado do servidor com uma chave AWS KMS, use o parâmetro KMS_KEY_ID para fornecer o ID da chave, conforme mostrado no exemplo a seguir.
unload ('select venuename, venuecity from venue') to 's3://amzn-s3-demo-bucket/encrypted/venue_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' KMS_KEY_ID '1234abcd-12ab-34cd-56ef-1234567890ab' encrypted;
Se desejar fornecer sua própria chave de criptografia, você pode criar arquivos de dados criptografados do lado do cliente no Amazon S3 usando o comando UNLOAD com a opção ENCRYPTED. UNLOAD usa o mesmo processo de criptografia de envelope que a criptografia do lado do cliente do Amazon S3 usa. Você pode usar o comando COPY com a opção ENCRYPTED para carregar os arquivos criptografados.
O processo funciona deste modo:
-
Crie uma chave AES de 256 bits codificada por base64 que será usada como sua chave de criptografia privada ou chave simétrica raiz.
-
Você emite um comando UNLOAD que inclua sua a chave simétrica raiz e a opção ENCRYPTED.
-
UNLOAD gera uma chave simétrica de uso único (chamada chave simétrica de envelope) e um vetor de inicialização (IV), que a usa para criptografar seus dados.
-
UNLOAD criptografa a chave simétrica de envelope usando sua chave simétrica raiz.
-
O UNLOAD então armazena os arquivos de dados criptografados no Amazon S3 e armazena a chave do envelope criptografado e IV como metadados de objeto com cada arquivo. A chave de envelope criptografada é armazenada como metadados de objeto
x-amz-meta-x-amz-key
e o IV é armazenado como metadados de objetox-amz-meta-x-amz-iv
.
Para obter mais informações sobre o processo de criptografia de envelope, consulte o artigo Criptografia de dados do lado do cliente com o AWS SDK for Java e o Amazon S3
Para descarregar arquivos de dados criptografados, adicione a chave-valor raiz à string de credenciais e inclua a opção ENCRYPTED. Se você usar a opção MANIFEST, o arquivo manifesto também será criptografado.
unload ('select venuename, venuecity from venue') to 's3://amzn-s3-demo-bucket/encrypted/venue_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' master_symmetric_key '
<root_key>
' manifest encrypted;
Para descarregar arquivos de dados criptografados que estão compactador por GZIP, inclua a opção GZIP junto com a chave-valor raiz e a opção ENCRYPTED.
unload ('select venuename, venuecity from venue') to 's3://amzn-s3-demo-bucket/encrypted/venue_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' master_symmetric_key '
<root_key>
' encrypted gzip;
Para carregar os arquivos de dados criptografados, adicione o parâmetro de MASTER_SYMMETRIC_KEY com a mesma chave-valor raiz e inclua a opção ENCRYPTED.
copy venue from 's3://amzn-s3-demo-bucket/encrypted/venue_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' master_symmetric_key '
<root_key>
' encrypted;