Exemples de stratégie Amazon VPC - Amazon Virtual Private Cloud

Exemples de stratégie Amazon VPC

Les utilisateurs et les rôles IAM ne sont pas autorisés, par défaut, à créer ou modifier des ressources VPC. Ils ne peuvent pas non plus exécuter des tâches à l'aide de AWS Management Console, AWS CLI ou de l'API AWS. Un administrateur IAM doit créer des politiques IAM autorisant les utilisateurs et les rôles à exécuter des opérations d'API spécifiques sur les ressources spécifiées dont ils ont besoin. Il doit ensuite attacher ces politiques aux utilisateurs ou aux groupes IAM ayant besoin de ces autorisations.

Pour savoir comment créer une stratégie IAM basée sur l’identité à l'aide de ces exemples de documents de stratégie JSON, veuillez consulter Création de stratégies dans l'onglet JSON dans le Guide de l’utilisateur IAM.

Bonnes pratiques en matière de politiques

Les stratégies basées sur l'identité sont très puissantes. Elles déterminent si une personne peut créer, consulter ou supprimer des ressources Amazon VPC 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 :

  • Commencer à utiliser les AWSstratégies gérées : pour commencer à utiliser rapidement Amazon VPC, utilisez des stratégies gérées par AWS pour accorder à vos employés les autorisations dont ils ont besoin. Ces stratégies sont déjà disponibles dans votre compte et sont gérées et mises à jour par AWS. Pour plus d'informations, consultez Démarrer avec les autorisations à l'aide des politiques gérées par AWS dans le Guide de l'utilisateur IAM.

  • Accorder le moindre privilège : lorsque vous créez des politiques personnalisées, accordez uniquement les autorisations nécessaires à l'exécution d'une tâche. Commencez avec un minimum d'autorisations et accordez-en d'autres si nécessaire. Cette méthode est plus sûre que de commencer avec des autorisations trop permissives et d'essayer de les restreindre plus tard. Pour plus d'informations, consultez Accorder le moindre privilège possible dans le Guide de l'utilisateur IAM.

  • Activer la MFA pour les opérations confidentielles : pour plus de sécurité, demandez aux utilisateurs IAM d'utiliser l'Authentification multifacteur (MFA) pour accéder à des ressources ou à des opérations d'API confidentielles. Pour plus d'informations, consultez Utilisation de l'authentification multifacteur (MFA) dans AWS dans le Guide de l'utilisateur IAM.

  • Utiliser des conditions de politique pour davantage de sécurité : dans la mesure du possible, définissez les conditions dans lesquelles vos politiques basées sur l'identité autorisent l'accès à une ressource. Par exemple, vous pouvez rédiger les conditions pour spécifier une plage d'adresses IP autorisées d'où peut provenir une demande. Vous pouvez également écrire des conditions pour autoriser les requêtes uniquement à une date ou dans une plage de temps spécifiée, ou pour imposer l'utilisation de SSL ou de MFA. Pour de plus amples informations, veuillez consulter Conditions pour éléments de stratégie JSON IAM dans le Guide de l’utilisateur IAM.

Utiliser la console Amazon VPC

Pour accéder à la console Amazon VPC, vous devez disposer d'un ensemble minimum d'autorisations. Ces autorisations doivent vous permettre de répertorier et consulter des informations sur les ressources Amazon VPC dans votre compte AWS. Si vous créez une stratégie basée sur l'identité qui est plus restrictive que les autorisations minimales requises, la console ne fonctionnera pas comme prévu pour les entités (utilisateurs et rôles IAM) tributaires de cette stratégie.

La stratégie suivante autorise les utilisateurs à répertorier les ressources dans la console VPC, mais pas à les créer, à les mettre à jour ou à les supprimer.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeClassicLinkInstances", "ec2:DescribeClientVpnEndpoints", "ec2:DescribeCustomerGateways", "ec2:DescribeDhcpOptions", "ec2:DescribeEgressOnlyInternetGateways", "ec2:DescribeFlowLogs", "ec2:DescribeInternetGateways", "ec2:DescribeManagedPrefixLists", "ec2:DescribeMovingAddresses", "ec2:DescribeNatGateways", "ec2:DescribeNetworkAcls", "ec2:DescribeNetworkInterfaceAttribute", "ec2:DescribeNetworkInterfacePermissions", "ec2:DescribeNetworkInterfaces", "ec2:DescribePrefixLists", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroupReferences", "ec2:DescribeSecurityGroups", "ec2:DescribeSecurityGroupRules", "ec2:DescribeStaleSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeTags", "ec2:DescribeTrafficMirrorFilters", "ec2:DescribeTrafficMirrorSessions", "ec2:DescribeTrafficMirrorTargets", "ec2:DescribeTransitGateways", "ec2:DescribeTransitGatewayVpcAttachments", "ec2:DescribeTransitGatewayRouteTables", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcClassicLink", "ec2:DescribeVpcClassicLinkDnsSupport", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcEndpointConnectionNotifications", "ec2:DescribeVpcEndpointConnections", "ec2:DescribeVpcEndpointServiceConfigurations", "ec2:DescribeVpcEndpointServicePermissions", "ec2:DescribeVpcEndpointServices", "ec2:DescribeVpcPeeringConnections", "ec2:DescribeVpcs", "ec2:DescribeVpnConnections", "ec2:DescribeVpnGateways", "ec2:GetManagedPrefixListAssociations", "ec2:GetManagedPrefixListEntries" ], "Resource": "*" } ] }

Vous n'avez pas besoin d'accorder les autorisations minimales de console pour les utilisateurs qui effectuent des appels uniquement à l'interface AWS CLI ou API AWS. Au lieu de cela, vous ne devez accorder à ces utilisateurs que l'accès aux actions correspondant à l'opération API qu'ils doivent effectuer.

Créer un VPC avec un sous-réseau public

L'exemple suivant donne la possibilité aux utilisateurs de créer des VPC, des sous-réseaux, des tables de routage et des passerelles Internet. Les utilisateurs peuvent également attacher une passerelle Internet à un VPC et créer des routes dans les tables de routage. L'action ec2:ModifyVpcAttribute permet aux utilisateurs d'activer les noms d'hôte DNS pour le VPC, de sorte que chaque instance lancée dans un VPC reçoive un nom d'hôte DNS.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones", "ec2:CreateRouteTable", "ec2:CreateRoute", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:AssociateRouteTable", "ec2:ModifyVpcAttribute" ], "Resource": "*" } ] }

La politique précédente permet également aux utilisateurs de créer un VPC dans la console Amazon VPC.

Modifier et supprimer les ressources VPC

Vous avez la possibilité de contrôler les ressources VPC que les utilisateurs peuvent modifier ou supprimer. Par exemple, la stratégie suivante permet aux utilisateurs de travailler avec et de supprimer des tables de routage comportant la balise Purpose=Test. La stratégie précise également que les utilisateurs peuvent uniquement supprimer les passerelles Internet qui possèdent la balise Purpose=Test. Les utilisateurs ne peuvent pas utiliser les tables de routage ou les passerelles Internet qui ne possèdent pas cette balise.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DeleteInternetGateway", "Resource": "arn:aws:ec2:*:*:internet-gateway/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Test" } } }, { "Effect": "Allow", "Action": [ "ec2:DeleteRouteTable", "ec2:CreateRoute", "ec2:ReplaceRoute", "ec2:DeleteRoute" ], "Resource": "arn:aws:ec2:*:*:route-table/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Test" } } } ] }

Gérer les groupes de sécurité

La politique suivante permet aux utilisateurs de gérer les groupes de sécurité. La première instruction permet aux utilisateurs de supprimer tout groupe de sécurité comportant l'identification Stack=test et de gérer les règles entrantes et sortantes de tout groupe de sécurité avec l'identification Stack=test. La deuxième instruction exige des utilisateurs qu'ils marquent tous les groupes de sécurité qu'ils créent avec l'identification Stack=Test. La troisième instruction permet aux utilisateurs de créer des identifications lors de la création d'un groupe de sécurité. La quatrième instruction permet aux utilisateurs d'afficher tout groupe de sécurité et toute règle de groupe de sécurité. La cinquième instruction permet aux utilisateurs de créer un groupe de sécurité dans un VPC.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RevokeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:UpdateSecurityGroupRuleDescriptionsEgress", "ec2:RevokeSecurityGroupEgress", "ec2:DeleteSecurityGroup", "ec2:ModifySecurityGroupRules", "ec2:UpdateSecurityGroupRuleDescriptionsIngress" ], "Resource": "arn:aws:ec2:*:*:security-group/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Stack": "test" } } }, { "Effect": "Allow", "Action": "ec2:CreateSecurityGroup", "Resource": "arn:aws:ec2:*:*:security-group/*", "Condition": { "StringEquals": { "aws:RequestTag/Stack": "test" }, "ForAllValues:StringEquals": { "aws:TagKeys": "Stack" } } }, { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:security-group/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateSecurityGroup" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroupRules", "ec2:DescribeVpcs", "ec2:DescribeSecurityGroups" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:CreateSecurityGroup", "Resource": "arn:aws:ec2:*:*:vpc/*" } ] }

Pour permettre aux utilisateurs de modifier le groupe de sécurité associé à une instance, ajoutez l'action ec2:ModifyInstanceAttribute à votre stratégie.

Ajoutez l'action ec2:ModifyNetworkInterfaceAttribute à votre stratégie pour permettre aux utilisateurs de modifier les groupes de sécurité d'une interface réseau.

Gérer les règles de groupe de sécurité

La stratégie suivante accorde aux utilisateurs l'autorisation d'afficher tous les groupes de sécurité et toutes les règles de groupe de sécurité, d'ajouter et de supprimer des règles entrantes et sortantes pour les groupes de sécurité d’un VPC spécifique et de modifier des descriptions de règles pour le VPC spécifié. La première instruction utilise la clé de condition ec2:Vpc pour limiter les autorisations à un VPC spécifique.

La deuxième instruction autorise les utilisateurs à décrire tous l’ensemble des groupes de sécurité, règles de groupe de sécurité et balises. Cela permet aux utilisateurs d'afficher les règles de sécurité du groupe pour les modifier.

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:RevokeSecurityGroupIngress", "ec2:UpdateSecurityGroupRuleDescriptionsIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupEgress", "ec2:UpdateSecurityGroupRuleDescriptionsEgress", "ec2:ModifySecurityGroupRules" ], "Resource": "arn:aws:ec2:region:account-id:security-group/*", "Condition": { "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/vpc-id" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeSecurityGroupRules", "ec2:DescribeTags" ], "Resource": "*" } ] }

Lancer des instances dans un sous-réseau précis

La stratégie suivante autorise les utilisateurs à lancer des instances dans un sous-réseau spécifique et à utiliser un groupe de sécurité spécifique dans la demande. La stratégie l'effectue en spécifiant l'ARN pour le sous-réseau et l'ARN pour le groupe de sécurité. Si les utilisateurs tentent de lancer une instance dans un sous-réseau différent ou d'utiliser un groupe de sécurité différent, la demande échoue (à moins qu'une autre stratégie ou instruction n'autorise les utilisateurs à le faire).

La stratégie autorise également l'utilisation des ressources de l'interface réseau. Une fois lancée dans un sous-réseau, la demande RunInstances crée une interface réseau principale par défaut, afin que l'utilisateur ait besoin d'être autorisé à créer cette ressource lors du lancement de l'instance.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:subnet/subnet-id", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/sg-id" ] } ] }

Lancer des instances dans un VPC précis

La stratégie suivante autorise les utilisateurs à lancer des instances dans n'importe quel sous-réseau au sein d'un VPC spécifique. La stratégie l'effectue en appliquant une clé de condition (ec2:Vpc) à la ressource du sous-réseau.

La stratégie autorise également les utilisateurs à lancer des instances en n'utilisant que les AMI ayant la balise « "department=dev".

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:account-id:subnet/*", "Condition": { "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/vpc-id" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region::image/ami-*", "Condition": { "StringEquals": { "ec2:ResourceTag/department": "dev" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/*" ] } ] }

Exemples supplémentaires de stratégie Amazon VPC

Vous trouverez d'autres exemples de stratégies IAM liées à Amazon VPC dans la documentation suivante :