Provedor direto de materiais do KMS - AWS Criptografia de banco SDK

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Provedor direto de materiais do KMS

nota

Nossa biblioteca de criptografia do lado do cliente foi renomeada como SDK de criptografia de banco de dados da AWS. O tópico a seguir fornece informações sobre as versões 1.x—2.x do DynamoDB Encryption Client para Java e versões 1.x—3x do DynamoDB Encryption Client para Python. Para obter mais informações, consulte SDK de criptografia de banco de dados da AWS para obter suporte à versão do DynamoDB.

O Provedor direto de materiais do KMS (Direct KMS Provider) protege os itens da sua tabela sob um AWS KMS key que nunca deixa AWS Key Management Service (AWS KMS) sem criptografia. O provedor de materiais de criptografia retorna uma chave de criptografia exclusiva e uma chave de assinatura para cada item da tabela. Para isso, ele chama o AWS KMS sempre que você criptografa ou descriptografa um item.

Se você estiver processando itens do DynamoDB em alta frequência e em grande escala, poderá exceder os limites de solicitações por segundo do AWS KMS, causando atrasos no processamento. Caso seja necessário ultrapassar esses limites, visite o Centro do AWS Support e crie um caso. Também é possível considerar usar um provedor de materiais criptográficos com reutilização limitada de chaves, como o provedor mais recente.

Para usar o Provedor direto do KMS, o chamador deve ter uma Conta da AWS, pelo menos uma AWS KMS key e permissão para chamar as operações GenerateDataKey e Decrypt na AWS KMS key. O AWS KMS key deve ser uma chave de criptografia simétrica; o DynamoDB Encryption Client não oferece suporte à criptografia assimétrica. Se você estiver usando uma tabela global do DynamoDB, talvez queira especificar uma chave multirregional do AWS KMS. Para obter mais detalhes, consulte Como usar.

nota

Ao usar o Direct KMS Provider, os nomes e os valores dos atributos de chave primária serão exibidos em formato de texto simples no contexto de criptografia do AWS KMS e nos logs do AWS CloudTrail de operações relacionadas do AWS KMS. No entanto, o DynamoDB Encryption Client nunca expõe o texto simples de nenhum valor de atributo criptografado.

O Provedor direto do KMS é um dos vários provedores de materiais de criptografia (CMPs) com suporte do DynamoDB Encryption Client. Para obter informações sobre outros CMPs, consulte Provedor de materiais de criptografia.

Para ver um código de exemplo, consulte:

Como usar

Para criar um Direct KMS Provider, use o parâmetro ID da chave para especificar uma chave do KMS de criptografia simétrica em sua conta. O valor do parâmetro do ID da chave pode ser o ID, o ARN da chave ou um nome de alias ou um ARN de alias do AWS KMS key. Para obter detalhes sobre os identificadores de chave, consulte Identificadores de chave no Guia do desenvolvedor do AWS Key Management Service.

O Direct KMS Provider exige uma chave do KMS de criptografia simétrica. Não é possível usar uma chave do KMS assimétrica. É possível usar uma chave do KMS multirregional, chaves do KMS com material de chave importado ou uma chave do KMS em um armazenamento de chaves personalizado. Você deve ter as permissões kms:GenerateDataKey e kms:Decrypt na chave do KMS. Como tal, você deve usar uma chave gerenciada pelo cliente, não uma chave da AWS gerenciada ou uma chave do KMS de propriedade da AWS.

O DynamoDB Encryption Client for Python determina a região para AWS KMS chamadas da região no valor do parâmetro de ID chave, se ele incluir um. Caso contrário, ela usará a Região no cliente AWS KMS, se você especificar uma, ou a Região que você configura no AWS SDK for Python (Boto3). Para obter informações sobre a seleção de regiões em Python, consulte Configuração na Referência da API do SDK para Python (Boto3) da AWS.

O DynamoDB Encryption Client for Java determina a região para AWS KMS chamadas da região no cliente, se AWS KMS o cliente que você especificar incluir uma região. Caso contrário, ela usa a região que você configura em AWS SDK for Java. Para obter informações sobre a seleção de regiões em AWS SDK for Java, consulte a seleção de Região da AWS no Guia do desenvolvedor do AWS SDK for Java.

Java
// Replace the example key ARN and Region with valid values for your application final String keyArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' final String region = 'us-west-2' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, keyArn);
Python

O exemplo a seguir usa o ARN de chave para especificar o AWS KMS key. Se seu identificador de chave não incluir umRegião da AWS, o DynamoDB Encryption Client obtém a região da sessão de Botocore configurada, se houver, ou dos padrões do Boto.

# Replace the example key ID with a valid value kms_key = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=kms_key)

Se você estiver usando tabelas globais do Amazon DynamoDB, recomendamos que você criptografe seus dados com uma chave multirregional do AWS KMS. As chaves de várias regiões são chaves do AWS KMS keys em diferentes Regiões da AWS que podem ser usadas de forma intercambiável porque têm o mesmo ID de chave e material de chave. Para obter mais detalhes, consulte Usar chaves de várias regiões, no Guia do desenvolvedor do AWS Key Management Service.

nota

Se você estiver usando a versão 2017.11.29 de tabelas globais, deverá definir ações de atributos para que os campos de replicação reservados não sejam criptografados ou assinados. Para obter mais detalhes, consulte Problemas com tabelas globais de versões mais antigas.

Para usar uma chave multirregional com o DynamoDB Encryption Client, crie uma chave multirregional e replique-a nas regiões em que seu aplicativo é executado. Em seguida, configure o Direct KMS Provider para usar a chave multirregional na região em que o DynamoDB Encryption Client faz chamadas para o AWS KMS

O exemplo a seguir configura o DynamoDB Encryption Client para criptografar dados na região Leste dos EUA (Norte da Virgínia) (us-east-1) e descriptografá-los na região Oeste dos EUA (Oregon) (us-west-2).

Java

Neste exemplo, o DynamoDB Encryption Client obtém a região para fazer AWS KMS chamadas da região no cliente do AWS KMS. O valor keyArn identifica uma chave de várias regiões na mesma região.

// Encrypt in us-east-1 // Replace the example key ARN and Region with valid values for your application final String usEastKey = 'arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' final String region = 'us-east-1' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, usEastKey);
// Decrypt in us-west-2 // Replace the example key ARN and Region with valid values for your application final String usWestKey = 'arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' final String region = 'us-west-2' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, usWestKey);
Python

Neste exemplo, o DynamoDB Encryption Client obtém a região para fazer chamadas da região no cliente do AWS KMS na chave ARN.

# Encrypt in us-east-1 # Replace the example key ID with a valid value us_east_key = 'arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=us_east_key)
# Decrypt in us-west-2 # Replace the example key ID with a valid value us_west_key = 'arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=us_west_key)

Como funciona

O provedor direto do KMS retorna as chaves de criptografia e assinatura que são protegidas por um AWS KMS key especificado, conforme exibido no diagrama a seguir.

A entrada, o processamento e a saída de provedor direto do KMS no DynamoDB Encryption Client.
  • Para gerar materiais de criptografia, o provedor direto do KMS solicita ao AWS KMS para gerar uma chave de dados exclusiva para cada item usando um AWS KMS key especificado por você. Ele deriva as chaves de criptografia e de assinatura do item da cópia de texto simples da chave de dados e retorna essas chaves junto com a chave de dados criptografada, que é armazenada no atributo de descrição do material do item.

    O criptografador do item usa as chaves de criptografia e assinatura e as remove da memória o mais rápido possível. Somente a cópia criptografada da chave de dados, da qual eles foram originados, é salva no item criptografado.

  • Para gerar materiais de descriptografia, o provedor direto do KMS solicita que o AWS KMS descriptografe a chave de dados criptografada. Então, ele obtém chaves de verificação e assinatura provenientes da chave de dados em texto simples e as retorna para o criptografador de item.

    O criptografador de item verifica o item e, se a verificação for bem-sucedida, ele descriptografa os valores criptografados. Então, ele remove as chaves da memória o mais rápido possível.

Obter materiais de criptografia

Esta seção descreve detalhadamente as entradas, as saídas e o processamento do provedor direto do KMS quando ele recebe uma solicitação de materiais de criptografia do criptografador de item.

Entrada (do aplicativo)

  • O ID da chave de um AWS KMS key.

Entrada (do criptografador de itens)

Saída (para o criptografador de itens)

  • Chave de criptografia (texto simples)

  • Chave de assinatura

  • Na descrição do material atual: esses valores são salvos no atributo da descrição do material que o cliente adiciona ao item.

    • amzn-ddb-env-key: chave de dados codificada em base64 criptografada pelo AWS KMS key

    • amzn-ddb-env-alg: algoritmo de criptografia, por padrão, AES/256

    • amzn-ddb-sig-alg: algoritmo de assinatura, por padrão, HmacSHA256/256

    • amzn-ddb-wrap-alg: kms

Processamento

  1. O Direct KMS Provider envia uma solicitação ao AWS KMS para usar a AWS KMS key especificada para gerar uma chave de dados exclusiva para o item. A operação retorna uma chave de texto simples e uma cópia criptografada de acordo com a AWS KMS key. Essa operação também é conhecida como o material de chave inicial.

    A solicitação inclui os seguintes valores em texto simples no contexto de criptografia do AWS KMS. Esses valores não confidenciais estão vinculados de maneira criptográfica ao objeto criptografado, assim, o mesmo contexto de criptografia será necessário na descriptografia. Você pode usar esses valores para identificar a chamada ao AWS KMS nos logs do AWS CloudTrail.

    • amzn-ddb-env-alg – Algoritmo de criptografia, por padrão, AES/256

    • amzn-ddb-sig-alg – Algoritmo de assinatura, por padrão, HmacSHA256/256

    • (Opcional) aws-kms-table - nome da tabela

    • (Opcional) nome da chave de partição - valor da chave de partição (os valores binários são codificados em Base64)

    • (Opcional) nome da chave de classificação - valor da chave de classificação (os valores binários são codificados em Base64)

    O Direct KMS Provider obtém os valores para o contexto de criptografia do AWS KMS no contexto de criptografia do DynamoDB para o item. Se o contexto de criptografia do DynamoDB não incluir um valor, como o nome da tabela, o par de nome-valor será omitido do contexto de criptografia do AWS KMS.

  2. O provedor direto do KMS obtém uma chave de criptografia simétrica e uma chave de assinatura a partir da chave de dados. Por padrão, ele usa o Secure Hash Algorithm (SHA – Algoritmo seguro de hash) 256 e a Função de derivação da chave baseada em HMAC RFC5869 para obter uma chave de criptografia simétrica AES de 256 bits e uma chave de assinatura HMAC-SHA-256 de 256 bits.

  3. O provedor direto do KMS retorna a saída para o criptografador do item.

  4. O criptografador do item usa a chave de criptografia para criptografar os atributos especificados e a chave de assinatura para assiná-los, usando os algoritmos especificados na real descrição do material. Ele remove as chaves de texto simples da memória o mais rápido possível.

Obter materiais de descriptografia

Esta seção descreve detalhadamente as entradas, as saídas e o processamento do provedor direto do KMS quando ele recebe uma solicitação de materiais de descriptografia do criptografador de itens.

Entrada (do aplicativo)

  • O ID da chave de um AWS KMS key.

    O valor do ID da chave pode ser o ID, o ARN da chave ou um nome de alias ou um ARN de alias do AWS KMS key. Todos os valores que não forem incluídos no ID, como a região, deverão estar disponíveis no perfil nomeado da AWS. O ARN da chave fornece todos os valores necessários para o AWS KMS.

Entrada (do criptografador de itens)

Saída (para o criptografador de itens)

  • Chave de criptografia (texto simples)

  • Chave de assinatura

Processamento

  1. O Direct KMS Provider obtém a chave de dados criptografada a partir do atributo de descrição do material no item criptografado.

  2. Ele solicita que o AWS KMS use a AWS KMS key especificada para descriptografar a chave de dados criptografada. A operação retorna uma chave de texto simples.

    Essa solicitação deve usar o mesmo contexto de criptografia do AWS KMS que foi usado para gerar e criptografar a chave de dados.

    • aws-kms-table - nome da tabela

    • nome da chave de partição - valor da chave de partição (os valores binários são codificados em Base64)

    • (Opcional) nome da chave de classificação - valor da chave de classificação (os valores binários são codificados em Base64)

    • amzn-ddb-env-alg – Algoritmo de criptografia, por padrão, AES/256

    • amzn-ddb-sig-alg – Algoritmo de assinatura, por padrão, HmacSHA256/256

  3. O provedor direto do KMS usa o Secure Hash Algorithm (SHA – Algoritmo seguro de hash) 256 e a Função de derivação da chave baseada em HMAC RFC5869 para obter uma chave de criptografia simétrica AES de 256 bits e uma chave de assinatura HMAC-SHA-256 de 256 bits a partir da chave de dados.

  4. O provedor direto do KMS retorna a saída para o criptografador do item.

  5. O criptografador do item usa a chave de assinatura para verificar o item. Se ele for bem-sucedido, usará a chave de criptografia simétrica para descriptografar os valores de atributos criptografados. Essas operações usam os algoritmos de criptografia e assinatura especificados na real descrição material. O criptografador do item remove as chaves de texto simples da memória o mais rápido possível.