- 最新
- 投票最多
- 评论最多
【以下的回答经过翻译处理】 aws_s3.query_export_to_s3
使用 AWS 托管密钥 aws/s3
来加密导出的数据(而不是问题中列出的 aws/rds
)。该密钥的策略如下:
{ "Version": "2012-10-17", "Id": "auto-s3-2", "Statement": [ { "Sid": "Allow access through S3 for all principals in the account that are authorized to use S3", "Effect": "Allow", "Principal": { "AWS": "" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "", "Condition": { "StringEquals": { "kms:CallerAccount": "123456789012", "kms:ViaService": "s3.eu-central-1.amazonaws.com" } } }, { "Sid": "Allow direct access to key metadata to the account", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": [ "kms:Describe", "kms:Get*", "kms:List*" ], "Resource": "*" } ] }
根据此策略,您账户的任何 IAM 委托人都可以使用该密钥通过 S3 服务执行“加密”、“解密”等操作(第一个策略声明),而直接使用仅限于元数据操作(第二个策略声明)。因此,如果您的 IAM 委托人与密钥位于同一帐户中,并且可以通过“GetObject”访问 S3 对象,那么他们也应该能够解密和下载导出的数据。我能想到的这种情况的原因是
- 您尝试从另一个账户中的委托人访问对象(该账户可以访问数据,例如通过跨账户角色或存储桶策略),但无法访问 AWS 托管密钥“aws/s3”进行解密。
- 存在针对您的 IAM 委托人的明确拒绝,阻止您的 IAM 委托人访问密钥。
请注意,在这种情况下不需要显式拒绝,因为 IAM 委托人无法在不通过 S3 的情况下直接使用“aws/s3”来“解密”。任何 IAM 委托人(甚至 root)也没有可能获得该特定密钥的特权,因为
- AWS 托管密钥的密钥策略(例如
aws/s3
)不能更改,并且 aws/s3
的密钥策略不允许CreateGrant
委托访问密钥(即使是root 用户)。
相关内容
- AWS 官方已更新 1 年前