Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

. NETexemplos - 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á.

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á.

. NETexemplos

Os exemplos a seguir mostram como usar o. NETbiblioteca de criptografia do lado do cliente para o DynamoDB para proteger os itens da tabela em seu aplicativo. Para encontrar mais exemplos (e contribuir com os seus), consulte o. NETexemplos no repositório aws-database-encryption-sdk -dynamodb ativado. GitHub

Os exemplos a seguir demonstram como configurar o. NETbiblioteca de criptografia do lado do cliente para o DynamoDB em uma nova tabela não preenchida do Amazon DynamoDB. Se você quiser configurar suas tabelas existentes do Amazon DynamoDB para criptografia do lado do cliente, consulte Adicionar versão 3.x a uma tabela existente.

Usando a criptografia de AWS banco de dados de baixo nível SDK para o DynamoDB API

O exemplo a seguir mostra como usar a criptografia de AWS banco de dados de baixo nível SDK para o API DynamoDB com AWS KMS um chaveiro para criptografar e assinar automaticamente itens do lado do cliente com suas solicitações do DynamoDB. PutItem

Você pode usar qualquer chaveiro compatível, mas recomendamos usar um dos AWS KMS chaveiros sempre que possível.

Veja o exemplo de código completo: BasicPutGetExample.cs

Etapa 1: criar o AWS KMS chaveiro

O exemplo a seguir é usado CreateAwsKmsMrkMultiKeyring para criar um AWS KMS chaveiro com uma chave de criptografia KMS simétrica. O método CreateAwsKmsMrkMultiKeyring garante que o token de autenticação manipule corretamente chaves de região única e de várias regiões.

var matProv = new MaterialProviders(new MaterialProvidersConfig()); var keyringInput = new CreateAwsKmsMrkMultiKeyringInput { Generator = kmsKeyId }; var kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
Etapa 2: Configurar ações de atributos

O exemplo a seguir define um attributeActionsOnEncrypt dicionário que representa exemplos de ações de atributos para um item da tabela.

nota

O exemplo a seguir não define nenhum atributo comoSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT. Se você especificar algum SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT atributo, os atributos de partição e classificação também deverão serSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT.

var attributeActionsOnEncrypt = new Dictionary<string, CryptoAction> { ["partition_key"] = CryptoAction.SIGN_ONLY, // The partition attribute must be SIGN_ONLY ["sort_key"] = CryptoAction.SIGN_ONLY, // The sort attribute must be SIGN_ONLY ["attribute1"] = CryptoAction.ENCRYPT_AND_SIGN, ["attribute2"] = CryptoAction.SIGN_ONLY, [":attribute3"] = CryptoAction.DO_NOTHING };
Etapa 3: definir quais atributos são excluídos das assinaturas

O exemplo a seguir pressupõe que todos os atributos DO_NOTHING compartilham o prefixo distinto ":" e usam o prefixo para definir os atributos não assinados permitidos. O cliente presume que qualquer nome de atributo com o prefixo ":" está excluído das assinaturas. Para obter mais informações, consulte Allowed unsigned attributes.

const String unsignAttrPrefix = ":";
Etapa 4: definir a configuração de criptografia de tabelas do DynamoDB

O exemplo a seguir define um mapa tableConfigs que representa a configuração de criptografia dessa tabela do DynamoDB.

Este exemplo especifica o nome da tabela do DynamoDB como o nome lógico da tabela. É 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. Para obter mais informações, consulte Configuração de criptografia no AWS Database Encryption SDK for DynamoDB.

nota

Para usar criptografia pesquisável ou beacons assinados, você também deve incluir SearchConfig na configuração de criptografia.

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 }; tableConfigs.Add(ddbTableName, config);
Etapa 5: criar um novo cliente do AWS SDK DynamoDB

O exemplo a seguir cria um novo cliente do AWS SDK DynamoDB usando TableEncryptionConfigs o da Etapa 4.

var ddb = new Client.DynamoDbClient( new DynamoDbTablesEncryptionConfig { TableEncryptionConfigs = tableConfigs });
Etapa 6: criptografar e assinar um item de tabela do DynamoDB

O exemplo a seguir define um item dicionário que representa um item de tabela de amostra e coloca o item na tabela do DynamoDB. O item é criptografado e assinado no lado do cliente antes de ser enviado ao DynamoDB.

var item = new Dictionary<String, AttributeValue> { ["partition_key"] = new AttributeValue("BasicPutGetExample"), ["sort_key"] = new AttributeValue { N = "0" }, ["attribute1"] = new AttributeValue("encrypt and sign me!"), ["attribute2"] = new AttributeValue("sign me!"), [":attribute3"] = new AttributeValue("ignore me!") }; PutItemRequest putRequest = new PutItemRequest { TableName = ddbTableName, Item = item }; PutItemResponse putResponse = await ddb.PutItemAsync(putRequest);

Usando o nível inferior DynamoDbItemEncryptor

O exemplo a seguir mostra como usar o nível inferior de DynamoDbItemEncryptor com um token de autenticação do AWS KMS para criptografar e assinar diretamente os itens da tabela. O DynamoDbItemEncryptor não coloca o item na tabela do DynamoDB.

Você pode usar qualquer chaveiro compatível com o DynamoDB Enhanced Client, mas recomendamos usar um dos AWS KMS chaveiros sempre que possível.

nota

O nível inferior do DynamoDbItemEncryptor não oferece suporte à criptografia pesquisável. Use a criptografia de AWS banco de dados de baixo nível para o API DynamoDB SDK para usar a criptografia pesquisável.

Veja o exemplo de código completo: ItemEncryptDecryptExample.cs

Etapa 1: criar o AWS KMS chaveiro

O exemplo a seguir é usado CreateAwsKmsMrkMultiKeyring para criar um AWS KMS chaveiro com uma chave de criptografia KMS simétrica. O método CreateAwsKmsMrkMultiKeyring garante que o token de autenticação manipule corretamente chaves de região única e de várias regiões.

var matProv = new MaterialProviders(new MaterialProvidersConfig()); var keyringInput = new CreateAwsKmsMrkMultiKeyringInput { Generator = kmsKeyId }; var kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
Etapa 2: Configurar ações de atributos

O exemplo a seguir define um attributeActionsOnEncrypt dicionário que representa exemplos de ações de atributos para um item da tabela.

nota

O exemplo a seguir não define nenhum atributo comoSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT. Se você especificar algum SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT atributo, os atributos de partição e classificação também deverão serSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT.

var attributeActionsOnEncrypt = new Dictionary<String, CryptoAction> { ["partition_key"] = CryptoAction.SIGN_ONLY, // The partition attribute must be SIGN_ONLY ["sort_key"] = CryptoAction.SIGN_ONLY, // The sort attribute must be SIGN_ONLY ["attribute1"] = CryptoAction.ENCRYPT_AND_SIGN, ["attribute2"] = CryptoAction.SIGN_ONLY, [":attribute3"] = CryptoAction.DO_NOTHING };
Etapa 3: definir quais atributos são excluídos das assinaturas

O exemplo a seguir pressupõe que todos os atributos DO_NOTHING compartilham o prefixo distinto ":" e usam o prefixo para definir os atributos não assinados permitidos. O cliente presume que qualquer nome de atributo com o prefixo ":" está excluído das assinaturas. Para obter mais informações, consulte Allowed unsigned attributes.

String unsignAttrPrefix = ":";
Etapa 4: definir a configuração de DynamoDbItemEncryptor

O exemplo a seguir define a configuração para DynamoDbItemEncryptor.

Este exemplo especifica o nome da tabela do DynamoDB como o nome lógico da tabela. É 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. Para obter mais informações, consulte Configuração de criptografia no AWS Database Encryption SDK for DynamoDB.

var config = new DynamoDbItemEncryptorConfig { LogicalTableName = ddbTableName, PartitionKeyName = "partition_key", SortKeyName = "sort_key", AttributeActionsOnEncrypt = attributeActionsOnEncrypt, Keyring = kmsKeyring, AllowedUnsignedAttributePrefix = unsignAttrPrefix };
Etapa 5: criar o perfil do DynamoDbItemEncryptor

O exemplo a seguir cria um novo DynamoDbItemEncryptor usando config da Etapa 4.

var itemEncryptor = new DynamoDbItemEncryptor(config);
Etapa 6: criptografar e assinar diretamente um item da tabela

O exemplo a seguir criptografa e assina diretamente um item usando o DynamoDbItemEncryptor. O DynamoDbItemEncryptor não coloca o item na tabela do DynamoDB.

var originalItem = new Dictionary<String, AttributeValue> { ["partition_key"] = new AttributeValue("ItemEncryptDecryptExample"), ["sort_key"] = new AttributeValue { N = "0" }, ["attribute1"] = new AttributeValue("encrypt and sign me!"), ["attribute2"] = new AttributeValue("sign me!"), [":attribute3"] = new AttributeValue("ignore me!") }; var encryptedItem = itemEncryptor.EncryptItem( new EncryptItemInput { PlaintextItem = originalItem } ).EncryptedItem;
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.