【问题标题】:Restrict access to namespace in ECR限制对 ECR 中命名空间的访问
【发布时间】:2017-08-26 01:58:51
【问题描述】:

我想将 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 除外。

由于我们有很多存储库,我不想对每个存储库都设置资源权限。

【问题讨论】:

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


    【解决方案1】:

    ecr:GetAuthorizationToken 不支持资源级权限。您需要将"Resource": "*" 授予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/*"
                ]
            }
        ]
    }
    

    【讨论】:

    • 能否请您在哪里看到这个并解释为什么它是真的?
    猜你喜欢
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多