AWS S3 «Отказано в доступе» при операции GetObject (с использованием шифрования на стороне сервера AES-256) - PullRequest
0 голосов
/ 10 октября 2019

У меня есть две учетные записи AWS, и я пытаюсь получить доступ к объектам S3 в учетной записи A из учетной записи B. Указанные объекты были загружены в результате операции Elasticache copy-snapshot, что означает, что корневой пользователь учетной записи A не являетсянастоящий владелец. Я добавил следующие политики:

Политика Bucket для учетной записи A:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::account_b_id:user/user_x"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::bucket-a-name",
                "arn:aws:s3:::bucket-a-name/*"
            ]
        }
    ]
}

Политика IAM, примененная к user_x для учетной записи B:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-a-name",
                "arn:aws:s3:::bucket-a-name/*"
            ]
        }
    ]
}

Вотгде некоторые странные вещи начали происходить. Выполнение вызова, подобного следующему:

aws s3api get-object --bucket bucket-a-name --key backup.rdb localbackup.rdb

Я замечаю, что операция выполняется ТОЛЬКО успешно, если в консоли не включено шифрование на стороне сервера. По умолчанию каждый файл, сохраненный из Elasticache, зашифрован под типом S3 AES-256, а не KMS. До тех пор, пока я не отключу шифрование, я всегда получаю сообщение об ошибке:

An error occurred (AccessDenied) when calling the GetObject operation: Access Denied

Однако, как было продемонстрировано, я дал (как мне кажется,) достаточные разрешения для доступа к этим объектам. Что происходит? Как я могу получить доступ к этим объектам?

Следует также отметить, что, когда я делаю тот же самый звонок от пользователя с политикой AdminstratorAccess для учетной записи A, операция проходит успешно, без ошибок.

...