Accorder à un utilisateur l'autorisation de transmettre un rôle à un AWS service - AWS Identity and Access Management

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.

Accorder à un utilisateur l'autorisation de transmettre un rôle à un AWS service

Pour configurer de nombreux AWS services, vous devez leur transmettre un IAM rôle. Cela autorise le service à assumer ultérieurement le rôle et à effectuer des actions en votre nom. Pour la plupart des services, il vous suffit de transférer le rôle au service une fois au cours de la configuration, et non chaque fois que le service assume le rôle. Supposons, par exemple, qu'une application s'exécute sur une EC2 instance Amazon. Cette application a besoin d'informations d'identification temporaires pour l'authentification et d'autorisations pour autoriser l'application à exécuter des actions dans AWS. Lorsque vous configurez l'application, vous devez transmettre un rôle à Amazon EC2 à utiliser avec l'instance qui fournit ces informations d'identification. Vous définissez les autorisations pour les applications exécutées sur l'instance en attachant une IAM politique au rôle. L'application endosse le rôle chaque fois qu'elle doit effectuer les actions qui sont autorisées par le rôle.

Pour transmettre un rôle (et ses autorisations) à un AWS service, un utilisateur doit disposer des autorisations nécessaires pour transmettre le rôle au service. Cela permet aux administrateurs de s'assurer que seuls les utilisateurs autorisés peuvent configurer un service avec un rôle qui accorde des autorisations. Pour permettre à un utilisateur de transmettre un rôle à un AWS service, vous devez accorder l'PassRoleautorisation à l'IAMutilisateur, au rôle ou au groupe de l'utilisateur.

Avertissement
  • Vous ne pouvez utiliser cette PassRole autorisation que pour transférer un IAM rôle à un service qui partage le même AWS compte. Pour transférer un rôle du compte A à un service du compte B, vous devez d'abord créer un IAM rôle dans le compte B qui peut assumer le rôle du compte A, puis le rôle du compte B peut être transféré au service. Pour plus de détails, consultez Accès aux ressources entre comptes dans IAM.

  • N'essayez pas de contrôler les personnes susceptibles de faire passer un rôle en étiquetant ce rôle, puis en utilisant la clé de condition ResourceTag dans une politique avec l'action iam:PassRole. Cette approche ne produit pas des résultats fiables.

Lorsque vous définissez l'PassRoleautorisation, vous devez vous assurer qu'un utilisateur ne transfère pas un rôle pour lequel le rôle dispose de plus d'autorisations que vous ne le souhaitez. Par exemple, Alice n'est peut-être pas autorisée à effectuer des actions Amazon S3. Si Alice pouvait transmettre un rôle à un service qui autorise les actions Amazon S3, le service pourrait effectuer des actions Amazon S3 pour le compte d'Alice lors de l'exécution de la tâche.

Lorsque vous spécifiez un rôle lié à un service, vous devez également posséder l'autorisation de transmettre ce rôle au service. Certains services créent automatiquement un rôle lié à un service dans votre compte lorsque vous effectuez une action dans ce service. Par exemple, Amazon EC2 Auto Scaling crée le rôle AWSServiceRoleForAutoScaling lié à un service pour vous lorsque vous créez un groupe Auto Scaling pour la première fois. Si vous essayez de spécifier le rôle lié au service lorsque vous créez un groupe Auto Scaling sans l'autorisation iam:PassRole, vous recevez une erreur. Si vous ne spécifiez pas explicitement le rôle, l'autorisation iam:PassRole n'est pas requise et la valeur par défaut est d'utiliser le rôle AWSServiceRoleForAutoScaling pour toutes les opérations effectuées sur ce groupe. Pour savoir quels services prennent en charge les rôles liés à un service, veuillez consulter AWS services qui fonctionnent avec IAM. Pour savoir quels services créent automatiquement un rôle lié à un service lorsque vous effectuez une action dans ce service, choisissez le lien Oui et consultez la documentation relative au rôle lié à un service pour le service.

Un utilisateur peut transmettre un rôle en ARN tant que paramètre dans toute API opération utilisant le rôle pour attribuer des autorisations au service. Le service vérifie ensuite si cet utilisateur dispose de l'autorisation iam:PassRole. Pour limiter l'utilisateur à transmettre uniquement les rôles approuvés, vous pouvez filtrer l'iam:PassRoleautorisation à l'aide de l'Resourcesélément de la déclaration de IAM politique.

Vous pouvez utiliser Condition cet élément dans une JSON politique pour tester la valeur des clés incluses dans le contexte de toutes les AWS demandes. Pour en savoir plus sur l'utilisation des clés de condition dans une politique, consultez la section IAMJSONéléments de politique : Condition. La clé de condition iam:PassedToService peut être utilisée pour spécifier le principal de service du service auquel un rôle peut être transmis. Pour en savoir plus sur l'utilisation de la clé de iam:PassedToService condition dans une politique, consultez iam : PassedToService.

Exemple 1

Supposons que vous souhaitiez autoriser un utilisateur à transmettre un ensemble de rôles approuvés au EC2 service Amazon lors du lancement d'une instance. Vous avez besoin de trois éléments :

  • Une politique d'IAMautorisation attachée au rôle qui détermine ce que le rôle peut faire. Limitez les autorisations aux seules actions nécessaires pour le rôle et aux seules ressources dont le rôle a besoin pour exécuter ces actions. Vous pouvez utiliser une politique d'IAMautorisation AWS gérée ou créée par le client.

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "A list of the permissions the role is allowed to use" ], "Resource": [ "A list of the resources the role is allowed to access" ] } }
  • Une politique d'approbation pour le rôle, qui permet au service d'endosser le rôle. Par exemple, vous pourriez attacher la politique d'approbation suivante au rôle avec l'action UpdateAssumeRolePolicy. Cette politique de confiance permet EC2 à Amazon d'utiliser le rôle et les autorisations associées à ce rôle.

    { "Version": "2012-10-17", "Statement": { "Sid": "TrustPolicyStatementThatAllowsEC2ServiceToAssumeTheAttachedRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  • Politique d'IAMautorisation attachée à l'IAMutilisateur qui permet à celui-ci de transmettre uniquement les rôles approuvés. Vous ajoutez généralement iam:GetRole à iam:PassRole pour que l'utilisateur puisse obtenir les détails du rôle à transférer. Dans cet exemple, l'utilisateur peut transférer uniquement les rôles qui existent dans le compte spécifié avec des noms commençant par l'interface EC2-roles-for-XYZ- :

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/EC2-roles-for-XYZ-*" }] }

L'utilisateur peut désormais démarrer une EC2 instance Amazon avec un rôle assigné. Les applications qui s'exécutent sur l'instance peuvent accéder à des informations d'identification temporaires pour le rôle via les métadonnées du profil d'instance. Les politiques d'autorisations attachées au rôle déterminent ce que peut faire l'instance.

Exemple 2

Amazon Relational Database Service (RDSAmazon) prend en charge une fonctionnalité appelée Enhanced Monitoring. Cette fonctionnalité permet RDS à Amazon de surveiller une instance de base de données à l'aide d'un agent. Cela permet également RDS à Amazon d'enregistrer les métriques dans Amazon CloudWatch Logs. Pour activer cette fonctionnalité, vous devez créer un rôle de service afin d'autoriser Amazon RDS à surveiller et à écrire des métriques dans vos journaux.

Pour créer un rôle pour Amazon RDS Enhanced Monitoring
  1. Connectez-vous à la IAM console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

  2. Cliquez sur Rôles, puis sur Créer un rôle.

  3. Choisissez le type AWS de rôle de service, puis pour Cas d'utilisation pour les autres services AWS, choisissez le RDSservice. Choisissez RDS— Surveillance améliorée, puis cliquez sur Suivant.

  4. Choisissez la politique d'mazonRDSEnhancedMonitoringRoleautorisation A.

  5. Choisissez Suivant.

  6. Pour Role name (Nom du rôle), saisissez un nom de rôle vous permettant d'identifier le but de ce rôle. Les noms de rôles doivent être uniques au sein de votre Compte AWS. Lorsqu'un nom de rôle est utilisé dans une politique ou dans le cadre d'une politiqueARN, le nom du rôle distingue les majuscules et minuscules. Lorsque le nom d'un rôle apparaît aux clients dans la console, par exemple lors du processus de connexion, il n'est pas sensible à la casse. Différentes entités peuvent référencer le rôle et il n'est donc pas possible de modifier son nom après sa création.

  7. (Facultatif) Pour Description, saisissez une description pour le nouveau rôle.

  8. (Facultatif) Ajoutez des métadonnées à l'utilisateur en associant les balises sous forme de paires clé-valeur. Pour plus d'informations sur l'utilisation de balises dansIAM, consultezTags pour les AWS Identity and Access Management ressources.

  9. Passez en revue les informations du rôle, puis choisissez Créer un rôle.

Le rôle obtient automatiquement une politique d'approbation qui accorde au service monitoring.rds.amazonaws.com les autorisations nécessaires pour endosser le rôle. Ensuite, Amazon RDS peut effectuer toutes les actions autorisées par la AmazonRDSEnhancedMonitoringRole politique.

L'utilisateur auquel vous souhaitez accéder à Enhanced Monitoring a besoin d'une politique qui inclut une déclaration lui permettant de répertorier les RDS rôles et une déclaration lui permettant de transmettre le rôle, comme suit. Utilisez votre numéro de compte et remplacez le nom du rôle par le nom fourni à l'étape 6.

{ "Sid": "PolicyStatementToAllowUserToListRoles", "Effect": "Allow", "Action": ["iam:ListRoles"], "Resource": "*" }, { "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/RDS-Monitoring-Role" }

Vous pouvez combiner cette instruction avec des instructions d'une autre politique ou la placer dans sa propre politique. Pour spécifier à la place que l'utilisateur peut transmettre n'importe quel rôle commençant parRDS-, vous pouvez remplacer le nom du rôle dans la ressource ARN par un caractère générique, comme suit.

"Resource": "arn:aws:iam::account-id:role/RDS-*"

Actions iam:PassRole dans les journaux AWS CloudTrail

PassRolen'est pas un API appel. PassRoleest une autorisation, ce qui signifie qu'aucun CloudTrail journal n'est généré pour IAMPassRole. Pour vérifier quels rôles sont transférés services AWS à qui CloudTrail, vous devez consulter le CloudTrail journal qui a créé ou modifié la AWS ressource recevant le rôle. Par exemple, un rôle est transmis à une AWS Lambda fonction lors de sa création. le journal répertoriant l'action CreateFunction affichera l'enregistrement du rôle qui a été transmis à la fonction.