【发布时间】:2019-08-28 20:37:18
【问题描述】:
我有一个 lambda 函数,当特定 S3 存储桶中发生创建对象操作时会触发该函数。我需要在我的存储桶中为所有用户/角色(包括管理员)做出以下限制,但特定用户除外。他们是:
- 拒绝创建对象(意味着在存储桶的任何位置或其子文件夹中手动上传新文件)
- 拒绝对象删除(意味着手动删除存储桶中任意位置或其子文件夹中的现有文件)
- 拒绝对象覆盖或复制(意味着手动覆盖同名文件或在存储桶及其子文件夹中的任何位置复制文件 - 请注意版本控制已关闭)
- 拒绝对象重命名(意味着手动重命名存储桶或其子文件夹中的现有文件)
我还需要保留我的内联策略中指定的所有 lambda 对我的存储桶的写访问权限。为了实现上述所有目标,我整理了以下 Bucket Policy:
{
"Id": "my-bucket-policy",
"Statement": [
{
"Action": [
"s3:DeleteObject",
"s3:PutObject"
],
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::1234555:user/allowedUser"
]
},
"Resource": [
"arn:aws:s3:::my.bucket/",
"arn:aws:s3:::my.bucket/*"
]
}
],
"Version": "2012-10-17"
}
这不起作用,我返回“策略中的主体无效”消息。你能看出我的政策有什么明显的问题吗?这是满足我要求的正确方法吗?
谢谢
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-lambda