View a markdown version of this page

Alterar uma política do AWS KMS para o Database Insights - Amazon Aurora

Alterar uma política do AWS KMS para o Database Insights

O Database Insights usa uma AWS KMS key para criptografar dados sensíveis. Ao habilitar o Database Insights pela API ou pelo console, é possível fazer uma das seguintes ações:

  • Escolha o padrão Chave gerenciada pela AWS.

    O Amazon RDS usa a Chave gerenciada pela AWS para a sua nova instância de banco de dados. O Amazon RDS cria uma Chave gerenciada pela AWS para a sua Conta da AWS. A sua Conta da AWS tem uma Chave gerenciada pela AWS diferente para o Amazon RDS para cada Região da AWS.

  • Escolha uma chave gerenciada pelo cliente.

    Se você especificar uma chave gerenciada pelo cliente, os usuários da conta que chamarem a API do Database Insights precisarão das permissões kms:Decrypt e kms:GenerateDataKey na chave do KMS. É possível configurar essas permissões por meio de políticas do IAM. No entanto, recomendamos que você gerencie essas permissões por meio da política de chaves do KMS. Para saber mais, consulte Políticas de chaves no AWS KMS no Guia do desenvolvedor do AWS Key Management Service.

exemplo

O exemplo a seguir mostra como adicionar instruções à sua política da chaves do KMS. Essas instruções permitem o acesso ao Database Insights. Dependendo de como você usa a chave KMS, talvez você queira alterar algumas restrições. Antes de adicionar instruções à política, remova todos os comentários.

JSON
{ "Version":"2012-10-17", "Id" : "your-policy", "Statement" : [ { "Sid" : "AllowViewingRDSPerformanceInsights", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/Role1" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "rds.us-east-1.amazonaws.com" }, "ForAnyValue:StringEquals": { "kms:EncryptionContext:aws:pi:service": "rds", "kms:EncryptionContext:service": "pi", "kms:EncryptionContext:aws:rds:db-id": "db-AAAAABBBBBCCCCDDDDDEEEEE" } } } ] }

Como o Database Insights usa a chave gerenciada pelo cliente do AWS KMS

O Database Insights usa chaves gerenciadas pelo cliente para criptografar dados sensíveis. Ao ativar o Database Insights, é possível fornecer uma chave do AWS KMS pela API. O Database Insights cria permissões do AWS KMS nessa chave. Ele usa a chave e executa as operações necessárias para processar dados sigilosos. Os dados sigilosos incluem campos como usuário, banco de dados, aplicação e texto de consulta SQL. O Database Insights garante que os dados permaneçam criptografados tanto em repouso quanto em trânsito.

Como o IAM do Database Insights funciona com o AWS KMS

O IAM concede permissões para APIs específicas. O Database Insights tem as seguintes APIs públicas, que podem ser restringidas usando políticas do IAM:

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

  • GetResourceMetadata

  • GetResourceMetrics

  • ListAvailableResourceDimensions

  • ListAvailableResourceMetrics

Você pode usar as solicitações de API a seguir para obter dados sigilosos.

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

  • GetResourceMetrics

Ao usar a API para obter dados sensíveis, o Database Insights usa as credenciais do chamador. Essa verificação garante que o acesso a dados sigilosos seja limitado àqueles com acesso à chave do KMS.

Ao chamar essas APIs, você precisa de permissões para chamar a API por meio da política do IAM e de permissões para invocar a ação kms:decrypt por meio da política de chave AWS KMS.

A API GetResourceMetrics pode retornar dados sigilosos e não sigilosos. Os parâmetros da solicitação determinam se a resposta deve incluir dados sigilosos. A API retorna dados sigilosos quando a solicitação inclui uma dimensão confidencial nos parâmetros filtrar ou agrupar por.

Para obter mais informações sobre as dimensões que você pode usar com a API GetResourceMetrics, consulte DimensionGroup.

exemplo Exemplos

O seguinte exemplo solicita dados sigilosos para o grupo db.user:

POST / HTTP/1.1 Host: <Hostname> Accept-Encoding: identity X-Amz-Target: PerformanceInsightsv20180227.GetResourceMetrics Content-Type: application/x-amz-json-1.1 User-Agent: <UserAgentString> X-Amz-Date: <Date> Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature> Content-Length: <PayloadSizeBytes> { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "MetricQueries": [ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.user", "Limit": 2 } } ], "StartTime": 1693872000, "EndTime": 1694044800, "PeriodInSeconds": 86400 }
exemplo

O seguinte exemplo solicita dados não sigilosos para o grupo db.load.avg:

POST / HTTP/1.1 Host: <Hostname> Accept-Encoding: identity X-Amz-Target: PerformanceInsightsv20180227.GetResourceMetrics Content-Type: application/x-amz-json-1.1 User-Agent: <UserAgentString> X-Amz-Date: <Date> Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature> Content-Length: <PayloadSizeBytes> { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "MetricQueries": [ { "Metric": "db.load.avg" } ], "StartTime": 1693872000, "EndTime": 1694044800, "PeriodInSeconds": 86400 }