Cloudformation可以创build一个引用现有策略的新angular色吗?

目前我有一个共享的S3存储桶,可以访问特定的关键path(即文件夹)不同的实例。 我已经能够创build实例configuration文件与我的新angular色和testing没有限制访问该文件夹的问题。

我的问题是,有一个已定义的策略的现有通用angular色,我也希望能够包括在我的每个堆栈的新angular色。

在云计算中,是否可以将包含在一个angular色中的策略包含在另一个angular色中,而不必在新angular色中重新定义策略文档?

像下面这样:

"AppTierS3AccessRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "Ref": "existing-policy" } ] } }, 

“现行政策”是这里的重要组成部分。 我试图find现有政策的尝试和参考,但我有点卡住了。

您可以通过使用托pipe策略来实现此目的。 将定义的策略放在客户pipe理的策略中,然后将定义的策略附加到要使用它的每个angular色。 以后对托pipe策略的任何更改都会立即应用于所有具有托pipe策略的angular色。

您可以通过AWS :: IAM :: ManagedPolicy资源在CloudFormation中创build客户托pipe策略,也可以附加现有托pipe策略。

src: https : //docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html

“AWS :: IAM :: Role”types现在有一个“ManagedPolicyArns”字段,您可以在其中设置此字段。 你只需要抓住ARN(易于从IAM控制台抓取)并将其放置在该字段中。 在下面的示例中,我创build了一个提供只读ECR访问的angular色,以便我的映像可以从ECR中拖出Docker容器。

  ecrRole: Type: AWS::IAM::Role Properties: Path: "/" ManagedPolicyArns: - "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly" AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - ec2.amazonaws.com Action: - sts:AssumeRole 

要扩大@ markusk的答案重新:pipe理政策 – 是的,那。

例:

 "ManagedPolicy": { "Type": "AWS::IAM::ManagedPolicy", "Properties": { "Description": "something descriptive", "Groups": [ ... ref(s) for groups ... ], "Roles: [{"Ref":"AppTierS3AccessRole"}], "Users": [ ... ref(s) for users ... ], "PolicyDocument": { "Version": "2012-10-17", "Statement": [ ... ] } } } 

不,您目前不能在另一个angular色中embedded一个angular色。 我能想到的唯一select是:

  • 使用AWS :: IAM :: InstanceProfile创build一个新的实例configuration文件,并为其分配现有的通用angular色。
  • 在创buildCloudFormation堆栈之前,运行一个复制通用angular色的脚本。 例如,它创build一个新angular色,列出现有通用angular色的所有策略,并以新angular色重新创build它们。 然后,您可以将新angular色分配给您的模板中新的AWS :: IAM :: InstanceProfile资源,并将其用于您的EC2实例或启动configuration。