首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS代码提交跨帐户IAM角色

AWS代码提交跨帐户IAM角色
EN

Stack Overflow用户
提问于 2016-11-02 19:48:04
回答 1查看 1.4K关注 0票数 0

我有两个AWS账户:

代码语言:javascript
复制
DEV:  111111111111
PROD: 999999999999

我在名为prodRepo的prod帐户中创建了一个代码提交回购。

我想做的是允许DEVPROD帐户上的一个PROD实例对此回购进行只读访问。所以git clonegit pull等等..。

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

代码语言:javascript
复制
{
  "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"
    }
  ]
}

信托关系政策是:

代码语言:javascript
复制
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
}

然后,我使用git配置中的aws凭据帮助程序执行只读git操作,而无需在我的计算机上存储凭据(它从实例元数据中获取代码提交的凭据)。

代码语言:javascript
复制
$ cat ~/.gitconfig
[credential]
    helper = !aws codecommit credential-helper $@
    UseHttpPath = true

我遇到的问题是在DEV帐户上创建一个IAM策略/角色来执行与PROD帐户相同的事情。这是我试过的。

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

代码语言:javascript
复制
{
  "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策略:

代码语言:javascript
复制
{
    "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时得到此错误。

代码语言:javascript
复制
$ 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角色/策略中错过了什么来完成这项工作呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-03 13:52:18

我认为您不需要在您提到的 DEV 中扮演iam角色(在DEV帐户上,我创建了这些附加于角色的IAM策略).没有尝试过与实例交叉帐户承担角色..。但是,如果您可以在prod帐户中创建新的IAM角色

代码语言:javascript
复制
{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::999999999999:role/codecommit-tester"
    }
]
}

而信任关系就像

代码语言:javascript
复制
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111111111111:root"
  },
  "Action": "sts:AssumeRole"
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40388537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档