AWS Identity and Access Management frammenti di modello - AWS CloudFormation

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.

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'Publishazione 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'SendMessageazione 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-2aws-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