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.
AWS Identity and Access Management extraits de modèles
Cette section contient des extraits AWS Identity and Access Management de modèles.
Rubriques
- Déclaration d'une ressource d'utilisateur IAM
- Déclaration d'une ressource de clé d'accès IAM
- Déclaration d'une ressource de groupe IAM
- Ajout d'utilisateurs à un groupe
- Déclaration d'une stratégie IAM
- Déclaration d'une politique de compartiment Amazon S3
- Déclarer une politique SNS thématique Amazon
- Déclarer une SQS politique Amazon
- IAMexemples de modèles de rôles
Important
Lorsque vous créez ou mettez à jour une pile à l'aide d'un modèle contenant IAM des ressources, vous devez reconnaître l'utilisation des IAM fonctionnalités. Pour plus d'informations sur l'utilisation IAM des ressources dans les modèles, consultezContrôlez CloudFormation l'accès avec AWS Identity and Access Management.
Déclaration d'une ressource d'utilisateur IAM
Cet extrait montre comment déclarer une AWS::IAM::Userressource pour créer un IAM utilisateur. L'utilisateur est déclaré avec le chemin ("/"
) et un profil de connexion utilisant le mot de passe (myP@ssW0rd
).
Le document de politique nommé giveaccesstoqueueonly
donne à l'utilisateur l'autorisation d'effectuer toutes les SQS actions Amazon sur la ressource myqueue
de SQS file d'attente Amazon et refuse l'accès à toutes les autres ressources de SQS file d'Amazon. La fonction Fn::GetAtt
obtient l'attribut Arn de la AWS::SQS::Queueressourcemyqueue
.
Le document de politique nommé giveaccesstotopiconly
est ajouté à l'utilisateur pour lui donner l'autorisation d'effectuer toutes les SNS actions Amazon sur la ressource SNS thématique Amazon mytopic
et pour refuser l'accès à toutes les autres SNS ressources Amazon. La Ref
fonction obtient le nom ARN de la AWS::SNS::Topicressourcemytopic
.
JSON
"myuser" : { "Type" : "AWS::IAM::User", "Properties" : { "Path" : "/", "LoginProfile" : { "Password" : "myP@ssW0rd" }, "Policies" : [ { "PolicyName" : "giveaccesstoqueueonly", "PolicyDocument" : { "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "sqs:*" ], "Resource" : [ { "Fn::GetAtt" : [ "myqueue", "Arn" ] } ] }, { "Effect" : "Deny", "Action" : [ "sqs:*" ], "NotResource" : [ { "Fn::GetAtt" : [ "myqueue", "Arn" ] } ] } ] } }, { "PolicyName" : "giveaccesstotopiconly", "PolicyDocument" : { "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "sns:*" ], "Resource" : [ { "Ref" : "mytopic" } ] }, { "Effect" : "Deny", "Action" : [ "sns:*" ], "NotResource" : [ { "Ref" : "mytopic" } ] } ] } } ] } }
YAML
myuser: Type: AWS::IAM::User Properties: Path: "/" LoginProfile: Password: myP@ssW0rd Policies: - PolicyName: giveaccesstoqueueonly PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - sqs:* Resource: - !GetAtt myqueue.Arn - Effect: Deny Action: - sqs:* NotResource: - !GetAtt myqueue.Arn - PolicyName: giveaccesstotopiconly PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - sns:* Resource: - !Ref mytopic - Effect: Deny Action: - sns:* NotResource: - !Ref mytopic
Déclaration d'une ressource de clé d'accès IAM
Cet extrait illustre une ressource AWS::IAM::AccessKey. La myaccesskey
ressource crée une clé d'accès et l'affecte à un IAM utilisateur déclaré comme AWS::IAM::Userressource dans le modèle.
JSON
"myaccesskey" : { "Type" : "AWS::IAM::AccessKey", "Properties" : { "UserName" : { "Ref" : "myuser" } } }
YAML
myaccesskey: Type: AWS::IAM::AccessKey Properties: UserName: !Ref myuser
Vous pouvez obtenir la clé secrète d'une ressource AWS::IAM::AccessKey
à l'aide de la fonction Fn::GetAtt
. L'un des moyens de récupérer la clé secrète est de la placer dans une valeur Output
. Vous pouvez obtenir la clé d'accès à l'aide de la fonction Ref
. Les déclarations de valeurs Output
suivantes obtiennent la clé d'accès et la clé secrète pour myaccesskey
.
JSON
"AccessKeyformyaccesskey" : { "Value" : { "Ref" : "myaccesskey" } }, "SecretKeyformyaccesskey" : { "Value" : { "Fn::GetAtt" : [ "myaccesskey", "SecretAccessKey" ] } }
YAML
AccessKeyformyaccesskey: Value: !Ref myaccesskey SecretKeyformyaccesskey: Value: !GetAtt myaccesskey.SecretAccessKey
Vous pouvez également transmettre la clé AWS d'accès et la clé secrète à une EC2 instance Amazon ou à un groupe Auto Scaling défini dans le modèle. La déclaration AWS::EC2::Instance suivante utilise la propriété UserData
pour transmettre la clé d'accès et la clé secrète pour la ressource myaccesskey
.
JSON
"myinstance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "AvailabilityZone" : "us-east-1a", "ImageId" : "ami-0ff8a91507f77f867", "UserData" : { "Fn::Base64" : { "Fn::Join" : [ "", [ "ACCESS_KEY=", { "Ref" : "myaccesskey" }, "&", "SECRET_KEY=", { "Fn::GetAtt" : [ "myaccesskey", "SecretAccessKey" ] } ] ] } } } }
YAML
myinstance: Type: AWS::EC2::Instance Properties: AvailabilityZone: "us-east-1a" ImageId: ami-0ff8a91507f77f867 UserData: Fn::Base64: !Sub "ACCESS_KEY=${myaccesskey}&SECRET_KEY=${myaccesskey.SecretAccessKey}"
Déclaration d'une ressource de groupe IAM
Cet extrait illustre une ressource AWS::IAM::Group. Le groupe a un chemin ("/myapplication/"
). Le document de politique nommé myapppolicy
est ajouté au groupe pour permettre aux utilisateurs du groupe d'effectuer toutes les SQS actions Amazon sur la ressource de SQS file d'attente Amazon myqueue et de refuser l'accès à toutes les autres SQS ressources Amazon, à l'exception myqueue
de.
Pour attribuer une politique à une ressource, le nom de la ressource Amazon (ARN) est IAM requis. Dans l'extrait, la Fn::GetAtt
fonction obtient le nom de la file ARN d'attente de AWS::SQS::Queueressources.
JSON
"mygroup" : { "Type" : "AWS::IAM::Group", "Properties" : { "Path" : "/myapplication/", "Policies" : [ { "PolicyName" : "myapppolicy", "PolicyDocument" : { "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "sqs:*" ], "Resource" : [ { "Fn::GetAtt" : [ "myqueue", "Arn" ] } ] }, { "Effect" : "Deny", "Action" : [ "sqs:*" ], "NotResource" : [ { "Fn::GetAtt" : [ "myqueue", "Arn" ] } ] } ] } } ] } }
YAML
mygroup: Type: AWS::IAM::Group Properties: Path: "/myapplication/" Policies: - PolicyName: myapppolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - sqs:* Resource: !GetAtt myqueue.Arn - Effect: Deny Action: - sqs:* NotResource: !GetAtt myqueue.Arn
Ajout d'utilisateurs à un groupe
La ressource AWS::IAM::UserToGroupAddition ajoute des utilisateurs à un groupe. Dans l'extrait suivant, la ressource addUserToGroup
ajoute les utilisateurs suivants à un groupe existant nommé myexistinggroup2
: l'utilisateur existant existinguser1
et l'utilisateur myuser
qui est déclaré comme une ressource AWS::IAM::User dans le modèle.
JSON
"addUserToGroup" : { "Type" : "AWS::IAM::UserToGroupAddition", "Properties" : { "GroupName" : "myexistinggroup2", "Users" : [ "existinguser1", { "Ref" : "myuser" } ] } }
YAML
addUserToGroup: Type: AWS::IAM::UserToGroupAddition Properties: GroupName: myexistinggroup2 Users: - existinguser1 - !Ref myuser
Déclaration d'une stratégie IAM
Cet extrait de code montre comment créer une politique et l'appliquer à plusieurs groupes à l'aide d'une ressource AWS::IAM::Policy nommée mypolicy
. La mypolicy
ressource contient une PolicyDocument
propriété qui autorise GetObject
PutObject
, et PutObjectAcl
des actions sur les objets du compartiment S3 représenté par le ARNarn:aws:s3:::myAWSBucket
. La ressource mypolicy
applique la politique à un groupe existant nommé myexistinggroup1
et à un groupe mygroup
déclaré dans le modèle en tant que ressource AWS::IAM::Group. Cet exemple montre comment appliquer une politique à un groupe à l'aide de la propriété Groups
. Toutefois, vous pouvez aussi utiliser la propriété Users
pour ajouter un document de politique à une liste d'utilisateurs.
Important
Les actions SNS de politique Amazon déclarées dans la AWS::IAM::Policy ressource sont différentes des actions de politique relatives aux SNS rubriques Amazon déclarées dans la AWS::SNS::TopicPolicy ressource. Par exemple, les actions de politique sns:Unsubscribe
et sns:SetSubscriptionAttributes
sont valables pour la ressource AWS::IAM::Policy
, mais pas pour la ressource AWS::SNS::TopicPolicy
. Pour plus d'informations sur les actions SNS politiques Amazon valides que vous pouvez utiliser avec cette AWS::IAM::Policy
ressource, consultez les informations spéciales relatives aux SNS politiques d'Amazon dans le guide du développeur Amazon Simple Notification Service.
JSON
"mypolicy" : { "Type" : "AWS::IAM::Policy", "Properties" : { "PolicyName" : "mygrouppolicy", "PolicyDocument" : { "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "s3:GetObject" , "s3:PutObject" , "s3:PutObjectAcl" ], "Resource" : "arn:aws:s3:::myAWSBucket/*" } ] }, "Groups" : [ "myexistinggroup1", { "Ref" : "mygroup" } ] } }
YAML
mypolicy: Type: AWS::IAM::Policy Properties: PolicyName: mygrouppolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - s3:GetObject - s3:PutObject - s3:PutObjectAcl Resource: arn:aws:s3:::myAWSBucket/* Groups: - myexistinggroup1 - !Ref mygroup
Déclaration d'une politique de compartiment Amazon S3
Cet extrait de code montre comment créer une politique et l'appliquer à un compartiment Amazon S3 à l'aide de la ressource AWS::S3::BucketPolicy. La mybucketpolicy
ressource déclare un document de politique qui permet à l'user1
IAMutilisateur d'effectuer l'GetObject
action sur tous les objets du compartiment S3 auxquels cette politique est appliquée. Dans l'extrait, la Fn::GetAtt
fonction obtient le nom ARN de la user1
ressource. La ressource mybucketpolicy
applique la politique à la ressource AWS::S3::BucketPolicy
intitulée mybucket. La fonction Ref
récupère le nom de compartiment de la ressource mybucket
.
JSON
"mybucketpolicy" : { "Type" : "AWS::S3::BucketPolicy", "Properties" : { "PolicyDocument" : { "Id" : "MyPolicy", "Version": "2012-10-17", "Statement" : [ { "Sid" : "ReadAccess", "Action" : [ "s3:GetObject" ], "Effect" : "Allow", "Resource" : { "Fn::Join" : [ "", [ "arn:aws:s3:::", { "Ref" : "mybucket" } , "/*" ] ] }, "Principal" : { "AWS" : { "Fn::GetAtt" : [ "user1", "Arn" ] } } } ] }, "Bucket" : { "Ref" : "mybucket" } } }
YAML
mybucketpolicy: Type: AWS::S3::BucketPolicy Properties: PolicyDocument: Id: MyPolicy Version: '2012-10-17' Statement: - Sid: ReadAccess Action: - s3:GetObject Effect: Allow Resource: !Sub "arn:aws:s3:::${mybucket}/*" Principal: AWS: !GetAtt user1.Arn Bucket: !Ref mybucket
Déclarer une politique SNS thématique Amazon
Cet extrait montre comment créer une politique et l'appliquer à un SNS sujet Amazon à l'aide de la AWS::SNS::TopicPolicyressource. La ressource mysnspolicy
contient une propriété PolicyDocument
qui permet à la ressource AWS::IAM::User intitulée myuser
d'effectuer l'action Publish
sur une ressource AWS::SNS::Topic intitulée mytopic
. Dans l'extrait, la Fn::GetAtt
fonction obtient le ARN pour la myuser
ressource et la Ref
fonction obtient le ARN pour la mytopic
ressource.
Important
Les actions SNS de politique Amazon déclarées dans la AWS::IAM::Policy ressource sont différentes des actions de politique relatives aux SNS rubriques Amazon déclarées dans la AWS::SNS::TopicPolicy ressource. Par exemple, les actions de politique sns:Unsubscribe
et sns:SetSubscriptionAttributes
sont valables pour la ressource AWS::IAM::Policy
, mais pas pour la ressource AWS::SNS::TopicPolicy
. Pour plus d'informations sur les actions SNS politiques Amazon valides que vous pouvez utiliser avec cette AWS::IAM::Policy
ressource, consultez les informations spéciales relatives aux SNS politiques d'Amazon dans le guide du développeur Amazon Simple Notification Service.
JSON
"mysnspolicy" : { "Type" : "AWS::SNS::TopicPolicy", "Properties" : { "PolicyDocument" : { "Id" : "MyTopicPolicy", "Version" : "2012-10-17", "Statement" : [ { "Sid" : "My-statement-id", "Effect" : "Allow", "Principal" : { "AWS" : { "Fn::GetAtt" : [ "myuser", "Arn" ] } }, "Action" : "sns:Publish", "Resource" : "*" } ] }, "Topics" : [ { "Ref" : "mytopic" } ] } }
YAML
mysnspolicy: Type: AWS::SNS::TopicPolicy Properties: PolicyDocument: Id: MyTopicPolicy Version: '2012-10-17' Statement: - Sid: My-statement-id Effect: Allow Principal: AWS: !GetAtt myuser.Arn Action: sns:Publish Resource: "*" Topics: - !Ref mytopic
Déclarer une SQS politique Amazon
Cet extrait montre comment créer une politique et l'appliquer à une SQS file d'attente Amazon à l'aide de la AWS::SQS::QueuePolicyressource. La PolicyDocument
propriété permet à l'utilisateur existant myapp
(spécifié par itsARN) d'effectuer l'SendMessage
action sur une file d'attente existante, spécifiée par itsURL, et sur une AWS::SQS::Queueressource myqueue. La fonction Ref obtient le URL pour la myqueue
ressource.
JSON
"mysqspolicy" : { "Type" : "AWS::SQS::QueuePolicy", "Properties" : { "PolicyDocument" : { "Id" : "MyQueuePolicy", "Version" : "2012-10-17", "Statement" : [ { "Sid" : "Allow-User-SendMessage", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::123456789012:user/myapp" }, "Action" : [ "sqs:SendMessage" ], "Resource" : "*" } ] }, "Queues" : [ "https://sqs.us-east-2
aws-region
.amazonaws.com/123456789012/myexistingqueue", { "Ref" : "myqueue" } ] } }
YAML
mysqspolicy: Type: AWS::SQS::QueuePolicy Properties: PolicyDocument: Id: MyQueuePolicy Version: '2012-10-17' Statement: - Sid: Allow-User-SendMessage Effect: Allow Principal: AWS: arn:aws:iam::123456789012:user/myapp Action: - sqs:SendMessage Resource: "*" Queues: - https://sqs.
aws-region
.amazonaws.com/123456789012/myexistingqueue - !Ref myqueue
IAMexemples de modèles de rôles
Cette section fournit des exemples de CloudFormation modèles de IAM rôles pour les EC2 instances.
Pour plus d'informations sur IAM les rôles, consultez la section Working with roles dans le guide de l'utilisateur d'AWS Identity and Access Management.
IAMrôle avec EC2
Dans cet exemple, le profil d'instance est référencé par la IamInstanceProfile
propriété de l'EC2instance. La politique de l'instance et la politique du rôle référencent toutes les deux la ressource AWS::IAM::Role.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "myEC2Instance": { "Type": "AWS::EC2::Instance", "Version": "2009-05-15", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "m1.small", "Monitoring": "true", "DisableApiTermination": "false", "IamInstanceProfile": { "Ref": "RootInstanceProfile" } } }, "RootRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version" : "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/" } }, "RolePolicies": { "Type": "AWS::IAM::Policy", "Properties": { "PolicyName": "root", "PolicyDocument": { "Version" : "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] }, "Roles": [ { "Ref": "RootRole" } ] } }, "RootInstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "RootRole" } ] } } } }
YAML
AWSTemplateFormatVersion: '2010-09-09' Resources: myEC2Instance: Type: AWS::EC2::Instance Version: '2009-05-15' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: m1.small Monitoring: 'true' DisableApiTermination: 'false' IamInstanceProfile: !Ref RootInstanceProfile RootRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - ec2.amazonaws.com Action: - sts:AssumeRole Path: "/" RolePolicies: Type: AWS::IAM::Policy Properties: PolicyName: root PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: "*" Resource: "*" Roles: - !Ref RootRole RootInstanceProfile: Type: AWS::IAM::InstanceProfile Properties: Path: "/" Roles: - !Ref RootRole
IAMrôle dans le AutoScaling groupe
Dans cet exemple, le profil d'instance est référencé par la IamInstanceProfile
propriété d'une configuration de lancement de AutoScaling groupe.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "myLCOne": { "Type": "AWS::AutoScaling::LaunchConfiguration", "Version": "2009-05-15", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "m1.small", "InstanceMonitoring": "true", "IamInstanceProfile": { "Ref": "RootInstanceProfile" } } }, "myASGrpOne": { "Type": "AWS::AutoScaling::AutoScalingGroup", "Version": "2009-05-15", "Properties": { "AvailabilityZones": [ "us-east-1a" ], "LaunchConfigurationName": { "Ref": "myLCOne" }, "MinSize": "0", "MaxSize": "0", "HealthCheckType": "EC2", "HealthCheckGracePeriod": "120" } }, "RootRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version" : "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/" } }, "RolePolicies": { "Type": "AWS::IAM::Policy", "Properties": { "PolicyName": "root", "PolicyDocument": { "Version" : "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] }, "Roles": [ { "Ref": "RootRole" } ] } }, "RootInstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "RootRole" } ] } } } }
YAML
AWSTemplateFormatVersion: '2010-09-09' Resources: myLCOne: Type: AWS::AutoScaling::LaunchConfiguration Version: '2009-05-15' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: m1.small InstanceMonitoring: 'true' IamInstanceProfile: !Ref RootInstanceProfile myASGrpOne: Type: AWS::AutoScaling::AutoScalingGroup Version: '2009-05-15' Properties: AvailabilityZones: - "us-east-1a" LaunchConfigurationName: !Ref myLCOne MinSize: '0' MaxSize: '0' HealthCheckType: EC2 HealthCheckGracePeriod: '120' RootRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - ec2.amazonaws.com Action: - sts:AssumeRole Path: "/" RolePolicies: Type: AWS::IAM::Policy Properties: PolicyName: root PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: "*" Resource: "*" Roles: - !Ref RootRole RootInstanceProfile: Type: AWS::IAM::InstanceProfile Properties: Path: "/" Roles: - !Ref RootRole