首页 文章

AWS代码提交跨帐户IAM角色

提问于
浏览
0

我有两个AWS账户:

DEV:  111111111111
PROD: 999999999999

我在prod帐户中创建了一个名为 prodRepo 的代码提交仓库 .

我想要做的是允许 DEVPROD 帐户上的ec2实例具有对此repo的只读访问权限 . 所以 git clonegit pull 等......

我可以使用以下名为 codecommit-tester 的IAM实例配置文件在我的 PROD 帐户上轻松完成此操作

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:BatchGetRepositories",
        "codecommit:Get*",
        "codecommit:GitPull",
        "codecommit:List*"
      ],
      "Resource": "arn:aws:codecommit:us-east-1:999999999999:prodRepo"
    }
  ]
}

信托关系政策是:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
}

然后我使用git config中的aws凭证帮助程序来执行只读git操作,而不必在我的机器上存储凭据(它从实例元数据获取代码提交的凭据) .

$ cat ~/.gitconfig
[credential]
    helper = !aws codecommit credential-helper $@
    UseHttpPath = true

我遇到的问题是在 DEV 帐户上创建IAM策略/角色,以执行与 PROD 帐户相同的操作 . 这是我试过的 .

我在 PROD 帐户上编辑了信任关系以信任DEV帐户:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:root"
      },
      "Action": "sts:AssumeRole"
    }
}

现在我认为这意味着 DEV 帐户可以承担此角色 . 在 DEV 帐户上,我创建了附加到角色的这些IAM策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codecommit:BatchGetRepositories",
                "codecommit:Get*",
                "codecommit:GitPull",
                "codecommit:List*"
            ],
            "Resource": "arn:aws:codecommit:us-east-1:999999999999:prodRepo"
        }
    ]
}

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::999999999999:role/codecommit-tester"
    }
}

在使用此IAM实例配置文件启动ec2实例后,我在DEV帐户上使用凭证帮助程序,并且在执行 git clone 时出现此错误:

$ git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/prodRepo
Cloning into 'prodRepo'...
fatal: unable to access 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/prodRepo/': The requested URL returned error: 403

那么我在 DEV 的IAM角色/政策中错过了什么来使这项工作?

1 回答

  • 1

    我认为你不需要在 dev 中提到iam角色(在DEV帐户上我创建了这些附加到角色的IAM策略)....没有尝试过实例跨帐户假设角色..但是如果你可以创建新的IAM在prod帐户中的角色

    {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::999999999999:role/codecommit-tester"
        }
    ]
    }
    

    和信任关系会是这样的

    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:root"
      },
      "Action": "sts:AssumeRole"
    }
    

    并在dev ec2角色中假设新的IAM ARN .

相关问题