AWS Codebuild列出其他帐户的s3个存储桶

时间:2020-09-02 06:25:41

标签: amazon-web-services amazon-s3 aws-codebuild

enter image description here我的代码构建版本位于帐户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

1 个答案:

答案 0 :(得分:1)

假设您的CodeBuild(CB)拥有sts:AssumeRole的权限,那么在您的buildspec.yml中,您必须明确地担任Acc B的角色。

您可以使用两种方式

  • 在您的buildspec.yml中“手动”呼叫assume-role。该呼叫将返回一组临时凭证。然后,所获得的凭证可用于从CB在Acc B中执行AWS CLI命令。

  • 在CB容器中设置herehere所示的AWS CLI凭证文件以承担角色。

在两种情况下,CB服务角色都需要sts:AssumeRole权限。