背景:

背景:

背景:

通过跨帐户角色someaccountrole,我可以访问 aws 帐户xyz


情况1

为了在 account 中创建堆栈xyz,我们通过控制台上传 Cloudformation 文件。

在选项卡中创建堆栈的过程中Events,我们看到第一个事件,如下所示:

在此输入图像描述


案例2

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

使用山姆部署,其中sam deploy是 的包装器aws cloudformation deploy,我们从 EC2 运行以下命令来创建堆栈:

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

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

在此输入图像描述


在情况 2 中,用户是:arn:aws:sts::${AccountId}:assumed-role/Autodeploy/i-0000000cc4Autodeploy是分配给 EC2 的角色名称。堆栈创建完成后,该用户就会消失。


但在案例2, user( 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"
        }

否则,Events选项卡在情况 2 中会给出以下错误:

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中,创建堆栈不需要权限。但在情况 2 中,为什么通过 AWS CLI 创建堆栈需要堆栈创建权限?

2)如何将内联策略(短期)分配给这样的临时会话资源(i-0000000cc4)而不是EC2?

相关内容