我无法弄清楚如何限制s3上传功能 - 具体来说:s3Client.putObject(request);
(使用Java SDK v1.11.298)
我的设置与 How to Restrict Amazon S3 Bucket Access to a Specific IAM Role博客文章
存储桶政策
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::MyExampleBucket",
"Condition": {
"StringNotLike": {
"aws:userId": [
"AROAEXAMPLEID:*",
"111111111111"
]
}
}
}
]
}
我的用户所在的群组中AdministratorAccess
传递给予s3:*
权限。
据我所知,应该被桶的政体覆盖,明确只允许承担该角色的用户采取任何行动。
有趣的是,读取权限按预期运行。如果用户不承担与AROAEXAMPLEID
关联的角色,则他们无法读取存储桶中的文件,但仍允许他们上传。
我需要将上传和阅读限制为只能担任该角色的用户。
答案 0 :(得分:1)
S3策略(存储桶或IAM)可能很难,因为它并不总是清楚该操作是否希望作为"Resource": "arn:aws:s3:::MyExampleBucket"
或作为"Resource": "arn:aws:s3:::MyExampleBucket/*"
的对象应用于存储桶本身。 / p>
对于s3:PutObject
操作,它是路径,而显示的策略仅影响存储桶。对于s3:*
操作,您需要两者。
"Resource": [
"arn:aws:s3:::MyExampleBucket",
"arn:aws:s3:::MyExampleBucket/*"
], ...
策略中的Resource
键接受字符串或字符串数组。