Configurar uma tabela existente do DynamoDB para usar AWS a criptografia de banco de dados para o DynamoDB SDK - 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á.

Configurar uma tabela existente do DynamoDB para usar AWS a criptografia de banco de dados para o DynamoDB SDK

Com a versão 3. x do. NETbiblioteca de criptografia do lado do cliente para o DynamoDB, você pode configurar suas tabelas existentes do Amazon DynamoDB para criptografia do lado do cliente. Este tópico fornece orientação sobre as três etapas que você deve seguir para adicionar a versão 3.x para uma tabela existente e preenchida do DynamoDB.

Etapa 1: preparar para ler e gravar itens criptografados

Conclua as etapas a seguir para preparar seu SDK cliente AWS de criptografia de banco de dados para ler e gravar itens criptografados. Depois de implantar as alterações a seguir, seu cliente continuará lendo e gravando itens de texto simples. Ele não criptografará nem assinará nenhum novo item gravado na tabela, mas poderá descriptografar itens criptografados assim que eles aparecerem. Essas mudanças preparam o cliente para começar a criptografar novos itens. As alterações a seguir devem ser implantadas em cada leitor antes de prosseguir para a próxima etapa.

1. Definir suas ações de atributos

Crie um modelo de objeto para definir quais valores de atributos serão criptografados e assinados, quais serão somente assinados e quais serão ignorados.

Por padrão, os atributos da chave primária são assinados, mas não criptografados (SIGN_ONLY), e todos os outros atributos são criptografados e assinados (ENCRYPT_AND_SIGN).

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 e atribuir e incluí-los no contexto de criptografia. Não é possível criptografar um atributo sem também assiná-lo. Especifique DO_NOTHING para ignorar um atributo. Para obter mais informações, consulte Ações de atributos na criptografia de AWS banco de dados SDK para DynamoDB.

nota

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 };
2. 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 presumirá 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 = ":";
3. Criar um token de autenticação

O exemplo a seguir cria um token de autenticação do AWS KMS. O AWS KMS chaveiro usa criptografia simétrica ou assimétrica RSA AWS KMS keys para gerar, criptografar e descriptografar chaves de dados.

Este exemplo é usado CreateMrkMultiKeyring 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);
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.

Você deve especificar FORCE_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT como substituição de texto simples. Essa política continua lendo e gravando itens de texto simples, lendo itens criptografados e preparando o cliente para gravar itens criptografados.

Para obter mais informações sobre os valores incluídos na configuração de criptografia da tabela, consulteConfiguração de criptografia no AWS Database Encryption SDK for DynamoDB.

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, PlaintextOverride = FORCE_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT }; tableConfigs.Add(ddbTableName, config);
5. Crie 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 2: gravar itens criptografados e assinados

Atualize a política de texto simples em sua configuração de criptografia de tabela para permitir que o cliente grave itens criptografados e assinados. Depois de implantar a seguinte alteração, o cliente criptografará e assinará novos itens com base nas ações de atributos que você configurou na Etapa 1. O cliente poderá ler itens de texto simples e itens criptografados e assinados.

Antes de prosseguir para a Etapa 3, você deve criptografar e assinar todos os itens de texto sem formatação existentes em sua tabela. Não há uma única métrica ou consulta que você possa executar para criptografar rapidamente seus itens de texto sem formatação existentes. Use o processo que faz mais sentido para o seu sistema. Por exemplo, é possível usar um processo assíncrono que varre lentamente a tabela e reescreve os itens usando as ações de atributos e a configuração de criptografia que você definiu. Para identificar os itens de texto simples em sua tabela, recomendamos escanear todos os itens que não contenham os aws_dbe_foot atributos aws_dbe_head e que a Criptografia de AWS Banco de Dados SDK adiciona aos itens quando eles são criptografados e assinados.

O exemplo a seguir atualiza a configuração de criptografia de tabela da Etapa 1. Você deve atualizar a substituição de texto simples com FORBID_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT. Essa política continua lendo itens de texto simples, mas também lê e grava itens criptografados. Crie um novo cliente do AWS SDK DynamoDB usando o atualizado. TableEncryptionConfigs

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, PlaintextOverride = FORBID_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT }; tableConfigs.Add(ddbTableName, config);

Etapa 3: somente ler itens criptografados e assinados

Depois de criptografar e assinar todos os seus itens, atualize a substituição de texto simples em sua configuração de criptografia de tabela para permitir que o cliente leia e grave somente itens criptografados e assinados. Depois de implantar a seguinte alteração, o cliente criptografará e assinará novos itens com base nas ações de atributos que você configurou na Etapa 1. O cliente só poderá ler itens criptografados e assinados.

O exemplo a seguir atualiza a configuração de criptografia de tabela da Etapa 2. É possível atualizar a substituição de texto sem formatação com FORBID_WRITE_PLAINTEXT_FORBID_READ_PLAINTEXT ou remover a política de texto sem formatação da sua configuração. Por padrão, o cliente só lê e grava itens criptografados e assinados. Crie um novo cliente do AWS SDK DynamoDB usando o atualizado. TableEncryptionConfigs

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: you can also remove the plaintext policy from your configuration PlaintextOverride = FORBID_WRITE_PLAINTEXT_FORBID_READ_PLAINTEXT }; tableConfigs.Add(ddbTableName, config);