AWS ECR权限问题:IAM用户user1无法查看指定单个仓库repo1
问题分析与解决方案
问题根源在于ECR控制台默认会发起不带仓库名称参数的ecr:DescribeRepositories请求,该请求需要对所有ECR仓库资源(arn:aws:ecr:eu-west-2:[account_ID]:repository/*)的权限,但直接放开该资源会导致用户能看到所有仓库,不符合需求。
正确的策略配置需要分两步:
- 保留原有针对repo1的全ECR操作权限
- 允许
ecr:DescribeRepositories动作,但通过条件限制仅能返回repo1
最终内联策略JSON如下:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowFullRepo1Access", "Effect": "Allow", "Action": "ecr:*", "Resource": "arn:aws:ecr:eu-west-2:[account_ID]:repository/repo1" }, { "Sid": "FilterDescribeRepositories", "Effect": "Allow", "Action": "ecr:DescribeRepositories", "Resource": "arn:aws:ecr:eu-west-2:[account_ID]:repository/*", "Condition": { "StringEquals": { "ecr:RepositoryName": "repo1" } } } ] }
配置说明
- 第一条语句:授予user1对repo1仓库的所有ECR操作权限,满足核心需求。
- 第二条语句:允许调用
ecr:DescribeRepositories接口,但通过StringEquals条件约束,仅能返回名称为repo1的仓库,确保控制台仅显示目标仓库,同时避免用户看到其他仓库列表。
注意:将策略中的[account_ID]替换为你的实际AWS账户ID,且确保user1无其他冲突的IAM策略。
内容的提问来源于stack exchange,提问作者André Lourenço
相关产品推荐
相关产品推荐

