Configurar políticas de acesso para o Performance Insights - Amazon Aurora

Configurar políticas de acesso para o Performance Insights

Para acessar o Performance Insights, é necessário que uma entidade principal tenha as permissões apropriadas do AWS Identity and Access Management (IAM). Você pode conceder acesso das seguintes maneiras:

  • Anexe a política gerenciada AmazonRDSPerformanceInsightsReadOnly para um conjunto de permissões ou perfil para acessar todas as operações somente de leitura da API do Insights de Performance.

  • Anexe a política gerenciada AmazonRDSPerformanceInsightsFullAccess para um conjunto de permissões ou perfil para acessar todas as operações da API do Insights de Performance.

  • Crie uma política do IAM personalizada e anexe ela a um conjunto de permissões ou perfil.

Se você especificou uma chave gerenciada pelo cliente quando ativou o Insights de Performance, verifique se os usuários em sua conta têm as permissões kms:Decrypt e kms:GenerateDataKey na AWS KMS key.

Anexar a política AmazonRDSPerformanceInsightsReadOnly a uma entidade principal do IAM

A AmazonRDSPerformanceInsightsReadOnly é uma política gerenciada pela AWS que concede acesso a todas as operações somente leitura da API do Insights de Performance do Amazon RDS.

Se você anexar AmazonRDSPerformanceInsightsReadOnly a um conjunto de permissões ou perfil, o destinatário poderá usar o Insights de Performance com outros atributos do console.

Para obter mais informações, consulte Política gerenciada pela AWS: AmazonRDSPerformanceInsightsReadOnly.

Anexar a política AmazonRDSPerformanceInsightsFullAccess a uma entidade principal do IAM

A AmazonRDSPerformanceInsightsFullAccess é uma política gerenciada pela AWS que concede acesso a todas as operações da API do Insights de Performance do Amazon RDS.

Se você anexar AmazonRDSPerformanceInsightsFullAccess a um conjunto de permissões ou perfil, o destinatário poderá usar o Insights de Performance com outros atributos do console.

Para ter mais informações, consulte Política gerenciada pela AWS: AmazonRDSPerformanceInsightsFullAccess.

Criação de uma política de IAM personalizada para o Performance Insights

Para usuários que não têm a política AmazonRDSPerformanceInsightsReadOnly ou AmazonRDSPerformanceInsightsFullAccess, é possível conceder acesso ao Insights de Performance criando ou modificando uma política do IAM gerenciada pelo usuário. Quando você anexa a política a um conjunto de permissões ou perfil do IAM, o destinatário pode usar o Performance Insights.

Para criar uma política personalizada
  1. Abra o console IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, escolha Policies.

  3. Escolha Create policy.

  4. Na página Criar política, selecione a guia JSON.

  5. Copie e cole o texto fornecido na seção do documento de política JSON no Guia de referência de políticas gerenciadas da AWS para AmazonRDSPerformanceInsightsReadOnly ou a política AmazonRDSPerformanceInsightsFullAccess.

  6. Escolha Review policy (Revisar política).

  7. Forneça um nome para a política e, se preferir, uma descrição. Em seguida, escolha Create policy (Criar política).

Agora você pode anexar a política a um conjunto de permissões ou perfil. O procedimento a seguir pressupõe que você já tem um usuário disponível para essa finalidade.

Como anexar a política a um usuário
  1. Abra o console IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, escolha Usuários.

  3. Escolha um usuário existente na lista.

    Importante

    Para usar o Performance Insights, você deve ter acesso ao Amazon RDS e à política personalizada. Por exemplo, a política predefinida AmazonRDSPerformanceInsightsReadOnly concede acesso somente leitura ao Amazon RDS. Para obter mais informações, consulte Gerenciamento do acesso usando políticas.

  4. Na página Summary (Resumo), escolha Add permissions (Adicionar permissões).

  5. Escolha Attach existing policies directly (Anexar políticas existentes diretamente). Em Pesquisar, digite os primeiros caracteres do nome da política, conforme mostrado na imagem a seguir.

    Escolher uma política
  6. Escolha a política e, em seguida, escolha Next: Review (Próximo: revisar).

  7. Escolha Add permissions (Adicionar permissões).

Como configurar uma política do AWS KMS para o Performance Insights

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 e kms: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). //Replace region 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 }

Atribuir acesso refinado para o Insights de Performance

O controle de acesso refinado oferece formas adicionais de controlar o acesso para o Insights de Performance. Esse controle de acesso pode permitir ou negar acesso a dimensões individuais para as ações GetResourceMetrics, DescribeDimensionKeys e GetDimensionKeyDetails do Insights de Performance. Para usar o acesso refinado, especifique as dimensões na política do IAM usando chaves de condição. A avaliação do acesso segue a lógica de avaliação da política do IAM. Para obter mais informações, consulte Lógica da avaliação de política no Guia do usuário do IAM. Se a declaração de política do IAM não especificar nenhuma dimensão, a declaração controlará o acesso a todas as dimensões da ação especificada. Para ver a lista de dimensões disponíveis, consulte DimensionGroup.

Para descobrir as dimensões que as credenciais estão autorizadas a acessar, use o parâmetro AuthorizedActions em ListAvailableResourceDimensions e especifique a ação. Os valores permitidos para AuthorizedActions são os seguintes:

  • GetResourceMetrics

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

Por exemplo, se você especificar GetResourceMetrics como o parâmetro AuthorizedActions, ListAvailableResourceDimensions exibirá a lista de dimensões que a ação GetResourceMetrics está autorizada a acessar. Se você especificar várias ações no parâmetro AuthorizedActions, ListAvailableResourceDimensions exibirá uma interseção de dimensões que essas ações estão autorizadas a acessar.

O exemplo a seguir concede acesso às dimensões especificadas para as ações GetResourceMetrics e DescribeDimensionKeys.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowToDiscoverDimensions", "Effect": "Allow", "Action": [ "pi:ListAvailableResourceDimensions" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ] }, { "Sid": "SingleAllow", "Effect": "Allow", "Action": [ "pi:GetResourceMetrics", "pi:DescribeDimensionKeys" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ], "Condition": { "ForAllValues:StringEquals": { // only these dimensions are allowed. Dimensions not included in // a policy with "Allow" effect will be denied "pi:Dimensions": [ "db.sql_tokenized.id", "db.sql_tokenized.statement" ] } } } ] }

Veja abaixo a resposta para a dimensão solicitada:

// ListAvailableResourceDimensions API // Request { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "Metrics": [ "db.load" ], "AuthorizedActions": ["DescribeDimensionKeys"] } // Response { "MetricDimensions": [ { "Metric": "db.load", "Groups": [ { "Group": "db.sql_tokenized", "Dimensions": [ { "Identifier": "db.sql_tokenized.id" }, // { "Identifier": "db.sql_tokenized.db_id" }, // not included because not allows in the IAM Policy { "Identifier": "db.sql_tokenized.statement" } ] } ] } ] }

O exemplo a seguir especifica uma permissão e duas negações de acesso às dimensões.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowToDiscoverDimensions", "Effect": "Allow", "Action": [ "pi:ListAvailableResourceDimensions" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ] }, { "Sid": "O01AllowAllWithoutSpecifyingDimensions", "Effect": "Allow", "Action": [ "pi:GetResourceMetrics", "pi:DescribeDimensionKeys" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ] }, { "Sid": "O01DenyAppDimensionForAll", "Effect": "Deny", "Action": [ "pi:GetResourceMetrics", "pi:DescribeDimensionKeys" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ], "Condition": { "ForAnyValue:StringEquals": { "pi:Dimensions": [ "db.application.name" ] } } }, { "Sid": "O01DenySQLForGetResourceMetrics", "Effect": "Deny", "Action": [ "pi:GetResourceMetrics" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ], "Condition": { "ForAnyValue:StringEquals": { "pi:Dimensions": [ "db.sql_tokenized.statement" ] } } } ] }

Veja abaixo a resposta para as dimensões solicitadas:

// ListAvailableResourceDimensions API // Request { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "Metrics": [ "db.load" ], "AuthorizedActions": ["GetResourceMetrics"] } // Response { "MetricDimensions": [ { "Metric": "db.load", "Groups": [ { "Group": "db.application", "Dimensions": [ // removed from response because denied by the IAM Policy // { "Identifier": "db.application.name" } ] }, { "Group": "db.sql_tokenized", "Dimensions": [ { "Identifier": "db.sql_tokenized.id" }, { "Identifier": "db.sql_tokenized.db_id" }, // removed from response because denied by the IAM Policy // { "Identifier": "db.sql_tokenized.statement" } ] }, ... ] } ] }
// ListAvailableResourceDimensions API // Request { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "Metrics": [ "db.load" ], "AuthorizedActions": ["DescribeDimensionKeys"] } // Response { "MetricDimensions": [ { "Metric": "db.load", "Groups": [ { "Group": "db.application", "Dimensions": [ // removed from response because denied by the IAM Policy // { "Identifier": "db.application.name" } ] }, { "Group": "db.sql_tokenized", "Dimensions": [ { "Identifier": "db.sql_tokenized.id" }, { "Identifier": "db.sql_tokenized.db_id" }, // allowed for DescribeDimensionKeys because our IAM Policy // denies it only for GetResourceMetrics { "Identifier": "db.sql_tokenized.statement" } ] }, ... ] } ] }