Exemples IAM de politiques pour Amazon EBS - Amazon EBS

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.

Exemples IAM de politiques pour Amazon EBS

Par défaut, les utilisateurs et les rôles ne sont pas autorisés à créer ou à modifier EBS des ressources Amazon. Ils ne peuvent pas non plus effectuer de tâches en utilisant le AWS Management Console, AWS Command Line Interface (AWS CLI) ou AWS API. Pour autoriser les utilisateurs à effectuer des actions sur les ressources dont ils ont besoin, un IAM administrateur peut créer des IAM politiques. L'administrateur peut ensuite ajouter les IAM politiques aux rôles, et les utilisateurs peuvent assumer les rôles.

Pour savoir comment créer une politique IAM basée sur l'identité à l'aide de ces exemples de documents de JSON stratégie, consultez la section Créer des IAM politiques (console) dans le guide de l'IAMutilisateur.

Pour plus de détails sur les actions et les types de ressources définis par AmazonEBS, y compris le ARNs format de chaque type de ressource, consultez la section Actions, ressources et clés de condition pour Amazon Elastic Block Store dans la référence d'autorisation de service.

Bonnes pratiques en matière de politiques

Les politiques basées sur l'identité déterminent si quelqu'un peut créer, accéder ou supprimer EBS des ressources Amazon dans votre compte. Ces actions peuvent entraîner des frais pour votre Compte AWS. Lorsque vous créez ou modifiez des politiques basées sur l’identité, suivez ces instructions et recommandations :

  • Commencez AWS par les politiques gérées et passez aux autorisations du moindre privilège : pour commencer à accorder des autorisations à vos utilisateurs et à vos charges de travail, utilisez les politiques AWS gérées qui accordent des autorisations pour de nombreux cas d'utilisation courants. Ils sont disponibles dans votre Compte AWS. Nous vous recommandons de réduire davantage les autorisations en définissant des politiques gérées par les AWS clients spécifiques à vos cas d'utilisation. Pour plus d'informations, consultez les politiques AWS gérées ou les politiques AWS gérées pour les fonctions professionnelles dans le Guide de IAM l'utilisateur.

  • Appliquer les autorisations du moindre privilège : lorsque vous définissez des autorisations à IAM l'aide de politiques, accordez uniquement les autorisations nécessaires à l'exécution d'une tâche. Pour ce faire, vous définissez les actions qui peuvent être entreprises sur des ressources spécifiques dans des conditions spécifiques, également appelées autorisations de moindre privilège. Pour plus d'informations sur l'utilisation IAM pour appliquer des autorisations, consultez la section Politiques et autorisations IAM dans le guide de IAM l'utilisateur.

  • Utilisez des conditions dans IAM les politiques pour restreindre davantage l'accès : vous pouvez ajouter une condition à vos politiques pour limiter l'accès aux actions et aux ressources. Par exemple, vous pouvez rédiger une condition de politique pour spécifier que toutes les demandes doivent être envoyées en utilisantSSL. Vous pouvez également utiliser des conditions pour accorder l'accès aux actions de service si elles sont utilisées par le biais d'un service spécifique Service AWS, tel que AWS CloudFormation. Pour plus d'informations, voir Éléments IAM JSON de politique : Condition dans le guide de IAM l'utilisateur.

  • Utilisez IAM Access Analyzer pour valider vos IAM politiques afin de garantir des autorisations sécurisées et fonctionnelles. IAM Access Analyzer valide les politiques nouvelles et existantes afin qu'elles soient conformes au langage des IAM politiques (JSON) et IAM aux meilleures pratiques. IAMAccess Analyzer fournit plus de 100 vérifications des politiques et des recommandations exploitables pour vous aider à créer des politiques sécurisées et fonctionnelles. Pour plus d'informations, consultez la section Valider les politiques avec IAM Access Analyzer dans le guide de l'IAMutilisateur.

  • Exiger l'authentification multifactorielle (MFA) : si vous avez un scénario qui nécessite des IAM utilisateurs ou un utilisateur root Compte AWS, activez-le MFA pour une sécurité supplémentaire. Pour exiger le MFA moment où les API opérations sont appelées, ajoutez MFA des conditions à vos politiques. Pour plus d'informations, consultez la section APIAccès sécurisé avec MFA dans le guide de IAM l'utilisateur.

Pour plus d'informations sur les meilleures pratiques en matière de sécuritéIAM, consultez la section Bonnes pratiques en matière de sécurité IAM dans le Guide de IAM l'utilisateur.

Autoriser les utilisateurs à utiliser la EBS console Amazon

Pour accéder à la console Amazon Elastic Block Store, vous devez disposer d'un ensemble minimal d'autorisations. Ces autorisations doivent vous permettre de répertorier et de consulter les informations relatives aux EBS ressources Amazon présentes dans votre Compte AWS. Si vous créez une politique basée sur l’identité qui est plus restrictive que l’ensemble minimum d’autorisations requis, la console ne fonctionnera pas comme prévu pour les entités (utilisateurs ou rôles) tributaires de cette politique.

Il n'est pas nécessaire d'accorder des autorisations de console minimales aux utilisateurs qui appellent uniquement le AWS CLI ou le AWS API. Au lieu de cela, autorisez uniquement l'accès aux actions correspondant à l'APIopération qu'ils tentent d'effectuer.

Pour garantir que les utilisateurs et les rôles peuvent toujours utiliser la EBS console Amazon, associez également la politique Amazon EBS ConsoleAccess ou la politique ReadOnly AWS gérée aux entités. Pour plus d'informations, consultez la section Ajouter des autorisations à un utilisateur dans le Guide de IAM l'utilisateur.

Autorisation accordée aux utilisateurs pour afficher leurs propres autorisations

Cet exemple montre comment créer une politique qui permet aux IAM utilisateurs de consulter les politiques intégrées et gérées associées à leur identité d'utilisateur. Cette politique inclut les autorisations permettant d'effectuer cette action sur la console ou par programmation à l'aide du AWS CLI ou. AWS API

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

Permettre aux utilisateurs de travailler avec des volumes

Exemple : Attacher et détacher des volumes

Lorsqu'une API action nécessite qu'un appelant spécifie plusieurs ressources, vous devez créer une déclaration de politique permettant aux utilisateurs d'accéder à toutes les ressources requises. Si vous devez utiliser un élément Condition avec une ou plusieurs de ces ressources, vous devez créer plusieurs déclarations, comme dans l’exemple ci-dessous.

La politique suivante permet aux utilisateurs d'associer des volumes avec le tag « volume_user = iam-user-name» aux instances portant le tag department=dev « », et de détacher ces volumes de ces instances. Si vous associez cette politique à un IAM groupe, la variable de aws:username stratégie donne à chaque utilisateur du groupe l'autorisation d'attacher ou de détacher des volumes des instances avec une balise nommée volume_user dont la valeur est son nom d'utilisateur.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:us-east-1:account-id:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/department": "dev" } } }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition": { "StringEquals": { "aws:ResourceTag/volume_user": "${aws:username}" } } } ] }

Exemple : Créer un volume

La politique suivante permet aux utilisateurs d'utiliser l'CreateVolumeAPIaction. L’utilisateur est autorisé à créer un volume uniquement si le volume est chiffré et seulement si la taille du volume est inférieure à 20 Gio.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateVolume" ], "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition":{ "NumericLessThan": { "ec2:VolumeSize" : "20" }, "Bool":{ "ec2:Encrypted" : "true" } } } ] }

Exemple : Créer un volume avec des balises

La stratégie suivante inclut la clé de condition aws:RequestTag qui exige aux utilisateurs d’attribuer des balises aux volumes qu’ils créent avec les balises costcenter=115 et stack=prod. Si les utilisateurs ne transmettent pas ces balises spécifiques ou s’ils ne spécifient pas du tout de balises, la demande échoue.

Pour les actions de création de ressources qui appliquent des balises, les utilisateurs doivent être autorisés à effectuer l’action CreateTags. La deuxième déclaration utilise la clé de condition ec2:CreateAction pour permettre aux utilisateurs de créer des balises uniquement dans le contexte de CreateVolume. Les utilisateurs ne peuvent pas attribuer des balises à des volumes existants ou à d’autres ressources.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateTaggedVolumes", "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition": { "StringEquals": { "aws:RequestTag/costcenter": "115", "aws:RequestTag/stack": "prod" } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "CreateVolume" } } } ] }

La politique suivante permet aux utilisateurs de créer un volume sans avoir à spécifier des balises. L’action CreateTags est uniquement évaluée si les balises sont spécifiées dans la demande CreateVolume. Si les utilisateurs spécifient une balise, elle doit être purpose=test. Aucune autre balise n’est autorisée dans la demande.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "test", "ec2:CreateAction" : "CreateVolume" }, "ForAllValues:StringEquals": { "aws:TagKeys": "purpose" } } } ] }

Exemple : utilisation de volumes à l'aide de la EC2 console Amazon

La politique suivante autorise les utilisateurs à consulter et à créer des volumes, ainsi qu'à attacher et détacher des volumes à des instances spécifiques à l'aide de la EC2 console Amazon.

Les utilisateurs peuvent attacher un volume aux instances ayant la balise "purpose=test", ainsi que détacher des volumes de ces instances. Pour attacher un volume à l'aide de la EC2 console Amazon, il est utile que les utilisateurs soient autorisés à utiliser l'ec2:DescribeInstancesaction, car cela leur permet de sélectionner une instance dans une liste préremplie dans la boîte de dialogue Attacher un volume. Cependant, comme cela permet aussi aux utilisateurs d’afficher toutes les instances sur la page Instances de la console, vous pouvez ignorer cette action.

Dans la première déclaration, l’action ec2:DescribeAvailabilityZones est nécessaire pour garantir qu’un utilisateur puisse sélectionner une zone de disponibilité lors de la création d’un volume.

Les utilisateurs ne peuvent pas baliser les volumes qu’ils créent (pendant ou après la création de volume).

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "ec2:DescribeAvailabilityZones", "ec2:CreateVolume", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:region:111122223333:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "test" } } }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:region:111122223333:volume/*" } ] }

Permettre aux utilisateurs de travailler avec des instantanés

Vous trouverez ci-dessous des exemples de politiques applicables à la fois CreateSnapshot (point-in-timeinstantané d'un EBS volume) et CreateSnapshots (instantanés multivolumes).

Exemple : Créer un instantané

La politique suivante permet aux clients d'utiliser l'CreateSnapshotAPIaction. Le client peut créer des instantanés uniquement si le volume est chiffré et seulement si la taille du volume est inférieure à 20 Gio.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*" }, { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1:account-id:volume/*", "Condition":{ "NumericLessThan":{ "ec2:VolumeSize":"20" }, "Bool":{ "ec2:Encrypted":"true" } } } ] }

Exemple : Créer des instantanés

La politique suivante permet aux clients d'utiliser l'CreateSnapshotsAPIaction. Le client ne peut créer des instantanés que si tous les volumes de l'instance sont de typeGP2.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":[ "arn:aws:ec2:us-east-1::snapshot/*", "arn:aws:ec2:*:*:instance/*" ] }, { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1:*:volume/*", "Condition":{ "StringLikeIfExists":{ "ec2:VolumeType":"gp2" } } } ] }

Exemple : Créer un instantané avec des balises

La stratégie suivante inclut la clé de condition aws:RequestTag, qui nécessite que le client applique les balises costcenter=115 et stack=prod à tout nouvel instantané. Si les utilisateurs ne transmettent pas ces balises spécifiques ou s’ils ne spécifient pas du tout de balises, la demande échoue.

Pour les actions de création de ressources qui appliquent des balises, les clients doivent être autorisés à effectuer l’action CreateTags. La troisième déclaration utilise la clé de condition ec2:CreateAction pour permettre aux clients de créer des balises uniquement dans le contexte de CreateSnapshot. Les clients ne peuvent pas attribuer des balises à des volumes existants ou à d’autres ressources.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1:account-id:volume/*" }, { "Sid":"AllowCreateTaggedSnapshots", "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/costcenter":"115", "aws:RequestTag/stack":"prod" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "ec2:CreateAction":"CreateSnapshot" } } } ] }

Exemple : Créer des instantanés multi-volumes avec des identifications

La politique suivante comprend la clé de condition aws:RequestTag qui exige que le client applique les identifications costcenter=115 et stack=prod lors de la création d’un jeu d’instantanés multi-volumes. Si les utilisateurs ne transmettent pas ces balises spécifiques ou s’ils ne spécifient pas du tout de balises, la demande échoue.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":[ "arn:aws:ec2:us-east-1::snapshot/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ] }, { "Sid":"AllowCreateTaggedSnapshots", "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/costcenter":"115", "aws:RequestTag/stack":"prod" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "ec2:CreateAction":"CreateSnapshots" } } } ] }

La politique suivante permet aux clients de créer un instantané sans avoir à spécifier des balises. L’action CreateTags est évaluée uniquement si des balises sont spécifiées dans la demande CreateSnapshot ou CreateSnapshots. Les identifications peuvent être omises dans la demande. Si une balise est spécifiée, elle doit être de type purpose=test. Aucune autre balise n’est autorisée dans la demande.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"*" }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/purpose":"test", "ec2:CreateAction":"CreateSnapshot" }, "ForAllValues:StringEquals":{ "aws:TagKeys":"purpose" } } } ] }

La politique suivante permet aux clients de créer des jeux d’instantanés multi-volumes sans avoir à spécifier des identifications. L’action CreateTags est évaluée uniquement si des balises sont spécifiées dans la demande CreateSnapshot ou CreateSnapshots. Les identifications peuvent être omises dans la demande. Si une balise est spécifiée, elle doit être de type purpose=test. Aucune autre balise n’est autorisée dans la demande.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"*" }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/purpose":"test", "ec2:CreateAction":"CreateSnapshots" }, "ForAllValues:StringEquals":{ "aws:TagKeys":"purpose" } } } ] }

La stratégie suivante permet de créer des instantanés uniquement si le volume source est balisé avec User:username pour le client et que l’instantané lui-même est balisé avec Environment:Dev et User:username. Le client peut ajouter des balises supplémentaires à l’instantané.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1:account-id:volume/*", "Condition":{ "StringEquals":{ "aws:ResourceTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/Environment":"Dev", "aws:RequestTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*" } ] }

La stratégie suivante pour CreateSnapshots permet de créer des instantanés uniquement si le volume source est balisé avec User:username pour le client et que l’instantané lui-même est balisé avec Environment:Dev et User:username.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1:*:instance/*", }, { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1:account-id:volume/*", "Condition":{ "StringEquals":{ "aws:ResourceTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:RequestTag/Environment":"Dev", "aws:RequestTag/User":"${aws:username}" } } }, { "Effect":"Allow", "Action":"ec2:CreateTags", "Resource":"arn:aws:ec2:us-east-1::snapshot/*" } ] }

La stratégie suivante permet de supprimer un instantané uniquement s’il est balisé à l’aide de User:username pour le client.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:DeleteSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:ResourceTag/User":"${aws:username}" } } } ] }

La stratégie suivante permet à un client de créer un instantané mais l’empêche d’exécuter cette action si l’instantané créé comporte une clé de balise value=stack.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":[ "ec2:CreateSnapshot", "ec2:CreateTags" ], "Resource":"*" }, { "Effect":"Deny", "Action":"ec2:CreateSnapshot", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "ForAnyValue:StringEquals":{ "aws:TagKeys":"stack" } } } ] }

La stratégie suivante permet à un client de créer des instantanés mais l’empêche d’exécuter cette action si les instantanés créés comportent une clé de balise value=stack.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":[ "ec2:CreateSnapshots", "ec2:CreateTags" ], "Resource":"*" }, { "Effect":"Deny", "Action":"ec2:CreateSnapshots", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "ForAnyValue:StringEquals":{ "aws:TagKeys":"stack" } } } ] }

La politique suivante vous permet d’associer plusieurs actions dans une même politique. Vous pouvez uniquement créer un instantané (dans le contexte de CreateSnapshots) lorsque l’instantané est créé dans la région us-east-1. Vous pouvez uniquement créer des instantanés (dans le contexte de CreateSnapshots) lorsque les instantanés sont créés dans la région us-east-1 et que le type d’instance est t2*.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":[ "ec2:CreateSnapshots", "ec2:CreateSnapshot", "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:snapshot/*", "arn:aws:ec2:*:*:volume/*" ], "Condition":{ "StringEqualsIgnoreCase": { "ec2:Region": "us-east-1" }, "StringLikeIfExists": { "ec2:InstanceType": ["t2.*"] } } } ] }

Exemple : Copier des instantanés

Les autorisations au niveau des ressources spécifiées pour l'CopySnapshotaction s'appliquent uniquement au nouveau cliché. Elles ne peuvent pas être spécifiées pour l’instantané source.

L’exemple de stratégie suivant permet aux principaux de copier des instantanés uniquement si le nouvel instantané est créé avec la clé de balise purpose et la valeur de balise production (purpose=production).

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCopySnapshotWithTags", "Effect": "Allow", "Action": "ec2:CopySnapshot", "Resource": "arn:aws:ec2:*:account-id:snapshot/*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "production" } } } ] }

Exemple : Modifier les paramètres d’autorisation d’instantanés

La politique suivante autorise la modification d'un instantané uniquement si celui-ci est étiqueté avecUser:username, où username est le nom d'utilisateur du AWS compte du client. La demande échoue si cette condition n’est pas respectée.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Action":"ec2:ModifySnapshotAttribute", "Resource":"arn:aws:ec2:us-east-1::snapshot/*", "Condition":{ "StringEquals":{ "aws:ResourceTag/user-name":"${aws:username}" } } } ] }