Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
AWS Identity and Access Management Schnipsel aus Vorlagen
Dieser Abschnitt enthält AWS Identity and Access Management Vorlagenausschnitte.
Themen
- Deklarieren einer IAM-Benutzerressource
- Deklarieren einer IAM-Zugriffsschlüssel-Ressource
- Deklarieren einer IAM-Gruppenressource
- Hinzufügen von Benutzern zu einer Gruppe
- Deklarieren einer IAM-Richtlinie
- Deklarieren einer Amazon S3-Bucket-Richtlinie
- Eine SNS Amazon-Themenrichtlinie deklarieren
- Erklärung einer Amazon-Richtlinie SQS
- IAMBeispiele für Rollenvorlagen
Wichtig
Wenn Sie einen Stack mithilfe einer Vorlage erstellen oder aktualisieren, die IAM Ressourcen enthält, müssen Sie die Verwendung von IAM Funktionen bestätigen. Weitere Informationen zur Verwendung von IAM Ressourcen in Vorlagen finden Sie unterSteuern Sie den Zugriff mit AWS Identity and Access Management.
Deklarieren einer IAM-Benutzerressource
Dieser Ausschnitt zeigt, wie eine AWS::IAM::UserRessource deklariert wird, um einen Benutzer zu erstellen. IAM Der Benutzer wird mit dem Pfad ("/"
) und einem Anmeldungsprofil mit dem Passwort (myP@ssW0rd
) deklariert.
Das genannte Richtliniendokument giveaccesstoqueueonly
erteilt dem Benutzer die Erlaubnis, alle SQS Amazon-Aktionen an der SQS Amazon-Warteschlangenressource durchzuführenmyqueue
, und verweigert den Zugriff auf alle anderen SQS Amazon-Warteschlangenressourcen. Die Fn::GetAtt
-Funktion ruft das Arn-Attribut der AWS::SQS::Queue-Ressource myqueue
ab.
Das genannte Richtliniendokument giveaccesstotopiconly
wird dem Benutzer hinzugefügt, um dem Benutzer die Erlaubnis zu geben, alle SNS Amazon-Aktionen an der SNS Amazon-Themenressource durchzuführen mytopic
und den Zugriff auf alle anderen SNS Amazon-Ressourcen zu verweigern. Die Ref
Funktion ruft den Wert ARN der AWS::SNS::TopicRessource abmytopic
.
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
Deklarieren einer IAM-Zugriffsschlüssel-Ressource
Dieses Codefragment zeigt eine AWS::IAM::AccessKey-Ressource. Die myaccesskey
Ressource erstellt einen Zugriffsschlüssel und weist ihn einem IAM Benutzer zu, der in der Vorlage als AWS::IAM::UserRessource deklariert ist.
JSON
"myaccesskey" : { "Type" : "AWS::IAM::AccessKey", "Properties" : { "UserName" : { "Ref" : "myuser" } } }
YAML
myaccesskey: Type: AWS::IAM::AccessKey Properties: UserName: !Ref myuser
Sie können den geheimen Schlüssel für eine AWS::IAM::AccessKey
-Ressource mithilfe der Fn::GetAtt
-Funktion abrufen. Eine Möglichkeit zum Abrufen des geheimen Schlüssels besteht darin, ihn in einen Output
-Wert zu setzen. Sie können den Zugriffsschlüssel mit der Ref
-Funktion abrufen. Die folgenden Output
-Wertdeklarationen rufen den Zugriffsschlüssel und den geheimen Schlüssel für myaccesskey
ab.
JSON
"AccessKeyformyaccesskey" : { "Value" : { "Ref" : "myaccesskey" } }, "SecretKeyformyaccesskey" : { "Value" : { "Fn::GetAtt" : [ "myaccesskey", "SecretAccessKey" ] } }
YAML
AccessKeyformyaccesskey: Value: !Ref myaccesskey SecretKeyformyaccesskey: Value: !GetAtt myaccesskey.SecretAccessKey
Sie können den AWS Zugriffsschlüssel und den geheimen Schlüssel auch an eine EC2 Amazon-Instance oder Auto Scaling Scaling-Gruppe übergeben, die in der Vorlage definiert sind. Die folgende AWS::EC2::Instance-Deklaration verwendet die UserData
-Eigenschaft zum Übergeben des Zugriffsschlüssels und geheimen Schlüssels für die myaccesskey
Ressource.
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}"
Deklarieren einer IAM-Gruppenressource
Dieses Codefragment zeigt eine AWS::IAM::Group-Ressource. Die Gruppe hat einen Pfad ("/myapplication/"
). Das genannte Richtliniendokument myapppolicy
wird der Gruppe hinzugefügt, um es den Benutzern der Gruppe zu ermöglichen, alle SQS Amazon-Aktionen auf der SQS Amazon-Warteschlangenressource myqueue durchzuführen und den Zugriff auf alle anderen SQS Amazon-Ressourcen außer myqueue
zu verweigern.
Um einer Ressource eine Richtlinie zuzuweisen, IAM ist der Amazon-Ressourcenname (ARN) für die Ressource erforderlich. Im Snippet ruft die Fn::GetAtt
Funktion den Wert der ARN AWS::SQS::QueueRessourcenwarteschlange ab.
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
Hinzufügen von Benutzern zu einer Gruppe
Die AWS::IAM::UserToGroupAddition-Ressource fügt Benutzer zu einer Gruppe hinzu. Im folgenden Codeausschnitt fügt die addUserToGroup
-Ressource die folgenden Benutzer zu einer bestehenden Gruppe mit dem Namen myexistinggroup2
hinzu: den vorhandenen Benutzer existinguser1
und den Benutzer myuser
, der in der Vorlage als AWS::IAM::User-Ressource deklariert ist.
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
Deklarieren einer IAM-Richtlinie
Im folgenden Codeausschnitt wird gezeigt, wie Sie eine Richtlinie erstellen und unter Verwendung einer AWS::IAM::Policy-Ressource mit dem Namen mypolicy
auf mehreren Gruppen anwenden. Die mypolicy
Ressource enthält eine PolicyDocument
Eigenschaft GetObject
PutObject
, die PutObjectAcl
Aktionen für die Objekte im S3-Bucket ermöglicht, dargestellt durch. ARN arn:aws:s3:::myAWSBucket
Die mypolicy
-Ressource wendet die Richtlinie auf eine vorhandene Gruppe mit dem Namen myexistinggroup1
und eine Gruppe mygroup
an, die in der Vorlage als AWS::IAM::Group-Ressource deklariert ist. Dieses Beispiel zeigt, wie eine Richtlinie mithilfe der Groups
-Eigenschaft auf eine Gruppe angewendet wird. Sie können jedoch auch die Users
-Eigenschaft verwenden, um einer Liste von Benutzern ein Richtliniendokument hinzuzufügen.
Wichtig
Die in der Ressource deklarierten SNS Amazon-Richtlinienaktionen unterscheiden sich von den in der AWS::IAM::Policy Ressource deklarierten SNS AWS::SNS::TopicPolicy Amazon-Themenrichtlinienaktionen. Beispielsweise werden die Richtlinienaktionen sns:Unsubscribe
und sns:SetSubscriptionAttributes
ausgeführt und sind für die AWS::IAM::Policy
-Ressource gültig, für die AWS::SNS::TopicPolicy
-Ressource jedoch ungültig. Weitere Informationen zu gültigen SNS Amazon-Richtlinienaktionen, die Sie mit der AWS::IAM::Policy
Ressource verwenden können, finden Sie unter Besondere Informationen für SNS Amazon-Richtlinien im Amazon Simple Notification Service Developer Guide.
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
Deklarieren einer Amazon S3-Bucket-Richtlinie
Im folgenden Codeausschnitt wird gezeigt, wie Sie eine Richtlinie erstellen und unter Verwendung der AWS::S3::BucketPolicy-Ressource auf einen Amazon S3-Bucket anwenden. Die mybucketpolicy
Ressource deklariert ein Richtliniendokument, das es dem user1
IAM Benutzer ermöglicht, die GetObject
Aktion für alle Objekte im S3-Bucket durchzuführen, auf die diese Richtlinie angewendet wird. Im Snippet ruft die Fn::GetAtt
Funktion den Wert ARN der Ressource ab. user1
Die mybucketpolicy
-Ressource wendet die Richtlinie auf die AWS::S3::BucketPolicy
-Ressource mybucket an. Die Ref
-Funktion ruft den Bucket-Namen der mybucket
-Ressource ab.
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
Eine SNS Amazon-Themenrichtlinie deklarieren
Dieser Ausschnitt zeigt, wie Sie mithilfe der Ressource eine Richtlinie erstellen und sie auf ein SNS Amazon-Thema anwenden. AWS::SNS::TopicPolicy Die mysnspolicy
-Ressource enthält eine PolicyDocument
-Eigenschaft, die der AWS::IAM::User-Ressource myuser
die Ausführung der Publish
-Aktion auf eine AWS::SNS::Topic-Ressource mytopic
erlaubt. Im Snippet ruft die Fn::GetAtt
Funktion den ARN für die Ressource ab und die Ref
Funktion ruft den für die myuser
Ressource ab. ARN mytopic
Wichtig
Die in der Ressource deklarierten SNS Amazon-Richtlinienaktionen unterscheiden sich von den in der AWS::IAM::Policy Ressource deklarierten SNS AWS::SNS::TopicPolicy Amazon-Themenrichtlinienaktionen. Beispielsweise werden die Richtlinienaktionen sns:Unsubscribe
und sns:SetSubscriptionAttributes
ausgeführt und sind für die AWS::IAM::Policy
-Ressource gültig, für die AWS::SNS::TopicPolicy
-Ressource jedoch ungültig. Weitere Informationen zu gültigen SNS Amazon-Richtlinienaktionen, die Sie mit der AWS::IAM::Policy
Ressource verwenden können, finden Sie unter Besondere Informationen für SNS Amazon-Richtlinien im Amazon Simple Notification Service Developer Guide.
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
Erklärung einer Amazon-Richtlinie SQS
Dieses Snippet zeigt, wie Sie mithilfe der Ressource eine Richtlinie erstellen und sie auf eine SQS Amazon-Warteschlange anwenden. AWS::SQS::QueuePolicy Die PolicyDocument
Eigenschaft ermöglicht es dem vorhandenen Benutzer myapp
(spezifiziert durch itsARN), die SendMessage
Aktion für eine bestehende Warteschlange, die durch its spezifiziert wirdURL, und für eine AWS::SQS::QueueRessource myqueue auszuführen. Die Ref-Funktion ruft die URL für die myqueue
Ressource ab.
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
IAMBeispiele für Rollenvorlagen
Dieser Abschnitt enthält CloudFormation Vorlagenbeispiele für IAM Rollen für EC2 Instanzen.
Weitere Informationen zu IAM Rollen finden Sie unter Arbeiten mit Rollen im AWS Identity and Access Management-Benutzerhandbuch.
IAMRolle mit EC2
In diesem Beispiel wird das Instanzprofil durch die IamInstanceProfile
Eigenschaft der EC2 Instanz referenziert. Sowohl die Instance-Richtlinie als auch die Rollenrichtlinie referenzieren 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
IAMRolle mit AutoScaling Gruppe
In diesem Beispiel wird das Instanzprofil durch die IamInstanceProfile
Eigenschaft einer AutoScaling Gruppenstartkonfiguration referenziert.
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