#amazon-web-services #amazon-s3 #devops #amazon-iam #amazon-kms
Вопрос:
Я пытаюсь использовать псевдоним ключа KMS для получения объектов из S3, который не работает, в то время как объекты put работают с той же политикой. Моя политика выглядит следующим образом
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListBucket", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::primary-db-backups-XXXXX" }, { "Sid": "AllowGetPutPostgresBackups", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": "arn:aws:s3:::primary-db-backups-XXXXX/*" ] }, { "Sid": "AllowS3KMS", "Effect": "Allow", "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:RequestAlias": "alias/infra_s3_key" } } } ] }
Ошибка, которую я получаю, заключается в следующем
download failed: s3://primary-db-backups-XXXXX/ip15000_2021-10-19T02-37-52.sql to - An error occurred (AccessDenied) when calling the GetObject operation: Access Denied
Если я помещу ключ KMS ARN в ресурс, то это сработает. Я не уверен, почему GetObject не работает, в то время как putObject работает.
Ответ №1:
Вероятно, это происходит потому, что S3 вызывает ключ KMS по своему ARN, а не alias
. Вы можете использовать alias/infra_s3_key
только в том случае, если вызов API для KMS, выполненный S3, будет использоваться сам alias/infra_s3_key
по себе . Но, вероятно, он использует ключ ARN, поэтому работает только условие с ключом KMS ARN.