限制在ECR

时间:2017-03-31 17:44:58

标签: amazon-web-services amazon-iam amazon-ecr

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

IAM实例角色只应 可以在AWS_ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/test-namespace/...下提取所有存储库。没别了。

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

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1490955256000",
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
                "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/*"
            ]
        }
    ]
}

但是我能够从该实例上的所有存储库中docker pull张图像。例如。 AWS_ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/test-repo:latest

我看不出我做错了什么。它不能是resource-level permissions。除ecr:GetAuthorizationToken之外,上述所有操作都支持它们。

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

1 个答案:

答案 0 :(得分:1)

tb2Text = h*e*l*l*o 不支持资源级权限。您需要将ecr:GetAuthorizationToken授予"Resource": "*"操作。其他操作可以限制为您希望访问的特定资源。

在一个策略中,它看起来像这样:

ecr:GetAuthorizationToken