Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
AWS Identity and Access Management frammenti di modello
Questa sezione contiene frammenti di AWS Identity and Access Management modello.
Argomenti
Importante
Durante la creazione o l'aggiornamento di uno stack con un modello contenente risorse IAM, devi prendere atto dell'utilizzo delle funzionalità IAM. Per ulteriori informazioni, consulta Accettazione delle risorse IAM nei modelli CloudFormation.
Dichiarazione di una risorsa utente IAM
Questo frammento mostra come dichiarare un AWS::IAM::Userrisorsa per creare un utente. IAM L'utente viene dichiarato con il percorso ("/"
) e un profilo di login che utilizza la password (myP@ssW0rd
).
Il documento di policy denominato giveaccesstoqueueonly
fornisce all'utente l'autorizzazione a eseguire tutte le SQS azioni Amazon sulla risorsa myqueue
Amazon SQS Queue e nega l'accesso a tutte le altre risorse Amazon SQS Queue. La Fn::GetAtt
funzione ottiene l'attributo Arn di AWS::SQS::Queuerisorsamyqueue
.
Il documento di policy denominato giveaccesstotopiconly
viene aggiunto all'utente per autorizzarlo a eseguire tutte le SNS azioni Amazon sulla risorsa SNS tematica Amazon mytopic
e per negare l'accesso a tutte le altre SNS risorse Amazon. La Ref
funzione ottiene ARN il AWS::SNS::Topicrisorsamytopic
.
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
Dichiarazione di una risorsa chiave di accesso IAM
Questo frammento mostra un AWS::IAM::AccessKeyrisorsa. La myaccesskey
risorsa crea una chiave di accesso e la assegna a un IAM utente dichiarato come AWS::IAM::Userrisorsa nel modello.
JSON
"myaccesskey" : { "Type" : "AWS::IAM::AccessKey", "Properties" : { "UserName" : { "Ref" : "myuser" } } }
YAML
myaccesskey: Type: AWS::IAM::AccessKey Properties: UserName: !Ref myuser
Puoi ottenere la chiave segreta per una risorsa AWS::IAM::AccessKey
utilizzando la funzione Fn::GetAtt
. Uno dei modi per recuperare la chiave segreta è inserirla in un valore Output
. Puoi ottenere la chiave di accesso utilizzando la funzione Ref
. Le seguenti dichiarazioni del valore Output
ottengono la chiave di accesso e la chiave segreta per myaccesskey
.
JSON
"AccessKeyformyaccesskey" : { "Value" : { "Ref" : "myaccesskey" } }, "SecretKeyformyaccesskey" : { "Value" : { "Fn::GetAtt" : [ "myaccesskey", "SecretAccessKey" ] } }
YAML
AccessKeyformyaccesskey: Value: !Ref myaccesskey SecretKeyformyaccesskey: Value: !GetAtt myaccesskey.SecretAccessKey
Puoi anche passare la chiave di AWS accesso e la chiave segreta a un'EC2istanza Amazon o a un gruppo di Auto Scaling definito nel modello. Quanto segue AWS::EC2::Instancela dichiarazione utilizza la UserData
proprietà per passare la chiave di accesso e la chiave segreta per la myaccesskey
risorsa.
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}"
Dichiarazione di una risorsa di gruppo IAM
Questo frammento mostra un AWS::IAM::Grouprisorsa. Il gruppo ha un percorso ("/myapplication/"
). Il documento di policy denominato myapppolicy
viene aggiunto al gruppo per consentire agli utenti del gruppo di eseguire tutte le SQS azioni Amazon sulla risorsa Amazon queue SQS myqueue e negare l'accesso a tutte le altre risorse Amazon tranne. SQS myqueue
Per assegnare una policy a una risorsa, IAM richiede l'Amazon Resource Name (ARN) per la risorsa. Nello snippet, la Fn::GetAtt
funzione ottiene il ARN AWS::SQS::Queuecoda di risorse.
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
Aggiunta di utenti a un gruppo
Il AWS::IAM::UserToGroupAdditionla risorsa aggiunge utenti a un gruppo. Nel seguente frammento, la addUserToGroup
risorsa aggiunge i seguenti utenti a un gruppo esistente denominatomyexistinggroup2
: l'utente esistente existinguser1
e myuser
l'utente dichiarato come AWS::IAM::Userrisorsa nel modello.
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
Dichiarazione di una policy IAM
Questo frammento mostra come creare una policy e applicarla a più gruppi utilizzando un AWS::IAM::Policyrisorsa denominata. mypolicy
La mypolicy
risorsa contiene una PolicyDocument
proprietà che consente GetObject
e PutObjectAcl
azioni sugli oggetti nel bucket S3 rappresentato da. PutObject
ARN arn:aws:s3:::myAWSBucket
La mypolicy
risorsa applica la politica a un gruppo esistente denominato myexistinggroup1
e a un gruppo mygroup
dichiarato nel modello come AWS::IAM::Grouprisorsa. Questo esempio mostra come applicare una policy a un gruppo utilizzando la proprietà Groups
; tuttavia, è anche possibile utilizzare la proprietà Users
per aggiungere un documento della policy a un elenco di utenti.
Importante
Le azioni SNS politiche di Amazon dichiarate nella AWS::IAM::Policy risorsa sono diverse dalle azioni politiche relative all'SNSargomento Amazon dichiarate nella AWS::SNS::TopicPolicy risorsa. Ad esempio, le operazoni di policy sns:Unsubscribe
e sns:SetSubscriptionAttributes
sono valide per la risorsa AWS::IAM::Policy
, ma non per la risorsa AWS::SNS::TopicPolicy
. Per ulteriori informazioni sulle azioni valide delle SNS policy di Amazon che puoi utilizzare con la AWS::IAM::Policy
risorsa, consulta Informazioni speciali per le SNS politiche di Amazon nella Guida per gli sviluppatori di 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
Dichiarazione di una policy di un bucket Amazon S3
Questo frammento mostra come creare una policy e applicarla a un bucket Amazon S3 utilizzando AWS::S3::BucketPolicyrisorsa. La risorsa mybucketpolicy
dichiara un documento di policy che consente all'utente IAM user1
di eseguire l'operazione GetObject
su tutti gli oggetti nel bucket S3 a cui la policy viene applicata. Nello snippet, la Fn::GetAtt
funzione ottiene ARN la user1
risorsa. La risorsa mybucketpolicy
applica la policy alla risorsa AWS::S3::BucketPolicy
mybucket. La funzione Ref
ottiene il nome del bucket della risorsa 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
Dichiarazione di una politica SNS tematica di Amazon
Questo frammento mostra come creare una policy e applicarla a un SNS argomento di Amazon utilizzando il AWS::SNS::TopicPolicyrisorsa. La mysnspolicy
risorsa contiene una PolicyDocument
proprietà che consente AWS::IAM::Userrisorsa myuser
per eseguire l'Publish
azione su un AWS::SNS::Topicrisorsamytopic
. Nello snippet, la Fn::GetAtt
funzione ottiene il ARN per la myuser
risorsa e la Ref
funzione ottiene il ARN per la mytopic
risorsa.
Importante
Le azioni SNS politiche di Amazon dichiarate nella AWS::IAM::Policy risorsa sono diverse dalle azioni politiche relative all'SNSargomento Amazon dichiarate nella AWS::SNS::TopicPolicy risorsa. Ad esempio, le operazoni di policy sns:Unsubscribe
e sns:SetSubscriptionAttributes
sono valide per la risorsa AWS::IAM::Policy
, ma non per la risorsa AWS::SNS::TopicPolicy
. Per ulteriori informazioni sulle azioni valide delle SNS policy di Amazon che puoi utilizzare con la AWS::IAM::Policy
risorsa, consulta Informazioni speciali per le SNS politiche di Amazon nella Guida per gli sviluppatori di 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
Dichiarazione di una politica Amazon SQS
Questo frammento mostra come creare una policy e applicarla a una SQS coda Amazon utilizzando AWS::SQS::QueuePolicyrisorsa. La PolicyDocument
proprietà consente all'utente esistente myapp
(specificato da itsARN) di eseguire l'SendMessage
azione su una coda esistente, specificata da itsURL, e AWS::SQS::Queuerisorsa myqueue. La funzione Ref ottiene URL la myqueue
risorsa.
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
IAMesempi di modelli di ruolo
Questa sezione fornisce esempi CloudFormation di modelli per IAM i ruoli per EC2 le istanze.
Per ulteriori informazioni sui IAM ruoli, vedere Working with roles nella AWS Identity and Access Management User Guide.
IAMruolo con EC2
In questo esempio, al profilo dell'istanza fa riferimento la IamInstanceProfile
proprietà dell'EC2istanza. Riferimento sia alla politica dell'istanza che alla politica del ruolo 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
IAMruolo con AutoScaling gruppo
In questo esempio, al profilo dell'istanza fa riferimento la IamInstanceProfile
proprietà di una configurazione di avvio del AutoScaling gruppo.
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