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



我想将 EC2 实例限制为具有相同命名空间的 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

我不明白我做错了什么。它不能是资源级权限。上述所有操作都支持它们,但 ecr:GetAuthorizationToken 除外

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

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/*"
            ]
        }
    ]
}

相关内容

  • 没有找到相关文章

最新更新