背景:
通过跨帐户角色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-0000000cc4
。Autodeploy
是分配给 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?