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

标签 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,以上所有 Action 都支持它们。 .

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

最佳答案

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

关于amazon-web-services - 限制对 ECR 中命名空间的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43146730/

相关文章:

amazon-web-services - 关于 cdk bootstrap 中的 IAM 角色

javascript - 来自 Lambda 的 AWS Cognito adminCreateUser

amazon-ec2 - aws ec2 描述实例 IAM 角色不起作用

amazon-web-services - IAM 中的组和路径有什么区别?

amazon-web-services - 当 buildspec 没有错误时,图像未从 codebuild 发送到 ecr

amazon-web-services - 将 ECR 配置为从 Docker Hub 拉取的代理

python - 使用 python 的 boto 从 S3 检索数据时出错

amazon-web-services - 无法使两个账户之间的 Amazon S3 跨区域复制正常工作

php - 如何使用传输管理器在 AWS-SDK-PHP v3.2 上将 ACL 设置为公开读取

amazon-web-services - ECS与ECR自动部署