繁体   English   中英

AWS Code Commit跨账户IAM角色

[英]AWS Code Commit Cross Account IAM Roles

我有两个AWS账户:

DEV:  111111111111
PROD: 999999999999

我在prod帐户prodRepo创建了一个代码提交prodRepo

我想做的是允许DEVPROD帐户上的ec2实例对该存储库具有只读访问权限。 所以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角色/策略中,我错过了什么来完成这项工作?

我认为您在提到的开发人员中不需要iam角色(在DEV帐户中,我创建了与角色关联的这些IAM策略)....尚未尝试使用实例交叉帐户承担角色..但是,如果可以创建新角色IAM在产品帐户中的作用

{
"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"
}

并假设新的IAM ARN处于dev ec2角色。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM