Утрачен доступ к S3 после предоставления доступа к STS - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть две разные учетные записи AWS, DEV и PROD, и я хотел бы создать пользователя в DEV для управления корзинами S3 в обеих.Я создал пользователя Bob, к которому прикреплена следующая политика:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::some-dev-bucket/*",
                "arn:aws:s3:::another-dev-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "*"
        }
    ]
}

Это на самом деле работает, Боб может перечислить все корзины и получить доступ к некоторым из них.Чтобы предоставить Бобу доступ к корзинам S3 в учетной записи PROD, я создал там роль PROD-S3-Access с соответствующими разрешениями и доверительными отношениями, которые позволяют пользователям DEV принять это.Возвращаясь к DEV, я создаю новую политику, которая позволяет Бобу взять на себя роль:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::prod-account-id:role/PROD-S3-Access"
        }
    ]
}

Это также отлично работает, теперь Боб может получить доступ к PROD s S3.Однако при выполнении aws s3 ls в учетной записи DEV Боб получает это сообщение An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied.Смущает, что если я откажусь от политики, которая позволяет Бобу принять PROD-S3-Access, он снова может прочитать S3-сегменты DEV.Любая подсказка?

РЕДАКТИРОВАТЬ:

На самом деле проблема была вызвана мною не замеченным состоянием, которое требовало от пользователя включения MFA.

1 Ответ

0 голосов
/ 18 декабря 2018

Простое добавление политики ALLOW для пользователя не должно удалять доступ.Это действительно странно.

Альтернативой принятию роли является предоставление Бобу в DEV разрешения на прямой доступ к PROD корзинам.Для этого требуется две вещи:

  • Разрешения IAM для DEV Bob для доступа к корзинам PROD
  • A Политика Bucket для каждого блока PROD Bucket доступ из DEV Bob

Таким образом, один пользователь может получить доступ к корзинам DEV и PROD, что позволяет копировать данные между ними.

...