amazon-web-services - 使用带有别名的 KMS 加密存储桶中的 s3:GetObject
问题描述
我正在尝试使用 KMS 密钥别名从 S3 中获取对象,而当放置对象使用相同的策略时,该对象不起作用。我的政策如下所示
{
"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 Key ARN 放在 Resource 中,它就可以工作。我不确定为什么 GetObject 在 PutObjects 工作时不工作。
解决方案
这可能是因为 S3通过其 ARN 调用 KMS 密钥,而不是alias
. alias/infra_s3_key
仅当 S3 对 KMS 的 API 调用本身使用alias/infra_s3_key
. 但它可能使用密钥 ARN,因此只有使用 KMS 密钥 ARN 的条件才有效。
推荐阅读
- javascript - 重定向到特定页面的问题
- excel - 如果工作表上的单元格值与另一张表上的单元格值相同,则删除该行
- ag-grid - 如何在 ag-grid 中为特定列自定义分组值?
- docker - 容器以 docker-compose up 开头,以 docker ps 列出,然后不以 docker-compose 出现
- java - 我可以使用 HashMap 在 SpringBoot 中选择要自动装配的接口 (DAO) 吗?
- javascript - JS函数调用有效
- firebase - Firestore 安全访问角色系统
- kubernetes - Kubernetes pod 中多个 emptyDir 的后果是什么?
- javascript - useEffect 依赖数组中的 [history.push] 是否会导致重新渲染?
- elasticsearch - 从弹性搜索上的子聚合访问嵌套变量