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á.
Usando o. NETbiblioteca de criptografia do lado do cliente para DynamoDB
Este tópico explica algumas das funções e classes auxiliares na versão 3. x do. NETbiblioteca de criptografia do lado do cliente para o DynamoDB.
Para obter detalhes sobre a programação com o. NETbiblioteca de criptografia do lado do cliente para o DynamoDB, consulte o. NET
Criptografadores de itens
Em essência, o AWS Database Encryption SDK for DynamoDB é um criptografador de itens. Você pode usar a versão 3. x do. NETbiblioteca de criptografia do lado do cliente para que o DynamoDB criptografe, assine, verifique e descriptografe os itens da tabela do DynamoDB das seguintes formas.
- A criptografia de AWS banco de dados de baixo nível SDK para o DynamoDB API
-
Você pode usar sua configuração de criptografia de tabela para criar um cliente do DynamoDB que criptografe e assine automaticamente itens do lado do cliente com suas solicitações do DynamoDB.
PutItem
Você pode usar esse cliente diretamente ou criar um modelo de documento ou modelo de persistência de objetos. - O
DynamoDbItemEncryptor
de nível inferior -
O
DynamoDbItemEncryptor
de nível inferior criptografa, assina ou descriptografa e verifica diretamente os itens da tabela sem chamar o DynamoDB. Ele não faz solicitaçõesPutItem
ouGetItem
para o DynamoDB. Por exemplo, é possível usar oDynamoDbItemEncryptor
de nível inferior para descriptografar e verificar diretamente um item do DynamoDB que você já recuperou. Se você usar o nível inferiorDynamoDbItemEncryptor
, recomendamos usar o modelo de programação de baixo nível AWS SDK for .NET fornecido para comunicação com o DynamoDB.O nível inferior do
DynamoDbItemEncryptor
não oferece suporte à criptografia pesquisável.
Ações de atributos na criptografia de AWS banco de dados SDK para DynamoDB
As ações de atributo determinam quais valores de atributos são criptografados e assinados, quais são somente assinados, quais são assinados e incluídos no contexto de criptografia e quais são ignorados.
Para especificar ações de atributos com o. NETcliente, defina manualmente as ações de atributos usando um modelo de objeto. Especifique suas ações de atributo criando um Dictionary
objeto no qual os pares nome-valor representam os nomes dos atributos e as ações especificadas.
Especifique ENCRYPT_AND_SIGN
para criptografar e assinar um atributo. Especifique SIGN_ONLY
para assinar, mas não criptografar um atributo. Especifique SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
para assinar um atributo e incluí-lo no contexto de criptografia. Não é possível criptografar um atributo sem também assiná-lo. Especifique DO_NOTHING
para ignorar um atributo.
Os atributos de partição e classificação devem ser SIGN_ONLY
ouSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
. Se você definir qualquer atributo comoSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
, os atributos de partição e classificação também deverão serSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
.
nota
Depois de definir suas ações de atributo, você deverá definir quais atributos serão excluídos das assinaturas. Para facilitar a adição de novos atributos não assinados no futuro, recomendamos escolher um prefixo distinto (como ":
") para identificar os atributos não assinados. Inclua esse prefixo no nome do atributo para todos os atributos marcados como DO_NOTHING
ao definir o esquema e as ações de atributos do DynamoDB.
O modelo de objeto a seguir demonstra como especificarENCRYPT_AND_SIGN
, SIGN_ONLY
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
, e DO_NOTHING
atribuir ações com o. NETcliente. Este exemplo usa o prefixo ":
" para identificar DO_NOTHING
atributos.
nota
Para usar a ação SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
criptográfica, você deve usar a versão 3.3 ou posterior da Criptografia SDK de AWS Banco de Dados. Implante a nova versão para todos os leitores antes de atualizar seu modelo de dados para incluí-laSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
.
var attributeActionsOnEncrypt = new Dictionary<string, CryptoAction> { ["partition_key"] = CryptoAction.SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, // The partition attribute must be signed ["sort_key"] = CryptoAction.SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, // The sort attribute must be signed ["attribute1"] = CryptoAction.ENCRYPT_AND_SIGN, ["attribute2"] = CryptoAction.SIGN_ONLY, ["attribute3"] = CryptoAction.SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, [":attribute4"] = CryptoAction.DO_NOTHING };
Configuração de criptografia no AWS Database Encryption SDK for DynamoDB
Ao usar a criptografia AWS de banco de dadosSDK, você deve definir explicitamente uma configuração de criptografia para sua tabela do DynamoDB. Os valores necessários em sua configuração de criptografia dependem se você definiu suas ações de atributo manualmente ou com uma classe de dados anotada.
O trecho a seguir define uma configuração de criptografia de tabela do DynamoDB usando a criptografia de banco de dados de baixo nível para o SDK DynamoDB e atributos não AWS assinados permitidos definidos por um prefixo API distinto.
Dictionary<String, DynamoDbTableEncryptionConfig> tableConfigs = new Dictionary<String, DynamoDbTableEncryptionConfig>(); DynamoDbTableEncryptionConfig config = new DynamoDbTableEncryptionConfig { LogicalTableName = ddbTableName, PartitionKeyName = "partition_key", SortKeyName = "sort_key", AttributeActionsOnEncrypt = attributeActionsOnEncrypt, Keyring = kmsKeyring, AllowedUnsignedAttributePrefix = unsignAttrPrefix, // Optional: SearchConfig only required if you use beacons Search = new SearchConfig { WriteVersion = 1, // MUST be 1 Versions = beaconVersions } }; tableConfigs.Add(ddbTableName, config);
- Nome da tabela lógica
-
Um nome de tabela lógica para sua tabela do DynamoDB.
O nome da tabela lógica é vinculado criptograficamente a todos os dados armazenados na tabela para simplificar as operações de restauração do DynamoDB. É altamente recomendável especificar o nome da tabela do DynamoDB como o nome lógico da tabela ao definir a configuração de criptografia pela primeira vez. Você deve sempre especificar o mesmo nome de tabela lógica. Para que a descriptografia seja bem-sucedida, o nome da tabela lógica deve corresponder ao nome especificado na criptografia. Se o nome da tabela do DynamoDB mudar após a restauração da tabela do DynamoDB a partir de um backup, o nome da tabela lógica garantirá que a operação de descriptografia ainda reconheça a tabela.
- Atributos não assinados permitidos
-
Os atributos marcados
DO_NOTHING
em suas ações de atributos.Os atributos não assinados permitidos informam ao cliente quais atributos são excluídos das assinaturas. O cliente presume que todos os outros atributos estão incluídos na assinatura. Em seguida, ao descriptografar um registro, o cliente determina quais atributos ele precisa verificar e quais ignorar dos atributos não assinados permitidos que você especificou. Não é possível remover um atributo dos atributos não assinados permitidos.
É possível definir explicitamente os atributos não assinados permitidos criando uma matriz que lista todos os atributos
DO_NOTHING
. Também é possível especificar um prefixo distinto ao nomear os atributosDO_NOTHING
e usar o prefixo para informar ao cliente quais atributos não estão assinados. É altamente recomendável especificar um prefixo distinto, pois isso simplifica o processo de adicionar um novo atributoDO_NOTHING
no futuro. Para obter mais informações, consulte Atualizar seu modelo de dados.Se você não especificar um prefixo para todos os atributos
DO_NOTHING
, poderá configurar uma matrizallowedUnsignedAttributes
que liste explicitamente todos os atributos que o cliente deve esperar que não estejam assinados ao encontrá-los na descriptografia. Você só deve definir explicitamente seus atributos não assinados permitidos se for absolutamente necessário. - Configuração de pesquisa (opcional)
-
O
SearchConfig
define a versão do beacon.O
SearchConfig
deve ser especificado para usar criptografia pesquisável ou beacons assinados. - Suíte de algoritmos (opcional)
-
O
algorithmSuiteId
define qual conjunto de algoritmos a criptografia AWS de banco de dados SDK usa.A menos que você especifique explicitamente um conjunto alternativo de algoritmos, o AWS Database Encryption SDK usa o conjunto de algoritmos padrão. O conjunto de algoritmos padrão usa o GCM algoritmo AES - com derivação de chaves, assinaturas digitais e comprometimento de chaves. Embora o pacote de algoritmos padrão seja adequado para a maioria das aplicações, você pode escolher um conjunto alternativo de algoritmos. Por exemplo, alguns modelos de confiança seriam satisfeitos com um pacote de algoritmos sem assinaturas digitais. Para obter informações sobre os conjuntos de algoritmos que a criptografia AWS de banco de dados SDK suporta, consulteSuítes de algoritmos compatíveis no SDK AWS de criptografia de banco de dados.
Para selecionar o conjunto de GCM algoritmos AES - sem assinaturas ECDSA digitais, inclua o seguinte trecho em sua configuração de criptografia de tabela.
AlgorithmSuiteId = DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384
Atualizando itens com a criptografia AWS de banco de dados SDK
A criptografia AWS de banco de dados SDK não suporta ddb: UpdateItem para itens que incluem atributos criptografados ou assinados. Para atualizar um atributo criptografado ou assinado, você deve usar ddb: PutItem. Se algum item existir em uma tabela específica com a mesma chave primária de um item existente na consulta PutItem
, o novo item substituirá completamente o item já existente. Você também pode usar CLOBBERpara limpar e substituir todos os atributos ao salvar depois de atualizar seus itens.