Structure d’une politique - 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.

Structure d’une politique

Les rubriques suivantes expliquent la structure d’une politique IAM.

Syntaxe d’une politique

Une politique IAM est un document JSON qui se compose 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. Comme, par défaut, les utilisateurs n’ont pas la permission d’utiliser les ressources et les actions d’API, toutes les demandes sont refusées. Une autorisation explicite remplace l’autorisation par défaut. Un refus explicite remplace toute autorisation.

  • Action : action désigne l’action d’API 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 actions d’API Amazon EC2 vous permettent d’inclure des ressources spécifiques dans votre politique qui peuvent être créées ou modifiées par l’action. Vous spécifiez une ressource à l’aide d’un Amazon Resource Name (ARN) ou du caractère générique (*) pour indiquer que l’instruction s’applique à toutes les ressources. Pour plus d’informations, consultez Autorisations au niveau des ressources prises en charge pour les opérations d’API Amazon EC2.

  • Condition : les conditions sont facultatives. Elles permettent de contrôler à quel moment votre politique est effective. Pour plus d’informations sur la spécification des conditions pour Amazon EC2, consultez Clés de condition pour Amazon EC2.

Pour plus d’informations sur les exigences de stratégie, consultez Référence des éléments de stratégie IAM JSON dans le Guide de l’utilisateur IAM. Pour obtenir des déclarations de politique IAM pour Amazon EC2, consultez Exemples de politiques pour travailler avec le AWS CLI ou un AWS SDK.

Actions pour Amazon EC2

Dans une déclaration de politique IAM, vous pouvez spécifier une action d’API à partir de n’importe quel service prenant en charge IAM. Pour Amazon EC2, utilisez le préfixe suivant avec le nom de l’action d’API : 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 actions d’API Amazon EC2 Describe* ne sont pas compatibles avec les autorisations de niveau ressource. Pour en savoir plus sur les autorisations de ressources pour Amazon EC2, consultez Stratégies IAM pour Amazon EC2.

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

"Action": "ec2:*"

Pour afficher la liste des actions Amazon EC2, consultez Actions définies par Amazon EC2 dans Référence de l’autorisation de service.

Autorisations au niveau des ressources prises en charge pour les opérations d’API Amazon EC2

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 actions Amazon EC2, vous pouvez contrôler à quel moment les utilisateurs sont autorisés à utiliser ces actions en fonction des conditions qui doivent être satisfaites, ou les ressources spécifiques que les utilisateurs sont autorisés à utiliser. Par exemple, vous pouvez accorder aux utilisateurs les autorisations de lancer des instances, mais uniquement d’un type spécifique et seulement à l’aide d’une AMI spécifique.

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

Pour afficher les tableaux qui identifient les actions d’API Amazon EC2 qui prennent en charge les autorisations au niveau des ressources, ainsi que les ARN et les clés de condition que vous pouvez utiliser dans une stratégie, consultez la section Actions, ressources et clés de condition pour Amazon EC2.

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

Amazon Resource Names (ARN) pour Amazon EC2

Chaque déclaration de politique IAM s’applique aux ressources que vous spécifiez à l’aide de leur ARN.

Un ARN obéit à 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).

chemin de la ressource

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 déclaration à l’aide de son ARN comme 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 aussi spécifier toutes les ressources Amazon EC2 qui appartiennent à un compte spécifique à l’aide du caractère générique * comme suit :

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

Pour spécifier toutes les ressources, ou si une action d’API spécifique ne prend pas en charge les ARN, utilisez le caractère générique * dans l’élément Resource comme suit :

"Resource": "*"

De nombreuses actions d’API Amazon EC2 nécessitent plusieurs ressources. Par exemple, comme AttachVolume attache un volume Amazon EBS à une instance, un utilisateur doit avoir les autorisations nécessaires pour utiliser le volume et l’instance. Pour spécifier plusieurs ressources dans une seule déclaration, séparez leurs ARN par des virgules, comme suit :

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

Pour obtenir la liste des ARN pour les ressources Amazon EC2, 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 au service pour Amazon EC2, consultez la section Clés de condition pour Amazon EC2. Amazon EC2 implémente également les clés de condition AWS globales. Pour plus d’informations, consultez Informations disponibles dans toutes les demandes dans le Guide de l’utilisateur IAM.

Pour utiliser une clé de condition dans votre stratégie IAM, utilisez l’instruction Condition. 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é. Elle utilise la clé de condition ec2:Vpc pour spécifier que ces actions ne peuvent être effectuées que sur des groupes de sécurité dans un VPC spécifique.

{ "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 même condition, elles sont analysées à l’aide d’une opération logique AND. 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, consultez Éléments des politiques IAM : variables et balises dans le Guide de l’utilisateur IAM.

Important

Plusieurs clés de condition sont propres à une ressource et certaines actions d’API 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 voulez pas spécifier de ressource ou si vous avez écrit l’élément Action de votre stratégie pour inclure plusieurs actions d’API, vous devez utiliser le type de condition ...IfExists pour garantir 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 l'utilisateur IAM.

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

Clé de condition ec2:SourceInstanceARN

La clé de condition ec2:SourceInstanceARN peut être utilisée pour les conditions qui spécifient le nom ARN de l’instance à partir de laquelle une demande a été effectuée. Il s'agit d'une clé de condition AWS globale qui n'est pas spécifique à un service. Pour examiner des exemples de politique, consultez Amazon EC2  : autoriser une instance EC2 à attacher et détacher des volumes et Exemple : autoriser une instance spécifique à afficher les ressources d'autres AWS services. La clé ec2:SourceInstanceARN ne peut pas être utilisée comme variable pour renseigner le nom ARN de l’élément Resource dans une instruction.

Pour obtenir des déclarations de politique pour Amazon EC2, consultez Exemples de politiques pour travailler avec le AWS CLI ou un AWS SDK.

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. La clé de condition ne prend en charge que les propriétés de type de données primitif (telles qu'une chaîne ou un entier) ou les AttributeValueobjets complexes dotés uniquement d'une propriété Value (comme la description ou les ImdsSupportobjets de l'action d'ModifyImageAttributeAPI).

Important

La clé de condition ne peut pas être utilisée avec des objets complexes dotés de plusieurs propriétés, tels que l'LaunchPermissionobjet de l'action d'ModifyImageAttributeAPI.

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'action d'ModifyImageAttributeAPI. 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'action d'ModifyImageAttributeAPI. 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 condition ec2:ResourceID suivantes avec les actions d’API spécifiées, la valeur de la clé de condition est utilisée pour spécifier la ressource résultante créée par l’action d’API. Les clés de condition ec2:ResourceID ne peuvent pas être utilisées pour spécifier une ressource source spécifiée dans la demande d’API. Si vous utilisez l’une des clés de condition ec2:ResourceID suivantes avec une API spécifiée, vous devez alors 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 l'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": "*" } } } ] }
Clé de condition Action d’API
ec2:DhcpOptionsID
  • CreateDhcpOptions

ec2:ImageID
  • CopyImage

  • CreateImage

  • ImportImage

  • RegisterImage

ec2:InstanceID
  • RunInstances

  • ImportInstance

ec2:InternetGatewayID
  • CreateInternetGateway

ec2:NetworkAclID
  • CreateNetworkAcl

ec2:NetworkInterfaceID
  • CreateNetworkInterface

ec2:PlacementGroupName
  • CreatePlacementGroup

ec2:RouteTableID
  • CreateRouteTable

ec2:SecurityGroupID
  • CreateSecurityGroup

ec2:SnapshotID
  • CopySnapshot

  • CreateSnapshot

  • CreateSnapshots

  • ImportSnapshots

ec2:SubnetID
  • CreateSubnet

ec2:VolumeID
  • CreateVolume

  • ImportVolume

ec2:VpcID
  • CreateVpc

ec2:VpcPeeringConnectionID
  • CreateVpcPeeringConnection

Nous vous recommandons d’éviter d’utiliser les clés de condition ec2:ResourceID avec ces actions d’API. Si vous devez filtrer l’accès en fonction d’ID de ressources spécifiques, nous vous recommandons plutôt de le faire à l’aide de l’élément de politique Resource, comme suit :

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

Vérifier que les utilisateurs ont les autorisations requises

Après que vous avez créé une politique IAM, il vous est recommandé de vérifier si elle accorde aux utilisateurs les autorisations d’utiliser les actions d’API et ressources particulières dont ils ont besoin avant que vous ne placiez la politique en production.

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

Si l’action Amazon EC2 que vous testez crée ou modifie une ressource, vous devez effectuer la demande à l’aide du paramètre DryRun (ou exécuter la commande AWS CLI avec l’option --dry-run). 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, consultez DecodeAuthorizationMessagela référence de l'AWS Security Token Service API et decode-authorization-messagela référence des AWS CLI commandes.