Validación de permisos para llamadas API en recursos de destino - Application Auto Scaling

Validación de permisos para llamadas API en recursos de destino

Realizar solicitudes autorizadas a acciones de API Auto Scaling de aplicaciones requiere que el llamador de API tenga permisos para acceder a los recursos de AWS en el servicio de destino y en CloudWatch. Auto Scaling de aplicaciones valida los permisos para las solicitudes asociadas con el servicio de destino y CloudWatch antes de continuar con la solicitud. Para lograr esto, emitimos una serie de llamadas para validar los permisos de IAM en los recursos de destino. Cuando se devuelve una respuesta, la lee Auto Scaling de aplicaciones. Si los permisos de IAM no permiten una acción determinada, Auto Scaling de aplicaciones falla la solicitud y devuelve un error al usuario que contiene información sobre el permiso que falta. Esto garantiza que la configuración de escalado que el usuario desea implementar funcione según lo previsto y que se devuelva un error útil si se produce un error en la solicitud.

Como ejemplo de cómo funciona esto, la siguiente información proporciona detalles acerca de cómo Auto Scaling de aplicaciones realiza validaciones de permisos con Aurora y CloudWatch.

Cuando un usuario de IAM llama a la API RegisterScalableTarget en un clúster de base de datos Aurora, Auto Scaling de aplicaciones realiza todas las comprobaciones siguientes para verificar que el usuario de IAM tiene los permisos necesarios (en negrita).

  • rds:CreateDBInstance: Para determinar si el usuario tiene este permiso, enviamos una solicitud a la operación API CreateDBInstance, que intenta crear una instancia de base de datos con parámetros no válidos (ID de instancia vacío) en el clúster de base de datos de Aurora especificado por el usuario. Para un usuario autorizado, la API devuelve una InvalidParameterValue respuesta de código de error después de auditar la solicitud. Sin embargo, para un usuario no autorizado, obtenemos un error AccessDenied y falla la Auto Scaling de aplicaciones aplicación con un error ValidationException al usuario que enumera los permisos que faltan.

  • rds:DeleteDBInstance:: Enviamos un ID de instancia vacío a la operación de la API DeleteDBInstance. Para un usuario autorizado, esta solicitud da como resultado un error InvalidParameterValue. Para un usuario no autorizado, resulta en AccessDenied y envía una excepción de validación al usuario (el mismo tratamiento que se describe en el primer punto).

  • rds:AddTagsToResource: Debido a que AddTagsToResource la operación de la API requiere un nombre de recurso de Amazon (ARN), es necesario especificar un recurso “ficticio” utilizando un ID de cuenta no válido (12345) y un ID de instancia ficticio (no existente-db) para construir el ARN (arn:aws:rds:us-east-1:12345:db:non-existing-db). Para un usuario autorizado, esta solicitud da como resultado un error InvalidParameterValue. Para un usuario no autorizado, resulta en AccessDenied y envía una excepción de validación al usuario.

  • rds: DescribidBCluster: Describimos el nombre del clúster para el recurso que se está registrando para el escalado automático. Para un usuario autorizado, obtenemos un resultado de descripción válido. Para un usuario no autorizado, resulta en AccessDenied y envía una excepción de validación al usuario.

  • rds:AddTagsToResource. Llamamos a la DescribeDBInstance API con una db-cluster-id que filtra el nombre del clúster proporcionado por el usuario para registrar el destino escalable. Para un usuario autorizado, podemos describir todas las instancias de base de datos en el clúster de base de datos. Para un usuario no autorizado, esta llamada da como resultado AccessDenied y envía una excepción de validación al usuario.

  • cloudwatch:PutMetricAlarm: Llamamos a la API PutMetricAlarm sin ningún parámetro. Debido a que falta el nombre de la alarma, la solicitud da como resultado ValidationError para un usuario autorizado. Para un usuario no autorizado, resulta en AccessDenied y envía una excepción de validación al usuario.

  • cloudwatch:DescribeAlarms: Llamamos a la API DescribeAlarms con el valor máximo de registros establecido en 1. Para un usuario autorizado, esperamos información sobre una alarma en la respuesta. Para un usuario no autorizado, esta llamada da como resultado AccessDenied y envía una excepción de validación al usuario.

  • cloudwatch:DeleteAlarms: Similar a PutMetricAlarm anterior, no proporcionamos parámetros a la solicitud DeleteAlarms. Debido a que falta un nombre de alarma en la solicitud, esta llamada no se produce un error con ValidationError para un usuario autorizado. Para un usuario no autorizado, resulta en AccessDenied y envía una excepción de validación al usuario.

Siempre que se produzca cualquiera de estos errores de validación, se registrará. Puede realizar los pasos para identificar manualmente qué llamadas no han superado la validación mediante AWS CloudTrail. Para obtener más información, consulte la Guía del usuario de AWS CloudTrail.

nota

Si recibe alertas de eventos de Application Auto Scaling mediante CloudTrail, estas alertas incluirán las llamadas de Application Auto Scaling para validar los permisos de usuario de forma predeterminada. Para filtrar estas alertas, utilice el campo invokedBy, que contendrá application-autoscaling.amazonaws.com para estas comprobaciones de validación.