Octroi d'autorisations à un utilisateur pour transférer un rôle à un service AWS - AWS Identity and Access Management

Octroi d'autorisations à un utilisateur pour transférer un rôle à un service AWS

Pour configurer la plupart des services AWS, vous devez transférer un rôle IAM au service. 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. Par exemple, supposons que vous avez une application s'exécutant sur une instance Amazon EC2. 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 s'exécutant sur l'instance en attachant une politique IAM 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 transférer un rôle (et ses autorisations) à un service AWS, un utilisateur doit disposer des autorisations nécessaires pour transférer 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 transférer un rôle à un service AWS, vous devez accorder l'autorisation PassRole à l'utilisateur IAM, au rôle ou au groupe de l'utilisateur.

Remarques
  • Vous ne pouvez pas utiliser l'autorisation PassRole pour transmettre un rôle entre comptes.

  • Vous ne pouvez pas limiter les autorisations à transmettre un rôle en fonction des balises attachées au rôle à l'aide de la clé de condition ResourceTag/key-name. Pour plus d'informations, veuillez consulter Contrôle de l'accès aux ressources AWS.

Lorsque vous créez 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 automatiquement le rôle lié au service AWSServiceRoleForAutoScaling la première fois que vous créez un groupe Auto Scaling. Si vous essayez de créer un groupe Auto Scaling sans l'autorisation PassRole, vous recevez une erreur. Si vous choisissez le rôle par défaut, l'autorisation iam:PassRole peut ne pas être requise. Pour savoir quels services prennent en charge les rôles liés à un service, veuillez consulter Services AWS 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 ARN de rôle comme paramètre dans n'importe quelle opération d'API qui utilise le rôle pour attribuer des autorisations au service. Le service vérifie ensuite si cet utilisateur dispose de l'autorisation iam:PassRole. Pour que l'utilisateur transfère uniquement les rôles approuvés, vous pouvez filtrer l'autorisation iam:PassRole à l'aide de l'élément Resources de l'instruction de politique IAM.

Vous pouvez utiliser l'élément Condition dans une politique JSON pour tester la valeur des clés incluses dans le contexte de demande de toutes les demandes AWS. Pour en savoir plus sur l'utilisation des clés de condition dans une politique, consultez la section Éléments de politique JSON IAM : 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 condition iam:PassedToService dans une politique, consultez la section iam:PassedToService.

Exemple 1

Supposons que vous vouliez accorder à un utilisateur la possibilité de transférer l'un des ensembles de rôles approuvés au service Amazon EC2 lors du lancement d'une instance. Vous avez besoin de trois éléments :

  • Une politique d'autorisations IAM attachée au rôle qui détermine les opérations pouvant être exécutées par le rôle. 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'autorisations IAM gérée par AWS 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 d'approbation permet à Amazon EC2 d'utiliser le rôle et les autorisations attachées au rôle.

    { "Version": "2012-10-17", "Statement": { "Sid": "TrustPolicyStatementThatAllowsEC2ServiceToAssumeTheAttachedRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  • Une politique d'autorisations IAM attachée à l'utilisateur IAM, qui permet à l'utilisateur de transférer uniquement les rôles qui sont 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 maintenant démarrer une instance Amazon EC2 avec un rôle affecté. 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 (Amazon RDS) prend en charge une fonction appelée surveillance améliorée. Cette fonctionnalité permet à Amazon RDS de surveiller une instance de base de données grâce à un agent. Elle permet également à Amazon RDS de journaliser des métriques dans Amazon CloudWatch Logs. Pour activer cette fonctionnalité, vous devez créer un rôle de service pour accorder à Amazon RDS des autorisations pour surveiller et écrire des métriques dans vos journaux.

Pour créer un rôle pour la surveillance améliorée Amazon RDS
  1. Connectez-vous à la AWS Management Console, puis ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Choisissez le type de fonction du Service AWS, puis sous Use cases for other Services AWS (Cas d'utilisation pour d'autres services ), choisissez le service RDS. Choisissez RDS - Enhanced Monitoring (RDS - Surveillance améliorée), puis Next (Suivant).

  4. Choisissez la politique d'autorisations AmazonRDSEnhancedMonitoringRole.

  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ôle de votre compte AWS doivent être uniques. Ils ne sont pas sensibles à la casse. Par exemple, vous ne pouvez pas créer deux rôles nommés PRODROLE et prodrole. 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 des balises dans IAM, veuillez consulter Balisage des ressources IAM.

  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. Une fois cette opération effectuée, Amazon RDS peut exécuter toutes les actions que la politique AmazonRDSEnhancedMonitoringRole autorise.

L'utilisateur pour lequel vous souhaitez activer la surveillance améliorée a besoin d'une politique incluant une instruction lui permettant de lister les fonctions RDS et une autre lui prermettant de transférer la fonction 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. Au lieu de spécifier que l'utilisateur peut transférer un rôle commençant par RDS-, vous pouvez remplacer le nom du rôle dans l'ARN d'une ressource par un caractère générique, comme suit.

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