Politiques basées sur l'identité pour Amazon EC2 - Amazon Elastic Compute Cloud

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.

Politiques basées sur l'identité pour Amazon EC2

Par défaut, les utilisateurs ne sont pas autorisés à créer ou à modifier des EC2 ressources Amazon, ni à effectuer des tâches à l'aide d'Amazon EC2API, de EC2 la console Amazon ouCLI. Pour permettre aux utilisateurs de créer ou de modifier des ressources et d'effectuer des tâches, vous devez créer des IAM politiques qui accordent aux utilisateurs l'autorisation d'utiliser les ressources et les API actions spécifiques dont ils auront besoin, puis associer ces politiques aux utilisateurs, groupes ou IAM rôles qui nécessitent ces autorisations.

Quand vous attachez une stratégie à un utilisateur, à un groupe d’utilisateurs ou à un rôle, celle-ci accorde ou refuse aux utilisateurs l’autorisation d’exécuter les tâches spécifiées sur les ressources spécifiées. Pour plus d'informations générales sur IAM les politiques, voir Politiques et autorisations IAM dans le Guide de IAM l'utilisateur. Pour plus d'informations sur la gestion et la création de IAM politiques personnalisées, consultez la section Gestion des IAM politiques.

Une IAM politique doit accorder ou refuser l'autorisation d'utiliser une ou plusieurs EC2 actions Amazon. Elle doit aussi spécifier les ressources qui peuvent être utilisées avec l’action : il peut s’agir de toutes les ressources ou, dans certains cas, de ressources spécifiques. La politique peut aussi inclure les conditions que vous appliquez à la ressource.

Pour commencer, vous pouvez vérifier si les politiques AWS gérées pour Amazon EC2 répondent à vos besoins. Sinon, vous pouvez créer vos propres politiques personnalisées. Pour de plus amples informations, veuillez consulter AWS politiques gérées pour Amazon EC2.

Syntaxe d’une politique

Une IAM politique est un JSON document composé d'une ou de plusieurs déclarations. Chaque déclaration est structurée comme suit :

{ "Statement":[{ "Effect":"effect", "Action":"action", "Resource":"arn", "Condition":{ "condition":{ "key":"value" } } } ] }

Une déclaration se compose de différents éléments :

  • Effect : effect peut avoir la valeur Allow ou Deny. Par défaut, les utilisateurs ne sont pas autorisés à utiliser les ressources et les API actions. Toutes les demandes sont donc refusées. Une autorisation explicite remplace l’autorisation par défaut. Un refus explicite remplace toute autorisation.

  • Action : L'action est l'APIaction spécifique pour laquelle vous accordez ou refusez l'autorisation. Pour en savoir plus sur la spécification d’action, consultez Actions pour Amazon EC2.

  • Resource : la ressource affectée par l’action. Certaines EC2 API actions Amazon vous permettent d'inclure dans votre politique des ressources spécifiques qui peuvent être créées ou modifiées par l'action. Vous spécifiez une ressource en utilisant un nom de ressource Amazon (ARN) ou en utilisant le caractère générique (*) pour indiquer que la déclaration s'applique à toutes les ressources. Pour de plus amples informations, veuillez consulter Autorisations prises en charge au niveau des ressources pour les actions Amazon EC2 API.

  • Condition : les conditions sont facultatives. Elles permettent de contrôler à quel moment votre politique est effective. Pour plus d'informations sur la définition de conditions pour AmazonEC2, consultezClés de condition pour Amazon EC2.

Pour plus d'informations sur les exigences des politiques, consultez la référence des IAM JSON politiques dans le guide de IAM l'utilisateur. Pour des exemples IAM de déclarations de politique relatives à AmazonEC2, voirExemples de politiques pour contrôler l'accès à Amazon EC2 API.

Actions pour Amazon EC2

Dans une déclaration IAM de politique, vous pouvez spécifier n'importe quelle API action à partir de n'importe quel service compatibleIAM. Pour AmazonEC2, utilisez le préfixe suivant avec le nom de l'APIaction : ec2: Par exemple : ec2:RunInstances et ec2:CreateImage.

Pour spécifier plusieurs actions dans une seule déclaration, séparez-les par des virgules comme suit :

"Action": ["ec2:action1", "ec2:action2"]

Vous pouvez aussi spécifier plusieurs actions à l’aide de caractères génériques. Par exemple, vous pouvez spécifier toutes les actions dont le nom commence par le mot « Describe » comme suit :

"Action": "ec2:Describe*"
Note

Actuellement, les API actions Amazon EC2 Describe* ne prennent pas en charge les autorisations au niveau des ressources. Pour plus d'informations sur les autorisations au niveau des ressources pour AmazonEC2, consultez. Politiques basées sur l'identité pour Amazon EC2

Pour spécifier toutes les EC2 API actions Amazon, utilisez le caractère générique* comme suit :

"Action": "ec2:*"

Pour obtenir la liste des EC2 actions Amazon, consultez la section Actions définies par Amazon EC2 dans le Service Authorization Reference.

Autorisations prises en charge au niveau des ressources pour les actions Amazon EC2 API

Les autorisations au niveau des ressources font référence à la possibilité de spécifier les ressources sur lesquelles les utilisateurs sont autorisés à exécuter des actions. Amazon EC2 prend partiellement en charge les autorisations au niveau des ressources. Cela signifie que pour certaines EC2 actions Amazon, vous pouvez contrôler le moment où les utilisateurs sont autorisés à utiliser ces actions en fonction des conditions qui doivent être remplies ou des ressources spécifiques que les utilisateurs sont autorisés à utiliser. Par exemple, vous pouvez autoriser les utilisateurs à lancer des instances, mais uniquement d'un type spécifique et uniquement à l'aide d'une instance spécifiqueAMI.

Pour spécifier une ressource dans une déclaration IAM de politique, utilisez son Amazon Resource Name (ARN). Pour plus d'informations sur la spécification de la ARN valeur, consultezAmazon Resource Names (ARNs) pour Amazon EC2. Si une API action ne prend pas en charge un individuARNs, vous devez utiliser un caractère générique (*) pour indiquer que toutes les ressources peuvent être affectées par l'action.

Pour consulter les tableaux qui identifient les EC2 API actions Amazon qui prennent en charge les autorisations au niveau des ressources, ainsi que les clés de condition ARNs et les clés de condition que vous pouvez utiliser dans une politique, consultez Actions, ressources et clés de condition pour Amazon. EC2

N'oubliez pas que vous pouvez appliquer des autorisations au niveau des ressources basées sur des balises dans les IAM politiques que vous utilisez pour les actions Amazon. EC2 API Vous bénéficiez ainsi d’un meilleur contrôle sur les ressources qu’un utilisateur peut créer, modifier ou utiliser. Pour de plus amples informations, veuillez consulter Accorder l'autorisation de baliser les EC2 ressources Amazon lors de la création.

Amazon Resource Names (ARNs) pour Amazon EC2

Chaque déclaration IAM de politique s'applique aux ressources que vous spécifiez à l'aide de leurARNs.

An ARN possède la syntaxe générale suivante :

arn:aws:[service]:[region]:[account-id]:resourceType/resourcePath
web

Le service (par exemple, ec2).

region

La région de la ressource (par exemple, us-east-1).

id-compte

L'identifiant du AWS compte, sans tiret (par exemple,123456789012).

resourceType

Le type de ressource (par exemple, instance).

resourcePath

Un chemin qui identifie la ressource. Vous pouvez utiliser le caractère générique * dans vos chemins.

Par exemple, vous pouvez indiquer une instance spécifique (i-1234567890abcdef0) dans votre instruction à l'aide de ARN ce qui suit.

"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"

Vous pouvez spécifier toutes les instances qui appartiennent à un compte spécifique à l’aide du caractère générique * comme suit :

"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*"

Vous pouvez également spécifier toutes les EC2 ressources Amazon appartenant à un compte spécifique en utilisant le caractère générique* comme suit.

"Resource": "arn:aws:ec2:us-east-1:123456789012:*"

Pour spécifier toutes les ressources, ou si une API action spécifique n'est pas compatibleARNs, utilisez le caractère générique * dans l'Resourceélément comme suit.

"Resource": "*"

De nombreuses EC2 API actions Amazon impliquent plusieurs ressources. Par exemple, AttachVolume attache un EBS volume Amazon à une instance, de sorte qu'un utilisateur doit être autorisé à utiliser le volume et l'instance. Pour spécifier plusieurs ressources dans une seule instruction, séparez-les ARNs par des virgules, comme suit.

"Resource": ["arn1", "arn2"]

Pour obtenir la liste des EC2 ressources ARNs destinées à Amazon, consultez la section Types de ressources définis par Amazon EC2.

Clés de condition pour Amazon EC2

Dans une déclaration de politique, vous pouvez, le cas échéant, spécifier des conditions qui contrôlent à quel moment la déclaration est effective. Chaque condition contient une ou plusieurs paires clé-valeur. Les clés de condition ne sont pas sensibles à la casse. Nous avons défini des clés de condition AWS globales, ainsi que des clés de condition supplémentaires spécifiques au service.

Pour obtenir la liste des clés de condition spécifiques à un service pour AmazonEC2, consultez la section Clés de condition pour Amazon. EC2 Amazon implémente EC2 également les clés de condition AWS globales. Pour plus d'informations, consultez la section Informations disponibles dans toutes les demandes dans le Guide de IAM l'utilisateur.

Toutes les EC2 actions Amazon prennent en charge les clés de ec2:Region condition aws:RequestedRegion et. Pour de plus amples informations, veuillez consulter Exemple : Restreindre l’accès à une région spécifique.

Pour utiliser une clé de condition dans votre IAM politique, utilisez l'Conditioninstruction. Par exemple, la politique suivante accorde aux utilisateurs l’autorisation d’ajouter et de supprimer des règles entrantes et sortantes pour n’importe quel groupe de sécurité. Il utilise la clé de ec2:Vpc condition pour spécifier que ces actions ne peuvent être effectuées que sur des groupes de sécurité spécifiquesVPC.

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress"], "Resource": "arn:aws:ec2:region:account:security-group/*", "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:region:account:vpc/vpc-11223344556677889" } } } ] }

Si vous spécifiez plusieurs conditions ou plusieurs clés dans une seule condition, nous les évaluons à l'aide d'une AND opération logique. Si vous spécifiez une seule condition avec plusieurs valeurs pour une clé, la condition est analysée à l’aide d’une opération logique OR. Pour que les autorisations soient accordées, toutes les conditions doivent être satisfaites.

Vous pouvez aussi utiliser des espaces réservés quand vous spécifiez des conditions. Pour plus d'informations, voir Éléments IAM de politique : variables et balises dans le guide de IAM l'utilisateur.

Important

De nombreuses clés de condition sont spécifiques à une ressource, et certaines API actions utilisent plusieurs ressources. Si vous écrivez une stratégie avec une clé de condition, utilisez l’élément Resource de la déclaration pour spécifier la ressource à laquelle la clé de condition s’applique. Dans le cas contraire, la politique peut empêcher totalement les utilisateurs d’exécuter l’action, car le contrôle de la condition échoue pour les ressources auxquelles la clé de condition ne s’applique pas. Si vous ne souhaitez pas spécifier de ressource, ou si vous avez écrit l'Actionélément de votre politique de manière à inclure plusieurs API actions, vous devez utiliser le type de ...IfExists condition pour vous assurer que la clé de condition est ignorée pour les ressources qui ne l'utilisent pas. Pour plus d'informations, voir... IfExists Conditions énoncées dans le guide de IAM l'utilisateur.

Clé de condition ec2:Attribute

La clé de condition ec2:Attribute peut être utilisée pour les conditions qui filtrent l’accès par un attribut d’une ressource.

Cette clé de condition ne prend en charge que les propriétés de type de données primitif (telles que les chaînes ou les entiers) ou les AttributeValueobjets complexes contenant uniquement une propriété Value (telle que la description ou les ImdsSupportobjets de l'ModifyImageAttributeAPIaction). La clé de condition ne peut pas être utilisée avec des objets complexes contenant plusieurs propriétés, tels que l'LaunchPermissionobjet de ModifyImageAttribute.

Par exemple, la politique suivante utilise la clé de ec2:Attribute/Description condition pour filtrer l'accès en fonction de l'objet Description complexe de l'ModifyImageAttributeAPIaction. La clé de condition n’autorise que les demandes qui modifient la description d’une image pour Production ou Development.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:ModifyImageAttribute", "Resource": "arn:aws:ec2:us-east-1::image/ami-*", "Condition": { "StringEquals": { "ec2:Attribute/Description": [ "Production", "Development" ] } } } ] }

L'exemple de politique suivant utilise la clé de ec2:Attribute condition pour filtrer l'accès en fonction de la propriété primitive Attribute de l'ModifyImageAttributeAPIaction. La clé de condition refuse toutes les demandes qui tentent de modifier la description d’une image.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:ModifyImageAttribute", "Resource": "arn:aws:ec2:us-east-1::image/ami-*", "Condition": { "StringEquals": { "ec2:Attribute": "Description" } } } ] }

Clés de condition ec2:ResourceID

Lorsque vous utilisez les clés de ec2:ResourceID condition suivantes avec les API actions spécifiées, la valeur de la clé de condition est utilisée pour spécifier la ressource résultante créée par l'APIaction. ec2:ResourceIDles clés de condition ne peuvent pas être utilisées pour spécifier une ressource source spécifiée dans la API demande. Si vous utilisez l'une des clés de ec2:ResourceID condition suivantes avec une valeur spécifiéeAPI, vous devez toujours spécifier le caractère générique (*). Si vous spécifiez une valeur différente, la condition se résout toujours en * pendant l’exécution. Par exemple, pour utiliser la clé de ec2:ImageId condition avec le CopyImageAPI, vous devez spécifier la clé de condition comme suit :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CopyImage", "Resource": "arn:aws:ec2:us-east-1::image/ami-*", "Condition": { "StringEquals": { ec2:ImageID": "*" } } } ] }

Nous vous recommandons d'éviter d'utiliser ces clés de condition pour effectuer les API actions suivantes :

  • ec2:DhcpOptionsIDCreateDhcpOptions

  • ec2:ImageIDCopyImageCreateImage,ImportImage, et RegisterImage

  • ec2:InstanceIDRunInstances et ImportInstance

  • ec2:InternetGatewayIDCreateInternetGateway

  • ec2:NetworkAclIDCreateNetworkAcl

  • ec2:NetworkInterfaceIDCreateNetworkInterface

  • ec2:PlacementGroupNameCreatePlacementGroup

  • ec2:RouteTableIDCreateRouteTable

  • ec2:SecurityGroupIDCreateSecurityGroup

  • ec2:SnapshotIDCopySnapshotCreateSnapshot,CreateSnapshots, et ImportSnapshots

  • ec2:SubnetIDCreateSubnet

  • ec2:VolumeIDCreateVolume et ImportVolume

  • ec2:VpcIDCreateVpc

  • ec2:VpcPeeringConnectionIDCreateVpcPeeringConnection

Pour filtrer l'accès en fonction d'une ressource spécifiqueIDs, nous vous recommandons d'utiliser l'élément de Resource politique comme suit.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CopyImage", "Resource": "arn:aws:ec2:us-east-1::image/ami-01234567890abcdef" } ] }

Clé de condition ec2:SourceInstanceARN

Permet ec2:SourceInstanceARN de spécifier ARN l'instance à partir de laquelle une demande est effectuée. Il s'agit d'une clé de condition AWS globale, ce qui signifie que vous pouvez l'utiliser avec des services autres qu'AmazonEC2. Pour un exemple de stratégie, consultez Exemple : autoriser une instance spécifique à afficher les ressources d'autres AWS services.

Contrôlez l'accès à l'aide de l'accès basé sur les attributs

Lorsque vous créez une IAM politique qui autorise les utilisateurs à utiliser les EC2 ressources, vous pouvez inclure des informations sur les balises dans l'Conditionélément de la stratégie afin de contrôler l'accès en fonction des balises. C'est ce que l'on appelle le contrôle d'accès basé sur les attributs ()ABAC. ABACpermet de mieux contrôler les ressources qu'un utilisateur peut modifier, utiliser ou supprimer. Pour plus d'informations, voir À quoi ça ABAC sert AWS ?

Par exemple, vous pouvez créer une stratégie qui permet aux utilisateurs de résilier une instance, mais qui refuse l’action si l’instance possède la balise environment=production. Pour ce faire, vous utilisez la clé de condition aws:ResourceTag pour autoriser ou refuser l’accès à la ressource en fonction des balises attachées à la ressource.

"StringEquals": { "aws:ResourceTag/environment": "production" }

Pour savoir si une EC2 API action Amazon permet de contrôler l'accès à l'aide de la clé de aws:ResourceTag condition, consultez Actions, ressources et clés de condition pour Amazon EC2. Notez que les actions Describe ne prennent pas en charge les autorisations au niveau des ressources, vous devez donc les spécifier dans une instruction distincte sans condition.

Pour des exemples IAM de politiques, voirExemples de politiques pour contrôler l'accès à Amazon EC2 API.

Si vous autorisez ou refusez à des utilisateurs l’accès à des ressources en fonction de balises, vous devez envisager de refuser de manière explicite la possibilité pour les utilisateurs d’ajouter ces balises ou de les supprimer des mêmes ressources. Sinon, il sera possible pour un utilisateur de contourner vos restrictions et d’obtenir l’accès à une ressource en modifiant ses balises.

Octroi d’autorisations aux utilisateurs, aux groupes et aux rôles

Pour activer l’accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :

Vérifier que les utilisateurs ont les autorisations requises

Une fois que vous avez créé une IAM politique, nous vous recommandons de vérifier si elle accorde aux utilisateurs les autorisations nécessaires pour utiliser les API actions et les ressources spécifiques dont ils ont besoin avant de mettre la politique en production.

Créez d'abord un utilisateur à des fins de test, puis associez la IAM politique que vous avez créée à l'utilisateur de test. Ensuite, créez une demande en tant qu’utilisateur test.

Si l'EC2action Amazon que vous testez crée ou modifie une ressource, vous devez effectuer la demande en utilisant le DryRun paramètre (ou exécuter la AWS CLI commande avec l'--dry-runoption). Dans ce cas, l’appel conclut le contrôle d’autorisation, mais non l’opération. Par exemple, vous pouvez vérifier si l’utilisateur peut terminer une instance particulière sans réellement l’achever. Si l’utilisateur a les autorisations requises, la demande retourne DryRunOperation ; sinon, elle retourne UnauthorizedOperation.

Si la politique n’accorde pas à l’utilisateur les autorisations que vous escomptiez, ou si elles sont trop excessives, vous pouvez ajuster la politique selon vos besoins et la tester à nouveau jusqu’à ce que vous obteniez les résultats souhaités.

Important

La propagation des modifications de la politique peut durer plusieurs minutes avant qu’elles ne prennent effet. Par conséquent, il est recommandé que vous laissiez s’écouler cinq minutes avant de tester les mises à jour de votre politique.

Si un contrôle d’autorisation échoue, la demande retourne un message codé avec les informations de diagnostic. Vous pouvez décoder le message à l’aide de l’action DecodeAuthorizationMessage. Pour plus d'informations, reportez-vous DecodeAuthorizationMessageà la section AWS Security Token Service APIRéférence et decode-authorization-messageà la Référence des AWS CLI commandes.