У меня есть две учетные записи 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, операция проходит успешно, без ошибок.