Notas de uso da criptografia em repouso do DynamoDB - Amazon DynamoDB

Notas de uso da criptografia em repouso do DynamoDB

Considere o seguinte ao usar criptografia em repouso no Amazon DynamoDB:

Todos os dados da tabela são criptografados

A criptografia em repouso no lado do servidor está habilitada em todos os dados de tabelas do DynamoDB e não pode ser desabilitada. Não é possível criptografar apenas um subconjunto de itens em uma tabela.

A criptografia em repouso só criptografa dados enquanto eles estão estáticos (em repouso) em uma mídia de armazenamento persistente. Se a segurança dos dados for motivo de preocupação para dados em trânsito ou dados em uso, talvez seja necessário tomar outras medidas:

  • Dados em trânsito: todos os dados no DynamoDB são criptografados em trânsito. Por padrão, as comunicações com o DynamoDB usam o protocolo HTTPS, o qual protege o tráfego de rede usando a criptografia Secure Sockets Layer (SSL)/Transport Layer Security (TLS).

  • Dados em uso: proteja seus dados antes de enviá-los ao DynamoDB usando criptografia do lado do cliente. Para obter mais informações, consulte Criptografia do lado do cliente e do lado do servidor no Guia do desenvolvedor do Amazon DynamoDB Encryption Client.

É possível pode usar fluxos com tabelas criptografadas. Os fluxos do DynamoDB são sempre criptografados com uma chave de criptografia em nível de tabela. Para ter mais informações, consulte Capturar dados de alterações para o DynamoDB Streams.

Os backups do DynamoDB são criptografados, e a tabela que é restaurada de um backup também tem a criptografia habilitada. É possível usar a Chave pertencente à AWS, a Chave gerenciada pela AWS ou a chave gerenciada pelo cliente para criptografar seus dados de backup. Para ter mais informações, consulte Usar backup e restauração sob demanda para o DynamosDB.

Os índices secundários locais e os índices secundários globais são criptografados usando a mesma chave da tabela-base.

Tipos de criptografia

nota

As chaves gerenciadas pelo cliente não são compatíveis com a tabela global versão 2017. Se quiser usar uma chave gerenciada pelo cliente em uma tabela global do DynamoDB, você deverá atualizar a tabela para a Tabela global versão 2019 e habilitá-la.

No AWS Management Console, o tipo de criptografia é KMS quando você usa a Chave gerenciada pela AWS ou a chave gerenciada pelo cliente para criptografar seus dados. O tipo de criptografia é DEFAULT quando você usa a Chave pertencente à AWS. Na API do Amazon DynamoDB, o tipo de criptografia é KMS quando a Chave gerenciada pela AWS ou a chave gerenciada pelo cliente é usada. Na ausência do tipo de criptografia, seus dados são criptografados usando a Chave pertencente à AWS. É possível alternar entre a Chave pertencente à AWS, a Chave gerenciada pela AWS e a chave gerenciada pelo cliente a qualquer momento. Você pode usar o console, a AWS Command Line Interface (AWS CLI) ou a API do Amazon DynamoDB para alternar as chaves de criptografia.

Observe as seguintes limitações ao usar chaves gerenciadas pelo cliente:

  • Não é possível usar uma chave gerenciada pelo cliente com clusters do DynamoDB Accelerator (DAX). Para ter mais informações, consulte Criptografia em repouso do DAX .

  • É possível usar uma chave gerenciada pelo cliente para criptografar tabelas que usam transações. No entanto, para garantir a durabilidade da propagação das transações, uma cópia da solicitação da transação é temporariamente armazenada pelo serviço e criptografada usando uma Chave pertencente à AWS. Os dados confirmados em suas tabelas e índices secundários são sempre criptografados em repouso usando a chave gerenciada pelo cliente.

  • É possível usar uma chave gerenciada pelo cliente para criptografar tabelas que usam o Contributor Insights. No entanto, os dados transmitidos ao Amazon CloudWatch são criptografados com uma Chave pertencente à AWS.

  • Ao fazer a transição para uma nova chave gerenciada pelo cliente, mantenha a chave original ativada até que o processo seja concluído. O AWS ainda precisará da chave original para descriptografar os dados antes de criptografá-los com a nova chave. O processo será concluído quando o Status SSEDescription da tabela estiver HABILITADO e o KMSMasterKeyArn da nova chave gerenciada pelo cliente for exibido. Nesse momento, a chave original pode ser desativada ou programada para exclusão.

  • Depois que a nova chave gerenciada pelo cliente é exibida, a tabela e quaisquer novos backups sob demanda são criptografados com a nova chave.

  • Todos os backups sob demanda existentes permanecem criptografados com a chave gerenciada pelo cliente que foi usada quando esses backups foram criados. Você precisará dessa mesma chave para restaurar os backups. Você pode identificar a chave para o período em que cada backup foi criado usando a API DescribeBackup para exibir a SSEDescription desse backup.

  • Se você desabilitar sua chave gerenciada pelo cliente ou programá-la para exclusão, qualquer dado no DynamoDB Streams ainda estará sujeito a uma vida útil de 24 horas. Qualquer dado de atividade não recuperado é elegível para remoção quando tiver mais de 24 horas.

  • Se você desabilitar sua chave gerenciada pelo cliente ou programá-la para exclusão, as exclusões por vida útil (TTL) continuarão por 30 minutos. Essas exclusões do TTL continuarão a ser emitidas ao DynamoDB Streams e estarão sujeitas ao intervalo de retenção/remoção padrão.

    Para obter mais informações, consulte habilitar chaves e excluir chaves.

Usar chaves do KMS e chaves de dados

O recurso de criptografia em repouso do DynamoDB usa uma AWS KMS key e uma hierarquia de chaves de dados para proteger os dados da sua tabela. O DynamoDB usa a mesma hierarquia de chaves para proteger fluxos do DynamoDB, tabelas globais e backups quando eles são gravados em mídia durável.

Recomendamos que você planeje sua estratégia de criptografia antes de implementar sua tabela no DynamoDB. Se você armazenar dados confidenciais no DynamoDB, considere incluir a criptografia do lado do cliente em seu plano. Dessa forma, você poderá criptografar os dados o mais próximo possível de sua origem e garantir sua proteção durante todo o ciclo de vida. Para obter mais informações, consulte a documentação Cliente de criptografia do DynamoDB.

AWS KMS key

A criptografia em repouso protege suas tabelas do DynamoDB em uma AWS KMS key. Por padrão, o DynamoDB usa uma Chave pertencente à AWS, uma chave de criptografia multilocatário que é criada e gerenciada em uma conta de serviço do DynamoDB. Porém, você pode criptografar suas tabelas do DynamoDB em uma chave gerenciada pelo cliente para o DynamoDB (aws/dynamodb) na sua Conta da AWS. Você pode selecionar uma chave do KMS diferente para cada tabela. A chave do KMS selecionada para uma tabela também é usada para criptografar índices secundários locais e globais, fluxos e backups.

Você seleciona a chave do KMS para uma tabela ao criar ou atualizar essa tabela. É possível alterar a chave do KMS de uma tabela a qualquer momento, seja no console do DynamoDB ou usando a operação UpdateTable. O processo de alternar chaves é transparente e não exige tempo de inatividade ou serviço de degradação.

Importante

O DynamoDB oferece suporte somente para chaves do KMS simétricas. Não é possível usar uma chave do KMS assimétrica para criptografar tabelas do DynamoDB.

Use uma chave gerenciada pelo cliente para obter os seguintes recursos:

Use a Chave gerenciada pela AWS se precisar de qualquer um dos seguintes recursos:

No entanto, a Chave pertencente à AWS é gratuita e seu uso não conta para cotas de solicitações ou de recursos do AWS KMS. As chaves gerenciadas pelo cliente e as Chaves gerenciadas pela AWS geram uma cobrança para cada chamada de API, e as cotas do AWS KMS são aplicáveis a essas chaves do KMS.

Chaves de tabela

O DynamoDB usa a chave do KMS para a tabela para gerar e criptografar uma chave de dados exclusiva para a tabela, conhecida como chave de tabela. A chave de tabela é mantida durante a vida útil da tabela criptografada.

A chave de tabela é usada como uma chave de criptografia de chaves. O DynamoDB usa essa chave de tabela para proteger as chaves de criptografia dos dados usadas para criptografar os dados da tabela. O DynamoDB gera uma chave de criptografia dos dados exclusiva para cada estrutura subjacente em uma tabela, mas vários itens de tabela podem ser protegidos com a mesma chave de criptografia dos dados.

Criptografar uma tabela do DynamoDB com criptografia em repouso

Quando você acessa uma tabela criptografada pela primeira vez, o DynamoDB envia uma solicitação para o AWS KMS usar a chave do KMS para descriptografar a chave de tabela. Ele usa a chave de tabela de texto simples para descriptografar as chaves de criptografia dos dados e usa as chaves de criptografia dos dados de texto simples para descriptografar os dados da tabela.

O DynamoDB armazena e usa a chave de tabelas e as chaves de criptografia dos dados fora do AWS KMS. Ele protege todas as chaves com a criptografia Advanced Encryption Standard (AES) e chaves de criptografia de 256 bits. Armazena as chaves criptografadas com os dados criptografados para que estejam disponíveis para descriptografar os dados da tabela sob demanda.

Se você alterar a chave do KMS da tabela, o DynamoDB gerará uma nova chave de tabela. Ele usará a nova chave de tabela para criptografar novamente as chaves de criptografia dos dados.

Armazenamento em cache de chaves de tabela

Para evitar chamar o AWS KMS para cada operação do DynamoDB, o DynamoDB armazena em cache chaves de tabela em texto simples para cada chamador na memória. Quando o DynamoDB recebe uma solicitação para a chave de tabela armazenada em cache após cinco minutos de inatividade, ele envia uma nova solicitação ao AWS KMS para descriptografar a chave de tabela. Essa chamada capturará todas as alterações feitas nas políticas de acesso da chave do KMS no AWS KMS ou no AWS Identity and Access Management (IAM) desde a última solicitação para descriptografar a chave de tabela.

Autorizar o uso da sua chave do KMS

Se você usar uma chave gerenciada pelo cliente ou a Chave gerenciada pela AWS na sua conta para proteger a tabela do DynamoDB, as políticas nessa chave do KMS deverão conceder ao DynamoDB permissão para usá-la em seu nome. O contexto de autorização na Chave gerenciada pela AWS para o DynamoDB inclui sua política de chaves e concessões que delegam permissões para usá-la.

Você tem controle total sobre as políticas e concessões em uma chave gerenciada pelo cliente. Como a Chave gerenciada pela AWS está na sua conta, você pode visualizar suas políticas e concessões. Porém, como ela é gerenciada pela AWS, você não pode alterar as políticas.

O DynamoDB não precisa de autorização adicional para usar a Chave pertencente à AWS padrão para proteger as tabelas do DynamoDB na sua Conta da AWS.

Política de chaves para uma Chave gerenciada pela AWS

Quando o DynamoDB usa a Chave gerenciada pela AWS para o DynamoDB (aws/dynamodb) em operações de criptografia, ele faz isso em nome do usuário que está acessando o recurso do DynamoDB. A política de chaves na Chave gerenciada pela AWS concede a todos os usuários na conta permissão para usar a Chave gerenciada pela AWS para operações especificadas. Porém, a permissão é concedida somente quando o DynamoDB faz a solicitação em nome do usuário. A condição ViaService na política de chaves não permite que nenhum usuário use a Chave gerenciada pela AWS, a menos que a solicitação seja proveniente do serviço DynamoDB.

Essa política de chaves, como as políticas de todas as Chaves gerenciadas pela AWS, é estabelecida pela AWS. Você não pode alterá-la, mas pode visualizá-la a qualquer momento. Para obter mais detalhes, consulte Visualizar uma política de chaves.

As declarações de política na política de chaves têm os seguintes efeitos:

  • Permita que os usuários na conta usem a Chave gerenciada pela AWS para o DynamoDB em operações de criptografia somente quando essa solicitação for proveniente do DynamoDB em seu nome. A política também permite que os usuários criem concessões para a chave do KMS.

  • Permite identidades autorizadas do IAM na conta visualizem as propriedades da Chave gerenciada pela AWS para o DynamoDB e revoguem a concessão que permite ao DynamoDB usar a chave do KMS. O DynamoDB usa concessões para operações de manutenção em andamento.

  • Permite que o DynamoDB execute operações somente leitura para encontrar a Chave gerenciada pela AWS para o DynamoDB na sua conta.

{ "Version" : "2012-10-17", "Id" : "auto-dynamodb-1", "Statement" : [ { "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:CallerAccount" : "111122223333", "kms:ViaService" : "dynamodb.us-west-2.amazonaws.com" } } }, { "Sid" : "Allow direct access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource" : "*" }, { "Sid" : "Allow DynamoDB Service with service principal name dynamodb.amazonaws.com to describe the key directly", "Effect" : "Allow", "Principal" : { "Service" : "dynamodb.amazonaws.com" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*" ], "Resource" : "*" } ] }

Política de chaves para uma chave gerenciada pelo cliente

Ao escolher uma chave gerenciada pelo cliente para proteger uma tabela do DynamoDB, o DynamoDB obtém permissão para usar a chave do KMS em nome da entidade principal que faz a seleção. Essa entidade principal, um usuário ou uma função, deve ter as permissões em uma chave do KMS exigida pelo DynamoDB. É possível fornecer essas permissões em uma política de chaves, em uma política do IAM ou em uma concessão.

No mínimo, o DynamoDB exige as seguintes permissões em uma chave gerenciada pelo cliente:

Por exemplo, o exemplo de política de chaves a seguir fornece somente as permissões necessárias. A política tem os seguintes efeitos:

  • Permite que o DynamoDB use a chave do KMS em operações de criptografia e crie concessões, mas somente quando está atuando em nome de entidades principais na conta que tem permissão para usar o DynamoDB. Se as entidades principais especificadas na instrução de política não tiverem permissão para usar o DynamoDB, a chamada falhará, mesmo se vier do serviço do DynamoDB.

  • A chave de condição kms:ViaService concede as permissões somente quando a solicitação é proveniente do DynamoDB em nome das entidades principais listadas na instrução da política. Essas entidades principais não podem chamar essas operações diretamente. Observe que o valor de kms:ViaService, dynamodb.*.amazonaws.com, tem um asterisco (*) na posição da região. O DynamoDB requer a permissão para ser independente de qualquer Região da AWS particular, para que ele possa fazer chamadas entre regiões como suporte a tabelas globais do DynamoDB.

  • Concede aos administradores da chave do KMS (usuários que podem assumir a função db-team) acesso somente leitura à chave do KMS e permissão para revogar concessões, incluindo as concessões exigidas pelo DynamoDB para proteger a tabela.

Antes de usar um exemplo de política de chaves, substitua o exemplo de entidades principais por entidades principais reais da sua conta da Conta da AWS.

{ "Id": "key-policy-dynamodb", "Version":"2012-10-17", "Statement": [ { "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/db-lead"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService" : "dynamodb.*.amazonaws.com" } } }, { "Sid": "Allow administrators to view the KMS key and revoke grants", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/db-team" }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource": "*" } ] }

Usar concessões para autorizar o DynamoDB

Além de políticas de chaves, o DynamoDB usa concessões para definir permissões em uma chave gerenciada pelo cliente ou na Chave gerenciada pela AWS para o DynamoDB (aws/dynamodb). Para visualizar as concessões em uma chave do KMS na sua conta, use a operação ListGrants. O DynamoDB não precisa de concessões ou permissões adicionais para usar a Chave pertencente à AWS para proteger sua tabela.

O DynamoDB usa as permissões de concessão ao executar manutenção do sistema e tarefas de proteção de dados contínua em segundo plano. Usa também concessões para gerar chaves de tabela.

Cada concessão é específica a uma tabela. Se a conta incluir várias tabelas criptografadas na mesma chave do KMS, haverá uma concessão de cada tipo para cada tabela. A concessão é restrita pelo contexto de criptografia do DynamoDB, que inclui o nome da tabela e o ID da Conta da AWS, bem como a permissão para retirar a concessão caso ela não seja mais necessária.

Para criar as concessões, o DynamoDB deve ter permissão para chamar CreateGrant em nome do usuário que criou a tabela criptografada. Para Chaves gerenciadas pela AWS, o DynamoDB recebe a permissão kms:CreateGrant da política de chaves, o que permite que os usuários da conta chamem CreateGrant na chave do KMS somente quando o DynamoDB faz a solicitação em nome de um usuário autorizado.

A política de chaves também pode permitir que a conta revogue a concessão na chave do KMS. No entanto, se você revogar a concessão em uma tabela criptografada ativa, o DynamoDB não poderá proteger e manter a tabela.

Contexto de criptografia do DynamoDB

Um contexto de criptografia é um conjunto de pares de chave-valor que contêm dados arbitrários não secretos. Quando você inclui um contexto de criptografia em uma solicitação para criptografar dados, o AWS KMS vincula de forma criptográfica o contexto de criptografia aos dados criptografados. Para descriptografar os dados, você deve passar o mesmo contexto de criptografia.

O DynamoDB usa o mesmo contexto de criptografia em todas as operações de criptografia do AWS KMS. Se você usar uma chave gerenciada pelo cliente ou uma Chave gerenciada pela AWS para proteger a tabela do DynamoDB, poderá usar o contexto de criptografia para identificar o uso da chave do KMS em logs e registros de auditoria. Ele também aparece em texto simples em logs, como o AWS CloudTrail e o Amazon CloudWatch Logs.

O contexto de criptografia também pode ser usado como uma condição para autorização em políticas e concessões. O DynamoDB usa o contexto de criptografia para restringir as concessões que permitem acesso à chave gerenciada pelo cliente ou à Chave gerenciada pela AWS na sua conta e região.

Em suas solicitações para o AWS KMS, o DynamoDB usa um contexto de criptografia com dois pares de chave-valor.

"encryptionContextSubset": { "aws:dynamodb:tableName": "Books" "aws:dynamodb:subscriberId": "111122223333" }
  • Tabela – O primeiro par de chave-valor identifica a tabela que o DynamoDB está criptografando. A chave é aws:dynamodb:tableName. O valor é o nome da tabela.

    "aws:dynamodb:tableName": "<table-name>"

    Por exemplo:

    "aws:dynamodb:tableName": "Books"
  • Conta – O segundo par de chave-valor identifica a Conta da AWS. A chave é aws:dynamodb:subscriberId. O valor é o ID de conta.

    "aws:dynamodb:subscriberId": "<account-id>"

    Por exemplo:

    "aws:dynamodb:subscriberId": "111122223333"

Monitoramento da interação do DynamoDB com o AWS KMS

Se você usa uma chave gerenciada pelo cliente ou uma Chave gerenciada pela AWS para proteger suas tabelas do DynamoDB, você poderá usar logs do AWS CloudTrail para rastrear as solicitações que o DynamoDB envia ao AWS KMS em seu nome.

As solicitações GenerateDataKey, Decrypt e CreateGrant são discutidas nesta seção. Além disso, o DynamoDB usa uma operação DescribeKey para determinar se a chave do KMS escolhida existe na conta e na região. Usa também uma operação RetireGrant para remover uma concessão quando você exclui uma tabela.

GenerateDataKey

Quando você habilita a criptografia em repouso em uma tabela, o DynamoDB cria uma chave de tabela exclusiva. Ele envia uma solicitação GenerateDataKey ao AWS KMS que especifica a chave do KMS para a tabela.

O evento que registra a operação GenerateDataKey é semelhante ao evento de exemplo a seguir. O usuário é a conta de serviço do DynamoDB. Os parâmetros incluem o Amazon Resource Name (ARN) da chave do KMS, um especificador de chave que requer uma chave de 256 bits e o contexto de criptografia que identifica a tabela e a conta da Conta da AWS.

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T00:15:17Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:dynamodb:tableName": "Services", "aws:dynamodb:subscriberId": "111122223333" }, "keySpec": "AES_256", "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "229386c1-111c-11e8-9e21-c11ed5a52190", "eventID": "e3c436e9-ebca-494e-9457-8123a1f5e979", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "bf915fa6-6ceb-4659-8912-e36b69846aad" }
Decrypt

Quando você acessa uma tabela criptografada do DynamoDB, o DynamoDB precisa descriptografar a chave da tabela para que possa descriptografar as chaves abaixo dela na hierarquia. Descriptografa os dados na tabela. Para descriptografar a chave da tabela. O DynamoDB envia uma solicitação Decrypt solicitação ao AWS KMS que especifica a chave do KMS para a tabela.

O evento que registra a operação Decrypt é semelhante ao evento de exemplo a seguir. O usuário é a entidade principal na sua Conta da AWS que está acessando a tabela. Os parâmetros incluem a chave de tabela criptografada (como um blob de texto cifrado) e o contexto de criptografia que identifica a tabela e a Conta da AWS. O AWS KMS deriva o ID da chave do KMS do texto cifrado.

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-02-14T16:42:15Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIGDT3HGFQZX4RY6RU", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" } }, "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T16:42:39Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:dynamodb:tableName": "Books", "aws:dynamodb:subscriberId": "111122223333" } }, "responseElements": null, "requestID": "11cab293-11a6-11e8-8386-13160d3e5db5", "eventID": "b7d16574-e887-4b5b-a064-bf92f8ec9ad3", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }
CreateGrant

Quando você usa uma chave gerenciada pelo cliente ou uma Chave gerenciada pela AWS para proteger sua tabela do DynamoDB, o DynamoDB usa concessões para permitir que o serviço execute a proteção de dados e tarefas de manutenção e durabilidade contínuas. Essas concessões não são necessárias em Chave pertencente à AWS.

As concessões que o DynamoDB cria são específicas de uma tabela. A entidade principal na solicitação CreateGrant é o usuário que criou a tabela.

O evento que registra a operação CreateGrant é semelhante ao evento de exemplo a seguir. Os parâmetros incluem o Amazon Resource Name (ARN) da chave do KMS para a tabela, a entidade principal favorecida e a entidade principal que está sendo retirada (o serviço DynamoDB) e as operações que a concessão abrange. Incluem também uma restrição que requer que todas as operações de criptografia usem o contexto de criptografia.

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-02-14T00:12:02Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" } }, "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T00:15:15Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "retiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "constraints": { "encryptionContextSubset": { "aws:dynamodb:tableName": "Books", "aws:dynamodb:subscriberId": "111122223333" } }, "granteePrincipal": "dynamodb.us-west-2.amazonaws.com", "operations": [ "DescribeKey", "GenerateDataKey", "Decrypt", "Encrypt", "ReEncryptFrom", "ReEncryptTo", "RetireGrant" ] }, "responseElements": { "grantId": "5c5cd4a3d68e65e77795f5ccc2516dff057308172b0cd107c85b5215c6e48bde" }, "requestID": "2192b82a-111c-11e8-a528-f398979205d8", "eventID": "a03d65c3-9fee-4111-9816-8bf96b73df01", "readOnly": false, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }