Ограничить доступ к пространству имен в ECR

Я хочу ограничить экземпляр EC2 репозиториями реестра контейнеров EC2 (ECR) с тем же пространство имен.

Роль экземпляра IAM должна только извлекать все репозитории под AWS_ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/test-namespace/.... Ничего больше.

Я попробовал следующую политику IAM для роли экземпляра EC2:

{
    "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.

Поскольку у нас много репозиториев, я не хочу устанавливать права доступа к ресурсам для каждого репозитория.


person Dominik    schedule 31.03.2017    source источник


Ответы (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/*"
            ]
        }
    ]
}
person Samuel Karp    schedule 10.12.2019