AWS Codecommit 跨账户 IAM 角色
AWS Code Commit Cross Account IAM Roles
我有两个 AWS 账户:
DEV: 111111111111
PROD: 999999999999
我在名为 prodRepo
的产品帐户中创建了一个代码提交回购协议。
我想要做的是允许 DEV
和 PROD
帐户上的 ec2 实例对该存储库具有只读访问权限。所以 git clone
, git 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 配置中使用 aws 凭据助手来执行只读 git 操作,而不必在我的机器上存储凭据(它从实例获取代码提交的凭据元数据)。
$ cat ~/.gitconfig
[credential]
helper = !aws codecommit credential-helper $@
UseHttpPath = true
我遇到的问题是在 DEV
帐户上创建 IAM policy/role 以执行与 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 roles/policies 中遗漏了什么才能使这项工作成功?
我认为你不需要你提到的 dev 中的 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。
我有两个 AWS 账户:
DEV: 111111111111
PROD: 999999999999
我在名为 prodRepo
的产品帐户中创建了一个代码提交回购协议。
我想要做的是允许 DEV
和 PROD
帐户上的 ec2 实例对该存储库具有只读访问权限。所以 git clone
, git pull
, 等等...
我可以使用以下名为 codecommit-tester
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 配置中使用 aws 凭据助手来执行只读 git 操作,而不必在我的机器上存储凭据(它从实例获取代码提交的凭据元数据)。
$ cat ~/.gitconfig
[credential]
helper = !aws codecommit credential-helper $@
UseHttpPath = true
我遇到的问题是在 DEV
帐户上创建 IAM policy/role 以执行与 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 roles/policies 中遗漏了什么才能使这项工作成功?
我认为你不需要你提到的 dev 中的 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。