0

私は 2 つの AWS アカウントを持っています。

DEV:  111111111111
PROD: 999999999999

という名前の製品アカウントにコード コミット リポジトリを作成しましたprodRepo

私がやりたいことはDEVPRODアカウントの ec2 インスタンスがこのレポに読み取り専用アクセスできるようにすることです。git cloneなどgit pullなど...

PROD次の IAM インスタンス プロファイルを使用して、自分のアカウントでこれを簡単に行うことができます。codecommit-tester

{
  "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 構成で aws 資格情報ヘルパーを使用して、マシンに資格情報を保存することなく、読み取り専用の git 操作を実行します (インスタンス メタデータからコード コミットの資格情報を取得します)。

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

私が抱えている問題は、アカウントに IAM ポリシー/ロールを作成して、DEVアカウントと同じことを行うこと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

では、これを機能させるために、上の IAM ロール/ポリシーで見逃したものは何DEVですか?

4

1 に答える 1

1

あなたが言及した開発での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"
}

dev ec2 ロールで新しい IAM ARN を引き受けるだけです。

于 2016-11-03T13:52:18.193 に答える