Uso do DynamoDB Encryption Client para Python - 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á.

Uso do DynamoDB Encryption Client para Python

nota

Nossa biblioteca de criptografia do lado do cliente foi renomeada para AWS Database Encryption. SDK 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 AWS Database Encryption SDK for DynamoDB para suporte à versão.

Este tópico explica alguns dos recursos do DynamoDB Encryption Client para Python que talvez não sejam encontrados em outras implementações de linguagem de programação. Esses atributos são projetados para facilitar o uso do DynamoDB Encryption Client da forma mais confiável possível. A menos que você tenha um caso de uso incomum, recomendamos que você os use.

Para obter detalhes sobre a programação com o DynamoDB Encryption Client, consulte os exemplos do Python neste guia, os exemplos no repositório GitHub e a documentação do Python para aws-dynamodb-encryption-python o DynamoDB Encryption Client.

Classes auxiliares do cliente

O DynamoDB Encryption Client para Python inclui várias classes auxiliares do cliente que espelham as classes do Boto 3 para o DynamoDB. Essas classes auxiliares são projetadas para facilitar a adição da criptografia e da assinatura ao seu aplicativo DynamoDB existente e evitar os problemas mais comuns:

  • Evite que você criptografe a chave primária em seu item, adicionando uma ação de substituição da chave primária ao AttributeActionsobjeto ou lançando uma exceção se seu AttributeActions objeto solicitar explicitamente ao cliente que criptografe a chave primária. Se a ação padrão no objeto AttributeActions for DO_NOTHING, as classes auxiliares do cliente usarão a ação para a chave primária. Caso contrário, eles usarão SIGN_ONLY.

  • Crie um TableInfo objeto e preencha o contexto de criptografia do DynamoDB com base em uma chamada para o DynamoDB. Isso ajuda a garantir que o contexto de criptografia do DynamoDB seja preciso e o cliente possa identificar a chave primária.

  • Métodos de suporte, como put_item e get_item, que criptografam e descriptografam de modo transparente os itens da tabela quando você grava ou lê em uma tabela do DynamoDB. Somente o método update_item não é compatível.

É possível usar a classe auxiliar do cliente em vez de interagir diretamente com o criptografador de itens de nível inferior. Use essas classes a menos que você precise definir opções avançadas no criptografador do item.

As classes auxiliares do cliente incluem:

Para usar as classes auxiliares do cliente, o chamador deve ter permissão para chamar a operação do DynamoDB na tabela de destino. DescribeTable

TableInfo classe

A TableInfoclasse é uma classe auxiliar que representa uma tabela do DynamoDB, completa com campos para sua chave primária e índices secundários. Com ela, você pode obter informações precisas e em tempo real sobre a tabela.

Se você utilizar uma classe auxiliar do cliente, ela criará e usará um objeto TableInfo para você. Caso contrário, você pode criar um explicitamente. Para ver um exemplo, consulte Usar o criptografador de item.

Quando você chama o refresh_indexed_attributes método em um TableInfo objeto, ele preenche os valores da propriedade do objeto chamando a operação do DynamoDB. DescribeTable Consultar a tabela é muito mais confiável que consultar os nomes de índice de hard-coding. A classe TableInfo também inclui uma propriedade encryption_context_values que fornece os valores necessários para o contexto de criptografia do DynamoDB.

Para usar o refresh_indexed_attributes método, o chamador deve ter permissão para chamar a operação do DescribeTableDynamoDB na tabela de destino.

Ações de atributos em Python

As Ações de atributos informam ao criptografador de itens quais ações executar em cada atributo de item. Para especificar ações de atributo em Python, crie um objeto AttributeActions com uma ação padrão e todas as exceções dos atributos específicos. Os valores válidos estão definidos no tipo enumerado CryptoAction.

Importante

Depois de usar as ações do atributo para criptografar os itens da tabela, adicionar ou remover atributos do modelo de dados poderá gerar um erro de validação de assinatura que impede a descriptografia dos dados. Para obter uma explicação detalhada, consulte Alterar seu modelo de dados.

DO_NOTHING = 0 SIGN_ONLY = 1 ENCRYPT_AND_SIGN = 2

Por exemplo, o objeto AttributeActions estabelece ENCRYPT_AND_SIGN como o padrão para todos os atributos e define as exceções para os atributos ISBN e PublicationYear.

actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, attribute_actions={ 'ISBN': CryptoAction.DO_NOTHING, 'PublicationYear': CryptoAction.SIGN_ONLY } )

Se você usar uma classe auxiliar do cliente, não será necessário especificar uma ação de atributo para os atributos de chave primária. As classes auxiliares do cliente evitam que você criptografe sua chave primária.

Se você não utiliza uma classe auxiliar do cliente e a ação padrão é ENCRYPT_AND_SIGN, é necessário especificar uma ação para a chave primária. A ação recomendada para chaves primárias é SIGN_ONLY. Para facilitar isso, use o set_index_keys método, que usa SIGN _ ONLY para chaves primárias, ou DO_NOTHING, quando essa for a ação padrão.

Atenção

Não criptografe os atributos da chave primária. Eles devem permanecer em texto simples para que o DynamoDB possa encontrar o item sem executar uma varredura completa da tabela.

actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, ) actions.set_index_keys(*table_info.protected_index_keys())