Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS Identity and Access Management cuplikan template
Bagian ini berisi cuplikan AWS Identity and Access Management template.
Topik
- Mendeklarasikan sumber daya pengguna IAM
- Menyatakan sumber daya access key IAM
- Mendeklarasikan sumber daya grup IAM
- Menambahkan pengguna ke grup
- Mendeklarasikan kebijakan IAM
- Mendeklarasikan kebijakan bucket Amazon S3
- Mendeklarasikan kebijakan SNS topik Amazon
- Mendeklarasikan kebijakan Amazon SQS
- IAMcontoh template peran
penting
Saat membuat atau memperbarui tumpukan menggunakan templat yang berisi IAM sumber daya, Anda harus mengakui penggunaan IAM kemampuan. Untuk informasi selengkapnya tentang penggunaan IAM sumber daya dalam templat, lihatKontrol CloudFormation akses dengan AWS Identity and Access Management.
Mendeklarasikan sumber daya pengguna IAM
Cuplikan ini menunjukkan cara mendeklarasikan AWS::IAM::Usersumber daya untuk membuat pengguna. IAM Pengguna dinyatakan dengan jalur ("/"
) dan profil login dengan kata sandi (myP@ssW0rd
).
Dokumen kebijakan bernama giveaccesstoqueueonly
memberikan izin kepada pengguna untuk melakukan semua SQS tindakan Amazon pada sumber daya SQS antrian Amazonmyqueue
, dan menolak akses ke semua sumber daya SQS antrian Amazon lainnya. Fungsi Fn::GetAtt
mengambil atribut Arn dari myqueue
sumber daya AWS::SQS::Queue.
Dokumen kebijakan bernama giveaccesstotopiconly
ditambahkan ke pengguna untuk memberikan izin kepada pengguna untuk melakukan semua SNS tindakan Amazon pada sumber daya SNS topik Amazon mytopic
dan untuk menolak akses ke semua SNS sumber daya Amazon lainnya. Ref
Fungsi mendapatkan ARN AWS::SNS::Topicsumber dayamytopic
.
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
Menyatakan sumber daya access key IAM
Cuplikan ini menunjukkan sumber daya AWS::IAM::AccessKey. myaccesskey
Sumber daya membuat kunci akses dan menetapkannya ke IAM pengguna yang dideklarasikan sebagai AWS::IAM::Usersumber daya dalam template.
JSON
"myaccesskey" : { "Type" : "AWS::IAM::AccessKey", "Properties" : { "UserName" : { "Ref" : "myuser" } } }
YAML
myaccesskey: Type: AWS::IAM::AccessKey Properties: UserName: !Ref myuser
Anda bisa mendapatkan kunci rahasia untuk sumber daya AWS::IAM::AccessKey
menggunakan fungsi Fn::GetAtt
. Salah satu cara untuk mengambil kunci rahasia adalah dengan memasukkannya ke dalam nilai Output
. Anda bisa mendapatkan access key menggunakan fungsi Ref
. Deklarasi nilai Output
berikut mendapatkan access key dan kunci rahasia untuk myaccesskey
.
JSON
"AccessKeyformyaccesskey" : { "Value" : { "Ref" : "myaccesskey" } }, "SecretKeyformyaccesskey" : { "Value" : { "Fn::GetAtt" : [ "myaccesskey", "SecretAccessKey" ] } }
YAML
AccessKeyformyaccesskey: Value: !Ref myaccesskey SecretKeyformyaccesskey: Value: !GetAtt myaccesskey.SecretAccessKey
Anda juga dapat meneruskan kunci AWS akses dan kunci rahasia ke EC2 instans Amazon atau grup Auto Scaling yang ditentukan dalam template. Deklarasi berikut AWS::EC2::Instance menggunakan properti UserData
untuk meneruskan access key dan kunci rahasia untuk sumber daya 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}"
Mendeklarasikan sumber daya grup IAM
Cuplikan ini menunjukkan sumber daya AWS::IAM::Group. Grup ini memiliki jalur ("/myapplication/"
). Dokumen kebijakan bernama myapppolicy
ditambahkan ke grup untuk memungkinkan pengguna grup melakukan semua SQS tindakan Amazon pada SQS myqueue resource antrian Amazon dan menolak akses ke semua sumber daya Amazon SQS lainnya kecuali. myqueue
Untuk menetapkan kebijakan ke sumber daya, IAM memerlukan Amazon Resource Name (ARN) untuk sumber daya. Dalam cuplikan, Fn::GetAtt
fungsi mendapatkan antrian ARN AWS::SQS::Queuesumber daya.
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
Menambahkan pengguna ke grup
Sumber daya AWS::IAM::UserToGroupAddition menambahkan pengguna ke grup. Pada potongan berikut, sumber daya addUserToGroup
menambahkan pengguna berikut ke grup yang ada bernama myexistinggroup2
: pengguna yang ada existinguser1
dan pengguna myuser
yang dinyatakan sebagai sumber daya AWS::IAM::User dalam templat.
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
Mendeklarasikan kebijakan IAM
Cuplikan ini menunjukkan cara membuat kebijakan dan menerapkannya ke beberapa grup menggunakan sumber daya AWS::IAM::Policy bernama mypolicy
. mypolicy
Sumber daya berisi PolicyDocument
properti yang memungkinkanGetObject
,PutObject
, dan PutObjectAcl
tindakan pada objek di bucket S3 yang diwakili oleh. ARN arn:aws:s3:::myAWSBucket
mypolicy
Sumber daya menerapkan kebijakan ke grup yang ada bernama myexistinggroup1
dan grup mygroup
yang dideklarasikan dalam templat sebagai AWS::IAM::Groupsumber daya. Contoh ini menunjukkan cara menerapkan kebijakan ke grup yang menggunakan properti Groups
; Namun, Anda juga dapat menggunakan properti Users
untuk menambahkan dokumen kebijakan ke daftar pengguna.
penting
Tindakan SNS kebijakan Amazon yang dideklarasikan dalam AWS::IAM::Policy sumber daya berbeda dari tindakan kebijakan SNS topik Amazon yang dideklarasikan dalam AWS::SNS::TopicPolicy sumber daya. Misalnya, tindakan kebijakan sns:Unsubscribe
dan sns:SetSubscriptionAttributes
valid untuk AWS::IAM::Policy
sumber daya, tetapi tidak valid untuk sumber daya. AWS::SNS::TopicPolicy
Untuk informasi selengkapnya tentang tindakan SNS kebijakan Amazon yang valid yang dapat Anda gunakan dengan AWS::IAM::Policy
sumber daya, lihat Informasi khusus untuk SNS kebijakan Amazon di Panduan Pengembang Layanan Pemberitahuan Sederhana Amazon.
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
Mendeklarasikan kebijakan bucket Amazon S3
Cuplikan ini menunjukkan cara membuat kebijakan dan menerapkannya ke bucket Amazon S3 menggunakan sumber daya. AWS::S3::BucketPolicy mybucketpolicy
Sumber daya mendeklarasikan dokumen kebijakan yang memungkinkan user1
IAM pengguna melakukan GetObject
tindakan pada semua objek di bucket S3 tempat kebijakan ini diterapkan. Dalam cuplikan, Fn::GetAtt
fungsi mendapatkan sumber ARN daya. user1
Sumber daya mybucketpolicy
menerapkan kebijakan untuk my bucket sumber daya AWS::S3::BucketPolicy
. Fungsi Ref
mengambil nama bucket dari sumber daya 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
Mendeklarasikan kebijakan SNS topik Amazon
Cuplikan ini menunjukkan cara membuat kebijakan dan menerapkannya ke SNS topik Amazon menggunakan sumber daya. AWS::SNS::TopicPolicy Sumber daya mysnspolicy
berisi properti PolicyDocument
yang memungkinkan myuser
sumber daya AWS::IAM::User untuk melakukan tindakan Publish
pada mytopic
sumber daya AWS::SNS::Topic. Dalam cuplikan, Fn::GetAtt
fungsi mendapatkan myuser
sumber daya ARN untuk dan Ref
fungsi mendapatkan sumber daya. ARN mytopic
penting
Tindakan SNS kebijakan Amazon yang dideklarasikan dalam AWS::IAM::Policy sumber daya berbeda dari tindakan kebijakan SNS topik Amazon yang dideklarasikan dalam AWS::SNS::TopicPolicy sumber daya. Misalnya, tindakan kebijakan sns:Unsubscribe
dan sns:SetSubscriptionAttributes
valid untuk AWS::IAM::Policy
sumber daya, tetapi tidak valid untuk sumber daya. AWS::SNS::TopicPolicy
Untuk informasi selengkapnya tentang tindakan SNS kebijakan Amazon yang valid yang dapat Anda gunakan dengan AWS::IAM::Policy
sumber daya, lihat Informasi khusus untuk SNS kebijakan Amazon di Panduan Pengembang Layanan Pemberitahuan Sederhana Amazon.
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
Mendeklarasikan kebijakan Amazon SQS
Cuplikan ini menunjukkan cara membuat kebijakan dan menerapkannya ke SQS antrian Amazon menggunakan sumber daya. AWS::SQS::QueuePolicy PolicyDocument
Properti memungkinkan pengguna yang ada myapp
(ditentukan olehnyaARN) untuk melakukan SendMessage
tindakan pada antrian yang ada, yang ditentukan olehnyaURL, dan myqueue AWS::SQS::Queuesumber daya. Fungsi Ref mendapatkan myqueue
sumber daya. URL
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
IAMcontoh template peran
Bagian ini memberikan contoh CloudFormation template untuk IAM peran untuk EC2 Instans.
Untuk informasi selengkapnya tentang IAM peran, lihat Bekerja dengan peran di Panduan Pengguna AWS Identity and Access Management.
IAMPeran dengan EC2
Dalam contoh ini, profil instance direferensikan oleh IamInstanceProfile
properti EC2 Instance. Kebijakan instans dan referensi kebijakan peran 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
IAMperan dengan AutoScaling kelompok
Dalam contoh ini, profil instance direferensikan oleh IamInstanceProfile
properti konfigurasi peluncuran AutoScaling Grup.
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