Menu
AWS Identity and Access Management
Guide de l'utilisateur

Utilisation d'un rôle IAM pour accorder des autorisations à des applications s'exécutant sur des instances Amazon EC2

Les applications qui s'exécutent sur une instance EC2 doivent inclure des informations d'identification AWS dans leurs demandes d'API AWS. Vos développeurs peuvent stocker directement les informations d'identification AWS dans l'instance EC2 et autoriser les applications de cette instance à les utiliser. Toutefois, dans ce cas, ils doivent gérer les informations d'identification, les transmettre en toute sécurité à chaque instance, puis mettre à jour chaque instance EC2 lorsqu'il convient d'effectuer une rotation des informations d'identification. Ceci représente beaucoup de travail supplémentaire.

Au lieu de cela, il est recommandé d'utiliser un rôle IAM pour gérer les informations d'identification temporaires pour les applications qui s'exécutent sur une instance EC2. Lors de l'utilisation d'un rôle, il n'est pas nécessaire de distribuer d'informations d'identification à long terme à une instance EC2. A la place, le rôle fournit des autorisations temporaires que les applications peuvent utiliser lors d'appels à d'autres ressources AWS. Lorsque vous lancez une instance EC2, vous spécifiez un rôle IAM à associer à celle-ci. Les applications qui s'exécutent sur l'instance peuvent ensuite utiliser les informations d'identification de sécurité temporaires fournies pour le rôle pour signer les demandes d'API.

L'utilisation de rôles pour l'octroi d'autorisations à des applications qui s'exécutent sur des instances EC2 requiert une configuration supplémentaire. Une application qui s'exécute sur une instance EC2 est extraite d'AWS par le système d'exploitation virtuel. En raison de cette séparation supplémentaire, une autre étape est nécessaire pour affecter un rôle AWS et les autorisations qui lui sont associées à une instance EC2 et rendre ces dernières disponibles pour toutes ses applications. Cette étape supplémentaire est la création d'un profil d'instance qui est attaché à l'instance. Le profil d'instance contient le rôle et peut fournir les informations d'identification du rôle à une application qui s'exécute sur l'instance. Ces informations d'identification peuvent ensuite être utilisées dans les appels d'API de l'application pour accéder aux ressources et restreindre l'accès aux ressources spécifiées par le rôle uniquement. Notez que vous ne pouvez affecter qu'un seul rôle à une instance EC2 à la fois et que toutes les applications de l'instance partagent le même rôle et les mêmes autorisations.

Une telle utilisation des rôles présente plusieurs avantages. Dans la mesure où les informations d'identification des rôles sont temporaires et font automatiquement l'objet d'une rotation, vous n'avez pas à vous soucier de risques de sécurité à long terme. Par ailleurs, si vous utilisez le même rôle pour plusieurs instances, toute modification apportée au rôle est automatiquement propagée à toutes les instances.

Note

Même si un rôle est généralement attribué à une instance EC2 lors du lancement, un rôle peut également être attaché à une instance EC2 qui est déjà en cours d'exécution. Pour apprendre à attacher un rôle à une instance en cours d'exécution, consultez Rôles IAM pour Amazon EC2.

Comment fonctionnent les rôles pour les instances EC2 ?

Dans l'illustration suivante, un développeur exécute une application sur une instance EC2 qui requiert l'accès à un compartiment S3 nommé photos. Un administrateur crée le rôle Get-pics. Le rôle comprend des stratégies qui accordent des autorisations de lecture pour le compartiment et permettent au développeur de lancer le rôle avec une instance EC2. Lorsque l'application s'exécute sur l'instance, elle peut accéder au compartiment photos en utilisant les informations d'identification temporaires du rôle. L'administrateur n'a pas besoin d'accorder au développeur l'autorisation d'accéder au compartiment photos et le développeur n'a à aucun moment besoin de partager ou gérer les informations d'identification.

 Application d'une instance EC2 qui accède à une ressource AWS
  1. L'administrateur utilise IAM pour créer le rôle Get-pics. Dans la stratégie d'approbation du rôle, l'administrateur spécifie que seules les instances EC2 peuvent assumer le rôle. Dans la stratégie d'accès du rôle, l'administrateur définit des autorisations en lecture seule pour le compartiment photos.

  2. Un développeur lance une instance EC2 et lui affecte le rôle Get-pics.

    Note

    Si vous utilisez la console IAM, le profil d'instance est géré de manière quasiment transparente pour vous. Toutefois, si vous utilisez l'AWS CLI ou l'API pour créer et gérer le rôle et l'instance EC2, vous devez également créer le profil d'instance et lui affecter le rôle, dans une procédure séparée. Ensuite, lorsque vous lancez l'instance, vous devez spécifier le nom du profil d'instance à la place du nom de rôle.

  3. Lorsque l'application est en cours d'exécution, elle obtient des informations d'identification de sécurité temporaires à partir des métadonnées d'instance Amazon EC2, comme décrit dans Extraction des informations d'identification de sécurité à partir des métadonnées d'instance. Il s'agit d'informations d'identification de sécurité temporaires qui représentent le rôle et sont valides pendant une période limitée.

    Dans certains kits SDK AWS, le développeur peut utiliser un fournisseur qui gère de manière transparente les informations d'identification de sécurité temporaires. (La documentation de chaque kit SDK AWS décrit les fonctions prises en charge par le kit SDK pour la gestion des informations d'identification.)

    Sinon, l'application peut obtenir les informations d'identification temporaires directement à partir des métadonnées d'instance de l'instance EC2. Les informations d'identification et les valeurs associées se trouvent dans la catégorie iam/security-credentials/role-name (dans cet exemple, iam/security-credentials/Get-pics) des métadonnées. Si l'application extrait les informations d'identification des métadonnées de l'instance, elle peut les mettre en cache.

  4. A l'aide des informations d'identification obtenues, l'application peut accéder au compartiment photos. Compte tenu de la stratégie attachée au rôle Get-pics, l'application dispose d'autorisations en lecture.

    Les informations d'identification de sécurité temporaires disponibles sur l'instance font automatiquement l'objet d'une rotation avant leur expiration, afin qu'un ensemble d'informations d'identification valides soit toujours disponible. L'application doit simplement obtenir un nouvel ensemble d'informations d'identification à partir des métadonnées de l'instance avant l'expiration des informations d'identification actuelles. Si le kit SDK AWS gère les informations d'identification, l'application n'a pas besoin de logique supplémentaire pour actualiser les informations d'identification. En revanche, si l'application extrait les informations d'identification de sécurité temporaires des métadonnées d'instance, puis les met en cache, elle doit obtenir un ensemble d'informations d'identification actualisé toutes les heures, ou au moins 15 minutes avant l'expiration des informations d'identification actuelles. Le délai d'expiration est inclut dans les informations retournées dans la catégorie iam/security-credentials/role-name.

Autorisations requises pour l'utilisation de rôles avec Amazon EC2

Pour lancer une instance avec un rôle, le développeur doit avoir l'autorisation de lancer des instances EC2 et de transmettre des rôles IAM.

Dans l'exemple suivant, la stratégie autorise les utilisateurs à lancer une instance avec un rôle à l'aide d'AWS Management Console. La stratégie inclut des caractères génériques (*) pour autoriser un utilisateur à transmettre un rôle et effectuer toutes les actions Amazon EC2. L'action ListInstanceProfiles permet aux utilisateurs d'afficher tous les rôles disponibles dans le compte AWS.

Exemple Stratégie qui autorise les utilisateurs à lancer une instance avec n'importe quel rôle à l'aide de la console Amazon EC2

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:PassRole", "iam:ListInstanceProfiles", "ec2:*" ], "Resource": "*" }] }

Limitation des rôles pouvant être transmis à des instances EC2 (Utilisation de PassRole)

Vous pouvez utiliser l'autorisation PassRole pour spécifier les rôles qu'un utilisateur peut transmettre à une instance EC2 lors de son lancement. Ceci évite que l'utilisateur exécute des applications ayant davantage d'autorisations qu'il n'en possède, autrement dit qu'il soit en mesure d'obtenir des droits élevés. Par exemple, supposons qu'une utilisatrice nommée Alice soit uniquement autorisée à lancer des instances EC2 et à utiliser des compartiments Amazon S3, mais que le rôle qu'elle transmet à une instance EC2 dispose d'autorisations permettant d'utiliser IAM et Amazon DynamoDB. Dans ce cas, il est possible qu'Alice soit en mesure de lancer l'instance, de s'y connecter, d'obtenir des informations d'identification de sécurité temporaires, puis d'effectuer plus d'actions IAM ou DynamoDB qu'elle n'est autorisée à le faire.

Pour limiter les rôles qu'un utilisateur peut transmettre à une instance EC2, vous pouvez créer une stratégie qui autorise l'action PassRole. Ensuite, vous attachez la stratégie à l'utilisateur (ou à un groupe IAM auquel il appartient) qui lancera les instances EC2. Dans l'élément Resource de la stratégie, vous répertoriez les rôles que l'utilisateur peut transmettre aux instances EC2. Lorsque l'utilisateur lance une instance et lui associe un rôle, Amazon EC2 vérifie si l'utilisateur est autorisé à transmettre ce rôle. Il est entendu que vous devez également vous assurer que le rôle que l'utilisateur est autorisé à transmettre n'inclut pas plus d'autorisations qu'il n'est censé en avoir.

Note

L'action d'API PassRole est différente de RunInstances ou ListInstanceProfiles. Il s'agit en fait d'une autorisation qu'AWS vérifie chaque fois qu'un rôle ARN est passé comme paramètre à une API (ou que la console le fait pour l'utilisateur). Elle permet à un administrateur de contrôler les rôles susceptibles d'être transmis et par quels utilisateurs. Dans le cas présent, elle veille à ce que l'utilisateur soit autorisé à attacher un rôle spécifique à une instance Amazon EC2.

Exemple stratégie qui autorise un utilisateur à lancer une instance EC2 avec un rôle spécifique

Dans l'exemple suivant, la stratégie autorise les utilisateurs à lancer une instance avec un rôle à l'aide de l'API Amazon EC2. L'élément Resource spécifie l'ARN (Amazon Resource Name) d'un rôle. En spécifiant l'ARN, la stratégie accorde à l'utilisateur l'autorisation de transmettre uniquement le rôle Get-pics. Si l'utilisateur tente de spécifier un autre rôle lors du lancement d'une instance, l'action échoue.

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:role/Get-pics" } ] }

Comment bénéficier du service ?

Pour comprendre le fonctionnement des rôles avec les instances EC2, vous devez utiliser la console IAM pour créer un rôle, lancer une instance EC2 utilisant ce rôle, puis examiner l'instance en cours d'exécution. Vous pouvez examiner les métadonnées de l'instance pour voir comment les informations d'identification du rôle sont mises à sa disposition. Il est également possible d'étudier la façon dont une application exécutée sur l'instance peut utiliser un rôle donné. Consultez les ressources suivantes pour en savoir plus.

Pour en savoir plus sur la création de rôles pour des instances EC2, consultez les informations suivantes :