Gerenciamento de AWS KMS key
O Amazon RDS integra-se automaticamente ao AWS Key Management Service (AWS KMS) para o gerenciamento de chaves. O Amazon RDS usa criptografia de envelope. Para obter mais informações sobre a criptografia de envelope, consulte Criptografia de envelope no Guia do desenvolvedor do AWS Key Management Service.
Você pode usar dois tipos de chave do AWS KMS para criptografar clusters de banco de dados.
-
Se você quiser o controle total de uma chave do KMS, precisará criar uma chave gerenciada pelo cliente. Para obter mais informações sobre chaves gerenciadas pelo cliente, consulte Chaves gerenciadas pelo cliente no Guia do desenvolvedor do AWS Key Management Service.
Não é possível compartilhar um snapshot que foi criptografado usando a Chave gerenciada pela AWS da conta da AWS que o compartilhou.
-
Chaves gerenciadas pela AWS são chaves do KMS em sua conta que são criadas, gerenciadas e usadas em seu nome por um produto da AWS integrado ao AWS KMS. Por padrão, a Chave gerenciada pela AWS (
aws/rds
) do RDS é usada para criptografia. Você não pode gerenciar, nem rotacionar, nem excluir a Chave gerenciada pela AWS do RDS. Para obter mais informações sobre as Chaves gerenciadas pela AWS, consulte Chaves gerenciadas pela AWS no Guia do desenvolvedor do AWS Key Management Service.
Para gerenciar as chaves do KMS usadas para instâncias de banco de dados criptografadas do Amazon RDS, use o AWS Key Management Service (AWS KMS) no console do AWS KMS
Como autorizar o uso de uma chave gerenciada pelo cliente
Quando o RDS utiliza uma chave gerenciada pelo cliente em operações criptográficas, ele atua em nome do usuário que está criando ou alterando o recurso do RDS.
Para criar um recurso do RDS usando uma chave gerenciada pelo cliente, um usuário deve ter permissões para acionar as seguintes operações na chave gerenciada pelo cliente:
-
kms:CreateGrant
-
kms:DescribeKey
Você pode especificar essas permissões em uma política de chaves ou em uma política do IAM, se a política de chaves permitir.
dica
Para seguir o princípio de menor privilégio, não permita acesso total a kms:CreateGrant
. Em vez disso, use a chave de condição kms:ViaService para permitir que o usuário crie concessões na chave do KMS somente quando a concessão for criada em nome do usuário por um serviço da AWS.
É possível tornar a política do IAM mais rígida de várias maneiras. Por exemplo, se você quiser permitir que a chave gerenciada pelo cliente seja usada somente para solicitações provenientes do RDS, poderá utilizar a chave de condição kms:ViaService com o valor rds.
. Também é possível usar as chaves ou valores em Contexto de criptografia do Amazon RDS como uma condição para usar a chave gerenciada pelo cliente para criptografia.<region>
.amazonaws.com
Para obter mais informações, consulte Permitir que usuários de outras contas usem uma chave do KMS no Guia do desenvolvedor do AWS Key Management Service e em Políticas de chave no AWS KMS.
Contexto de criptografia do Amazon RDS
Quando o RDS usa sua chave do KMS ou quando o Amazon EBS usa a chave do KMS em nome do RDS, o serviço especifica um contexto de criptografia. O contexto de criptografia é dados autenticados adicionados (AAD) que o AWS KMS usa para garantir a integridade dos dados. Quando um contexto de criptografia é especificado para uma operação de criptografia, o serviço deve especificar esse mesmo contexto para a operação de descriptografia. Caso contrário, ocorrerá uma falha na descriptografia. O contexto de criptografia é também gravado nos logs do AWS CloudTrail
No mínimo, o Amazon RDS sempre usa o ID da instância de banco de dados para o contexto de criptografia, como no seguinte exemplo em formato JSON:
{ "aws:rds:db-id": "db-CQYSMDPBRZ7BPMH7Y3RTDG5QY" }
Esse contexto de criptografia pode ajudar a identificar a instância de banco de dados para a qual a chave do KMS foi usada.
Quando a chave do KMS é usada em determinada instância de banco de dados e em um volume do Amazon EBS específico, o ID da instância de banco de dados e o ID do volume do Amazon EBS são usados no contexto de criptografia, como no seguinte exemplo em formato JSON:
{ "aws:rds:db-id": "db-BRG7VYS3SVIFQW7234EJQOM5RQ", "aws:ebs:id": "vol-ad8c6542" }