Configuración de directivas de acceso para información sobre rendimiento - Amazon Relational Database Service

Configuración de directivas de acceso para información sobre rendimiento

Para acceder a Performance Insights, la entidad principal deberá tener los permisos adecuados de AWS Identity and Access Management (IAM). Puede otorgar acceso de las siguientes formas:

  • Adjunte la política administrada AmazonRDSPerformanceInsightsReadOnly a un conjunto de permisos o rol para acceder a todas las operaciones de solo lectura de la API de Información de rendimiento.

  • Adjunte la política administrada AmazonRDSPerformanceInsightsFullAccess a un conjunto de permisos o rol para acceder a todas las operaciones de la API de Información de rendimiento.

  • Cree una política de IAM personalizada y asóciela a un conjunto de permisos o a un rol.

Si especificó una clave administrada de cliente al activar Información sobre rendimiento, asegúrese de que los usuarios de su cuenta tengan los permisos kms:Decrypt y kms:GenerateDataKey en la AWS KMS key

Asociación de la política AmazonRDSPerformanceInsightsReadOnly a una entidad principal de IAM

AmazonRDSPerformanceInsightsReadOnly es una política administrada de AWS que concede acceso a todas las operaciones de solo lectura de la API de Información sobre rendimiento de Amazon RDS.

Si asocia AmazonRDSPerformanceInsightsReadOnly a un conjunto de permisos o a un rol, el destinatario puede utilizar Información de rendimiento con las demás características de la consola.

Para obtener más información, consulte Política administrada por AWS: AmazonRDSPerformanceInsightsReadOnly.

Asociación de la política AmazonRDSPerformanceInsightsFullAccess a una entidad principal de IAM

AmazonRDSPerformanceInsightsFullAccess es una política administrada de AWS que concede acceso a todas las operaciones de la API de Información sobre rendimiento de Amazon RDS.

Si asocia AmazonRDSPerformanceInsightsFullAccess a un conjunto de permisos o a un rol, el destinatario puede utilizar Información de rendimiento con las demás características de la consola.

Para obtener más información, consulte Política administrada por AWS: AmazonRDSPerformanceInsightsFullAccess.

Creación de una política de IAM personalizada para la información sobre rendimiento

En el caso de usuarios que no tengan la política AmazonRDSPerformanceInsightsReadOnly o AmazonRDSPerformanceInsightsFullAccess, puede conceder acceso a Información sobre rendimiento a través de la creación o modificación de una política de IAM administrada por el usuario. Al asociar la política a un conjunto de permisos o a un rol, el destinatario puede utilizar Información de rendimiento.

Creación de una política personalizada
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, seleccione Políticas.

  3. Elija Create Policy (Crear política).

  4. En la página Crear política, elija la opción JSON.

  5. Copie y pegue el texto proporcionado en la sección Documento de política de JSON en la Guía de referencia de las políticas administradas de AWS para la política AmazonRDSPerformanceInsightsReadOnly o AmazonRDSPerformanceInsightsFullAccess.

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

  7. Proporcione un nombre para la política y, opcionalmente, una descripción, a continuación, elija Create policy (Crear política).

Ahora ya puede asociar la política a un conjunto de permisos o a un rol. En el procedimiento siguiente, se presupone que ya tiene un usuario para este fin.

Asociación de la política a un usuario
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, seleccione Users.

  3. Elija en la lista un usuario existente.

    importante

    Para utilizar Performance Insights, asegúrese de tener acceso a Amazon RDS además de la política personalizada. Por ejemplo, la política predefinida AmazonRDSPerformanceInsightsReadOnly ofrece acceso de solo lectura a Amazon RDS. Para obtener más información, consulte Administración de acceso mediante políticas.

  4. En la página Summary, elija Add permissions.

  5. Elija Attach existing policies directly (Adjuntar políticas existentes directamente). En Buscar, escriba los primeros caracteres del nombre de la política, como se muestra en la siguiente imagen.

    Elección de una política
  6. Elija la política y, a continuación, elija Next: Review.

  7. Elija Add permissions (Agregar permisos).

Configuración de una política de AWS KMS para Performance Insights

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 }

Concesión de acceso preciso para Información sobre rendimiento

El control de acceso preciso ofrece formas adicionales de controlar el acceso a Información sobre rendimiento. Este control de acceso puede permitir o denegar el acceso a dimensiones individuales para acciones de Información sobre rendimiento GetResourceMetrics, DescribeDimensionKeys y GetDimensionKeyDetails. Para utilizar el acceso preciso, especifique las dimensiones en la política de IAM mediante claves de condición. La evaluación del acceso sigue la lógica de evaluación de la política de IAM. Para obtener más información, consulte Lógica de evaluación de políticas en la Guía del usuario de IAM. Si la instrucción de la política de IAM no especifica ninguna dimensión, entonces la instrucción controla el acceso a todas las dimensiones de la acción especificada. Para ver la lista de dimensiones disponibles, consulte DimensionGroup.

Para averiguar las dimensiones a las que están autorizadas a acceder sus credenciales, utilice el parámetro AuthorizedActions en ListAvailableResourceDimensions y especifique la acción. Los valores permitidos para AuthorizedActions son los siguientes:

  • GetResourceMetrics

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

Por ejemplo, si especifica GetResourceMetrics para el parámetro AuthorizedActions, ListAvailableResourceDimensions devuelve la lista de dimensiones a las que la acción GetResourceMetrics está autorizada a acceder. Si especifica varias acciones en el parámetro AuthorizedActions, ListAvailableResourceDimensions devuelve una intersección de las dimensiones a las que esas acciones están autorizadas a acceder.

El siguiente ejemplo proporciona acceso a las dimensiones especificadas para las acciones GetResourceMetrics y 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" ] } } } ] }

A continuación se muestra la respuesta para la dimensión 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" } ] } ] } ] }

El siguiente ejemplo especifica un acceso permitido y dos denegados para las dimensiones.

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

A continuación se muestran las respuestas para las dimensiones 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" } ] }, ... ] } ] }