Cambio de una política de AWS KMS para Información de rendimiento - Amazon Relational Database Service

Cambio de una política de AWS KMS para Información de rendimiento

Performance Insights utiliza una AWS KMS key para cifrar información confidencial. Cuando active Performance Insights a través de la API o de la consola, podrá hacer una de las siguientes cosas:

  • Elegir la Clave administrada de AWS predeterminada.

    Amazon RDS utiliza la Clave administrada de AWS para su nueva instancia de base de datos. Amazon RDS crea una Clave administrada de AWS para su cuenta de Cuenta de AWS. Su cuenta de Cuenta de AWS tiene una Clave administrada de AWS diferente para Amazon RDS para cada Región de AWS.

  • Elija una clave administrada por el cliente.

    Si especifica una clave administrada por el cliente, los usuarios de su cuenta que llamen a la API de Performance Insights necesitarán los permisos kms:Decrypt y kms:GenerateDataKey sobre la clave de KMS. Puede configurar estos permisos a través de directivas de IAM. Sin embargo, le recomendamos que administre estos permisos a través de su directiva de clave KMS. Para obtener más información, consulte Políticas de claves en AWS KMS en la Guía para desarrolladores de AWS Key Management Service.

En el siguiente ejemplo se muestra cómo agregar instrucciones a la política de claves de KMS. Estas instrucciones permiten el acceso a la información sobre rendimiento. Dependiendo de cómo utilice la clave KMS, es posible que desee cambiar algunas restricciones. Antes de agregar sentencias a la directiva, elimine todos los comentarios.

{ "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" } } }

Cómo Información de rendimiento utiliza la clave administrada por el cliente de AWS KMS

Información de rendimiento utiliza claves administradas por el cliente para cifrar datos confidenciales. Al activar Información de rendimiento, puede proporcionar una clave de AWS KMS a través de la API. Información de rendimiento crea permisos de KMS en esta clave. Utiliza la clave y realiza las operaciones necesarias para procesar los datos confidenciales. Los datos confidenciales incluyen campos como el usuario, la base de datos, la aplicación y el texto de la consulta SQL. Información de rendimiento garantiza que los datos permanezcan cifrados tanto en reposo como en tránsito.

Funcionamiento de la IAM de Información de rendimiento con AWS KMS

IAM otorga permisos a API específicas. Información de rendimiento tiene las siguientes API públicas, que puede restringir mediante políticas de IAM:

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

  • GetResourceMetadata

  • GetResourceMetrics

  • ListAvailableResourceDimensions

  • ListAvailableResourceMetrics

Puede utilizar las siguientes solicitudes de API para obtener datos confidenciales.

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

  • GetResourceMetrics

Cuando utiliza la API para obtener datos confidenciales, Información de rendimiento utiliza las credenciales del intermediario. Esta comprobación garantiza que el acceso a los datos confidenciales esté limitado a quienes tengan acceso a la clave de KMS.

Al llamar a estas API, necesita permisos para llamar a la API a través de la política de IAM y permisos para invocar la acción kms:decrypt a través de la política de claves de AWS KMS.

La API GetResourceMetrics puede devolver datos confidenciales y no confidenciales. Los parámetros de la solicitud determinan si la respuesta debe incluir datos confidenciales. La API devuelve datos confidenciales cuando la solicitud incluye una dimensión confidencial en los parámetros del filtro o de grupo.

Para obtener más información acerca de las dimensiones que puede utilizar con la API GetResourceMetrics, consulte DimensionGroup.

ejemplo Ejemplos

En el siguiente ejemplo se solicitan los datos confidenciales del 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 }

En el siguiente ejemplo se solicitan los datos no confidenciales de la métrica: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 }