如何为临时用户分配策略?

时间:2019-08-04 02:02:22

标签: amazon-web-services security amazon-cloudformation amazon-iam aws-sam

背景:

使用交叉帐户角色someaccountrole,我可以访问AWS帐户xyz


案例1

要在帐户xyz中创建堆栈,我们通过控制台上传Cloudformation文件。

Events标签中的堆栈创建过程中,我们看到了第一个事件,如下所示:

enter image description here


案例2

我们在xyz帐户中创建EC2实例。

使用sam deploy(其中sam deployaws cloudformation deploy的包装),我们在EC2的命令下面运行以创建堆栈:

aws cloudformation deploy --template-file cfntemplate.yml --stack-name somestack-test --region us-east-1

在堆栈创建过程中,我们看到了类似的事件创建(如下所示):

enter image description here


在情况2中,用户为arn:aws:sts::${AccountId}:assumed-role/Autodeploy/i-0000000cc4,我们在其中创建了Autodeploy角色并将其分配给EC2。该用户在堆栈创建完成后消失。


但是在情况2 中,用户(i-0000000cc4)需要权限才能执行以下操作,与情况1 不同:

     {
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:CreateChangeSet",
                "cloudformation:CreateUploadBucket",
                "cloudformation:ExecuteChangeSet",
                "cloudformation:DeleteStack",
                "cloudformation:Describe*",
                "cloudformation:UpdateStack"
            ],
            "Resource": [
                "arn:aws:cloudformation:us-east-1:${AccountId}:stack/somestack*”
            ],
            "Effect": "Allow"
        }

否则,在情况2中,Events标签给出以下错误:

User: arn:aws:sts::${AccountId}:assumed-role/Autodeploy/i-0000000cc4 
is not authorized to perform: cloudformation:CreateChangeSet on resource:
arn:aws:cloudformation:us-east-1:${AccountId}:stack/somestack-test

1)在情况1中,创建堆栈的权限为someaccountrole。但是在第2种情况下,为什么通过AWS CLI创建堆栈需要堆栈创建权限?

2)如何为这种临时会话资源(i-0000000cc4)而不是EC2分配一个内联策略(短期)?

1 个答案:

答案 0 :(得分:1)

  

1)在情况1中,权限被授予堆栈创建的某种权限。但是在第2种情况下,为什么通过AWS CLI创建堆栈需要堆栈创建权限?

情况1中的堆栈由您使用 Permissions 堆栈选项指定的角色创建,请参见[1]。此 AWS身份和访问管理(IAM)服务角色通常具有上面列出的必需的cloudformation:...权限。

  

2)如何为这种临时会话资源(i-0000000cc4)而不是向EC2分配一个内联策略(短期)?

将策略分配给EC2实例的实例配置文件是正确的!

如果您要从EC2实例运行AWS CLI命令,并且要使用实例元数据服务来认证CLI会话,则必须附加所需的权限,作为附加到EC2的角色的嵌入式策略通过实例配置文件实例。

有关实例元数据服务的更多信息,请参见[2] [3]。对于一篇非正式但详尽的博客文章,它很好地解释了这些概念,请参阅[4]。

参考文献

[1] https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-add-tags.html
[2] https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-metadata.html
[3] https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials
[4] https://blog.gruntwork.io/authenticating-to-aws-with-instance-metadata-b6d812a86b40