Amazon web services 限制对ECR中命名空间的访问

Amazon web services 限制对ECR中命名空间的访问,amazon-web-services,amazon-iam,amazon-ecr,Amazon Web Services,Amazon Iam,Amazon Ecr,我想将EC2实例限制为EC2容器注册表(ECR)存储库,并具有相同的属性 IAM实例角色应该只能提取AWS_ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/test namespace/…下的所有存储库。没有别的了 我已在EC2实例角色上尝试了以下IAM策略: { “版本”:“2012-10-17”, “声明”:[ { “Sid”:“STMT149095256000”, “效果”:“允许”, “行动”:[ “ecr:GetAuthorizationToken”,

我想将EC2实例限制为EC2容器注册表(ECR)存储库,并具有相同的属性

IAM实例角色应该只能提取AWS_ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/test namespace/…下的所有存储库。没有别的了

我已在EC2实例角色上尝试了以下IAM策略:

{
“版本”:“2012-10-17”,
“声明”:[
{
“Sid”:“STMT149095256000”,
“效果”:“允许”,
“行动”:[
“ecr:GetAuthorizationToken”,
“ecr:BatchCheckLayerAvailability”,
“ecr:GetDownloadUrlForLayer”,
“ecr:GetRepositoryPolicy”,
“ecr:描述假设”,
“ecr:ListImages”,
“ecr:描述图像”,
“ecr:BatchGetImage”
],
“资源”:[
“arn:aws:ecr:REGION:aws\u ACCOUNT\u ID:repository/test namespace/*”
]
}
]
}
但我能够
docker从该实例上的所有存储库中提取
图像。例如,
AWS\u ACCOUNT\u ID.dkr.ecr.REGION.amazonaws.com/test repo:latest

我不知道我做错了什么。这不可能是唯一的原因。除了ecr:GetAuthorizationToken
之外,上述所有操作都支持它们


由于我们有许多存储库,我不想在每个存储库上设置资源权限。

ecr:GetAuthorizationToken
不支持资源级别权限。您需要将
资源“*”
授予
ecr:GetAuthorizationToken
操作。其他操作可以限制为您希望访问的特定资源

在一个策略中,这看起来是这样的:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1490955256000",
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "Stmt1490955256001",
            "Effect": "Allow",
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetRepositoryPolicy",
                "ecr:DescribeRepositories",
                "ecr:ListImages",
                "ecr:DescribeImages",
                "ecr:BatchGetImage"
            ],
            "Resource": [
                "arn:aws:ecr:REGION:AWS_ACCOUNT_ID:repository/test-namespace/*"
            ]
        }
    ]
}