我的代码构建版本位于帐户A 上,而s3存储桶位于帐户B 上。我尝试在帐户B 上设置受信任的IAM STS角色,并在帐户A 上设置策略,以包括帐户B IAM角色,并附加了此策略到我的代码构建服务角色。但是,我的代码构建仍然在s3上显示了存储桶。我在这里做错了什么吗?
在帐户B上具有信任关系的角色
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::Account:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
帐户A的政策
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::Account B:role/testcli"
}
]
}
CodeBuild BuildSpec.yml
version: 0.2
env:
variables:
TF_VERSION: "0.12.28"
phases:
install:
commands:
# install required binary
- echo test
pre_build:
commands:
- echo print s3 buckets
- aws s3 ls
post_build:
commands:
- echo test1
答案 0 :(得分:1)
假设您的CodeBuild(CB)拥有sts:AssumeRole
的权限,那么在您的buildspec.yml
中,您必须明确地担任Acc B的角色。
您可以使用两种方式。
在您的buildspec.yml
中“手动”呼叫assume-role。该呼叫将返回一组临时凭证。然后,所获得的凭证可用于从CB在Acc B中执行AWS CLI命令。
在两种情况下,CB服务角色都需要sts:AssumeRole
权限。