Validation des autorisations pour les appels d'API Application Auto Scaling sur les ressources cibles - Application Auto Scaling

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Validation des autorisations pour les appels d'API Application Auto Scaling sur les ressources cibles

Pour envoyer des demandes autorisées aux actions de l'API Application Auto Scaling, l'appelant de l'API doit être autorisé à accéder aux AWS ressources dans le service cible et dans CloudWatch. Application Auto Scaling valide les autorisations pour les demandes associées à la fois au service cible et CloudWatch avant de traiter la demande. Pour ce faire, nous émettons une série d’appels pour valider les autorisations IAM sur les ressources cibles. Lorsqu’une réponse est renvoyée, elle est lue par Application Auto Scaling. Si les autorisations IAM n’autorisent pas une action donnée, Application Auto Scaling échoue la demande et renvoie une erreur à l’utilisateur contenant des informations sur l’autorisation manquante. Cela garantit que la configuration de mise à l’échelle que l’utilisateur souhaite déployer fonctionne comme prévu et qu’une erreur utile est renvoyée en cas d’échec de la demande.

À titre d'exemple de la manière dont cela fonctionne, les informations suivantes fournissent des détails sur la manière dont Application Auto Scaling effectue les validations d'autorisations avec Aurora et CloudWatch.

Lorsqu’un utilisateur appelle l’API RegisterScalableTarget contre un cluster de base de données Aurora, Application Auto Scaling effectue tous les contrôles suivants pour vérifier que l’utilisateur dispose des autorisations requises (en gras).

  • rds:CreateDBInstance : Pour déterminer si l'utilisateur dispose de cette autorisation, nous envoyons une demande à l'opération API CreateDBInstance, en tentant de créer une instance de base de données avec des paramètres non valides (ID d’instance vide) dans le cluster de base de données Aurora que l’utilisateur a précisé. Pour un utilisateur autorisé, l’API renvoie une réponse avec un code d’erreur InvalidParameterValue après avoir vérifié la demande. Cependant, pour un utilisateur non autorisé, nous obtenons une erreur AccessDenied et nous faisons échouer la demande d’Application Auto Scaling avec une erreur ValidationException pour l’utilisateur qui énumère les autorisations manquantes.

  • rds:DeleteDBInstance : Nous envoyons un ID d’instance vide à l’opération API DeleteDBInstance. Pour un utilisateur autorisé, cette demande aboutit à une erreur InvalidParameterValue. Pour un utilisateur non autorisé, le résultat est AccessDenied et une exception de validation est envoyée à l’utilisateur (même traitement que celui décrit dans le premier point).

  • rds : AddTags ToResource : Étant donné que l'opération d'AddTagsToResourceAPI nécessite un nom de ressource Amazon (ARN), il est nécessaire de spécifier une ressource « fictive » en utilisant un identifiant de compte (12345) et un identifiant d'instance fictif (aucune base de données existante) non valides pour créer l'ARN (). arn:aws:rds:us-east-1:12345:db:non-existing-db Pour un utilisateur autorisé, cette demande aboutit à une erreur InvalidParameterValue. Pour un utilisateur non autorisé, le résultat est AccessDenied et une exception de validation est envoyée à l’utilisateur.

  • rds:DescribeDBCluster : Nous décrivons le nom du cluster pour la ressource enregistrée pour la mise à l’échelle automatique. Pour un utilisateur autorisé, nous obtenons un résultat de description valide. Pour un utilisateur non autorisé, le résultat est AccessDenied et une exception de validation est envoyée à l’utilisateur.

  • rds:DescribeDBInstance. Nous appelons l’API DescribeDBInstance avec un filtre db-cluster-id qui filtre sur le nom du cluster qui a été fourni par l’utilisateur pour enregistrer la cible évolutive. Pour un utilisateur autorisé, nous sommes autorisés à décrire toutes les instances de la base de données dans le cluster de bases de données. Pour un utilisateur non autorisé, cet appel aboutit à AccessDenied et envoie une exception de validation à l’utilisateur.

  • cloudwatch : PutMetric Alarme : nous appelons l'PutMetricAlarmAPI sans aucun paramètre. Parce que le nom de l’alarme est manquant, la demande aboutit à ValidationError pour un utilisateur autorisé. Pour un utilisateur non autorisé, le résultat est AccessDenied et une exception de validation est envoyée à l’utilisateur.

  • cloudwatch : DescribeAlarms : Nous appelons l'DescribeAlarmsAPI avec la valeur maximale du nombre d'enregistrements fixée à 1. Pour un utilisateur autorisé, nous attendons des informations sur une alarme dans la réponse. Pour un utilisateur non autorisé, cet appel aboutit à AccessDenied et envoie une exception de validation à l’utilisateur.

  • cloudwatch : DeleteAlarms : Comme PutMetricAlarm ci-dessus, nous ne fournissons aucun paramètre à DeleteAlarms demander. Comme il manque un nom d'alarme dans la demande, cet appel échoue avec ValidationError pour un utilisateur autorisé. Pour un utilisateur non autorisé, le résultat est AccessDenied et une exception de validation est envoyée à l’utilisateur.

Chaque fois que l’une de ces exceptions de validation se produit, elle est enregistrée. Vous pouvez prendre des mesures pour identifier manuellement les appels qui ont échoué à la validation en utilisant AWS CloudTrail. Pour plus d’informations, consultez le Guide de l’utilisateur AWS CloudTrail.

Note

Si vous recevez des alertes concernant des événements Application Auto Scaling en utilisant CloudTrail, ces alertes incluront les appels d'Application Auto Scaling pour valider les autorisations des utilisateurs par défaut. Pour filtrer ces alertes, utilisez le champ invokedBy, qui contiendra application-autoscaling.amazonaws.com pour ces vérifications de validation.