Ama*_*dil 11 amazon-web-services amazon-ecs
我们有两个 AWS 账户。账户 A 有 ECR 存储库,账户 B 旨在能够从中提取。
我尝试在账户 A 中设置存储库权限声明以允许从账户 B 中提取,但 AWS 声称我的策略无效。
我试过了:
Your permission statements have one or more invalid parameters. Invalid parameter at 'PolicyText' failed to satisfy constraint: 'Invalid repository policy provided'
arn:aws:iam::1234567891011:root
) 中root 用户的 ARN 。这导致错误The service name arn:aws:iam::1234567891011:root is invalid. A valid service name format is [service].amazonaws.com.
以上是通过 AWS 控制台完成的,该控制台不允许直接编辑 JSON 以获得 ECR 权限。我已经尝试了aws ecr set-repository-policy
具有上述更改的 CLI 命令,但在终端中返回了相同的错误。
为同一账户中的IAM 用户添加权限工作正常。
我尝试在该政策下添加的操作是:
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer",
"ecr:GetRepositoryPolicy",
"ecr:ListImages",
"ecr:DescribeRepositories"
]
Run Code Online (Sandbox Code Playgroud)
任何想法我可能做错了什么?
小智 7
您还需要在 ECR 中配置权限以进行跨账户访问。要向账户 B 授予对账户 A 的 ECR 的拉取访问权限,请将以下 JSON 策略放在 ECR 权限选项卡中。
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowCrossAccountPull",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::aws_account_b_number:root"
},
"Action": [
"ecr:GetDownloadUrlForLayer",
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
您需要为账户 b 设置跨账户角色来承担。
在具有注册表 A 的帐户中创建跨帐户角色,授予对角色中注册表的访问权限。并授予账户 B 担任该角色的权限。
http://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html
http://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html
归档时间: |
|
查看次数: |
8840 次 |
最近记录: |