Carregamento de dados criptografados para Amazon S3
O Amazon S3 oferece suporte para criptografia do lado do servidor e criptografia do lado do cliente. Este tópico discute as diferenças entre a criptografia do lado do servidor e do lado do cliente e descreve as etapas para usar a criptografia do lado do cliente com o Amazon Redshift. A criptografia do lado do servidor é transparente para o Amazon Redshift.
Criptografia do lado do servidor
A criptografia do lado do servidor é a criptografia de dados em repouso, ou seja, o Amazon S3 criptografa seus dados à medida que os carrega e os descriptografa para você quando você os acessa. Quando você carrega tabelas usando um comando COPY, não há diferença na maneira como você carrega de objetos criptografados ou não criptografados do lado do servidor no Amazon S3. Para obter mais informações sobre a criptografia do lado do servidor, consulte Usar criptografia do lado do servidor no Guia do usuário do Amazon Simple Storage Service.
Criptografia do lado do cliente
Na criptografia no lado do cliente, seu aplicativo cliente gerencia a criptografia de seus dados, chaves de criptografia e ferramentas relacionadas. Você pode fazer upload de dados para um bucket do Amazon S3 usando criptografia do lado do cliente e, em seguida, carregar os dados usando o comando COPY com a opção ENCRYPTED e uma chave de criptografia privada para fornecer maior segurança.
Você criptografa seus dados usando criptografia de envelope. Com criptografia de envelope, seu aplicativo cuida de toda criptografia exclusivamente. Suas chaves de criptografia privadas e seus dados não criptografados nunca são enviados para a AWS, por isso é muito importante que você gerencie com segurança suas chaves de criptografia. Se você perder suas chaves de criptografia, não poderá descriptografar seus dados e não poderá recuperar suas chaves de criptografia da AWS. A criptografia de envelope alia a performance da criptografia simétrica rápida ao mesmo tempo com a maior segurança que o gerenciamento com chaves assimétricas oferece. Uma chave simétrica de uso único (a chave simétrica de envelope) é gerada por seu cliente de criptografia Amazon S3 para criptografar seus dados. Portanto, essa chave é criptografada por sua chave raiz e armazenada com seus dados no Amazon S3. Quando o Amazon Redshift acessa seus dados durante um carregamento, a chave simétrica criptografada é recuperada e descriptografada com sua chave real e, em seguida, os dados são descriptografados.
Para trabalhar com dados criptografados do lado do cliente do Amazon S3 no Amazon Redshift, siga as etapas descritas em Proteger dados usando criptografia do lado do cliente no Guia do usuário do Amazon Simple Storage Service, com os demais requisitos que você usa:
-
Criptografia simétrica A classe
AmazonS3EncryptionClient
do SDK for Java da AWS usa criptografia de envelope, descrita anteriormente, que é baseada na criptografia de chave simétrica. Use esta classe para criar um cliente Amazon S3 para carregar dados criptografados do lado do cliente. -
Uma chave mestra simétrica AES de 256 bits: uma chave primária criptografa a chave de envelope. Você transmite a chave raiz à sua instância da classe
AmazonS3EncryptionClient
. Salve esta chave, pois você precisará dela para copiar dados no Amazon Redshift. -
Metadados de objeto para armazenar chave de envelope criptografada – Por padrão, o Amazon S3 armazena a chave de envelope como metadados de objeto para a classe
AmazonS3EncryptionClient
. A chave de envelope criptografada que é armazenada como metadados de objeto é usada durante o processo de descriptografia.
nota
Se você receber uma mensagem de erro de criptografia quando usar a API de criptografia pela primeira vez, sua versão do JDK pode ter um arquivo de políticas de jurisdição JCE (Java Cryptography Extension) que limita o tamanho máximo da chave para transformações de criptografia e descriptografia para 128 bits. Para obter informações sobre como resolver esse problema, acesse Especificar a criptografia do lado do cliente usando o AWS SDK para Java no Guia do usuário do Amazon Simple Storage Service.
Para obter informações sobre como carregar arquivos criptografados do lado do cliente em suas tabelas do Amazon Redshift usando o comando COPY, consulte Carregar arquivos de dados criptografados do Amazon S3.
Exemplo: upload de dados criptografados no lado do cliente
Para obter um exemplo de como usar o AWS SDK para Java para carregar dados criptografados do lado do cliente, acesse Proteger dados usando criptografia do lado do cliente no Guia do usuário do Amazon Simple Storage Service.
A segunda opção mostra as escolhas que você deve fazer durante a criptografia do lado do cliente para que os dados possam ser carregados no Amazon Redshift. Especificamente, o exemplo mostra o uso de metadados de objeto para armazenar a chave de envelope criptografada e o uso de uma chave raiz simétrica AES de 256 bits.
Este exemplo fornece código de exemplo usando o AWS SDK para Java para criar uma chave raiz simétrica AES de 256 bits e salvá-la em um arquivo. Em seguida, o exemplo faz upload de um objeto no Amazon S3 usando um cliente de criptografia do S3 que inicialmente criptografa dados de amostra no lado do cliente. O exemplo também baixa objeto e verifica se os dados são os mesmos.