Alterar uma política do AWS KMS para o Insights de Performance
O Performance Insights usa uma AWS KMS key para criptografar dados sigilosos. Ao habilitar o Performance Insights por meio da API ou do console, você poderá seguir um destes procedimentos:
-
Escolha o Chave gerenciada pela AWS padrão.
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 em sua conta que chamam a API do Performance Insights precisarão das permissões
kms:Decrypt
ekms:GenerateDataKey
na chave do KMS. Você pode 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 obter mais informações, consulte Políticas de chaves no AWS KMS no Guia do desenvolvedor do AWS Key Management Service.
O exemplo a seguir mostra como adicionar instruções à sua política da chaves do KMS. Essas instruções permitem acesso ao Performance 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.
{ "Version" : "2012-10-17", "Id" : "your-policy", "Statement" : [ { //This represents a statement that currently exists in your policy. } ...., //Starting here, add new statement to your policy for Performance Insights. //We recommend that you add one new statement for every RDS instance { "Sid" : "Allow viewing RDS Performance Insights", "Effect": "Allow", "Principal": { "AWS": [ //One or more principals allowed to access Performance Insights "arn:aws:iam::
444455556666
:role/Role1
" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition" : { "StringEquals" : { //Restrict access to only RDS APIs (including Performance Insights). //Replaceregion
with your AWS Region. //For example, specify us-west-2. "kms:ViaService" : "rds.region
.amazonaws.com" }, "ForAnyValue:StringEquals": { //Restrict access to only data encrypted by Performance Insights. "kms:EncryptionContext:aws:pi:service": "rds", "kms:EncryptionContext:service": "pi", //Restrict access to a specific RDS instance. //The value is a DbiResourceId. "kms:EncryptionContext:aws:rds:db-id": "db-AAAAABBBBBCCCCDDDDDEEEEE
" } } }
Como o Insights de Performance usa a chave do AWS KMS gerenciada pelo cliente
O Insights de Performance usa chaves gerenciadas pelo cliente para criptografar dados sigilosos. Ao ativar o Insights de Performance, você pode fornecer uma chave do AWS KMS por meio da API. O Insights de Performance cria permissões do 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 Insights de Performance garante que os dados permaneçam criptografados tanto em repouso quanto em trânsito.
Como o Insights de Performance e o IAM funcionam com o AWS KMS
O IAM concede permissões para APIs específicas. O Insights de Performance tem as seguintes APIs públicas, que você pode restringir 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
Quando você usa a API para obter dados sigilosos, o Insights de Performance utiliza 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 }
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 }