我不知道如何限制 s3 上传功能 - 特别是:s3Client.putObject(request);
(使用 Java SDK v1.11.298(
我的设置与如何限制 Amazon S3 存储桶对特定 IAM 角色的访问博客文章
存储桶策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::MyExampleBucket",
"Condition": {
"StringNotLike": {
"aws:userId": [
"AROAEXAMPLEID:*",
"111111111111"
]
}
}
}
]
}
我的用户所在的组具有可传递地授予他s3:*
权限的AdministratorAccess
。
据我了解,这应该被存储桶的政体覆盖,该政体明确只允许承担该角色的用户对存储桶执行任何操作。
有趣的是,读取权限按预期运行。如果用户未代入与AROAEXAMPLEID
关联的角色,则他们无法读取存储桶中的文件,但仍允许他们上传。
我需要将上传和读取限制为仅可以担任该角色的用户。
S3 策略(存储桶或 IAM(可能很困难,因为并不总是清楚操作是希望作为"Resource": "arn:aws:s3:::MyExampleBucket"
应用于存储桶本身还是作为"Resource": "arn:aws:s3:::MyExampleBucket/*"
应用于对象。
对于s3:PutObject
操作,它是路径,而显示的策略仅影响存储桶。 对于s3:*
操作,您需要两者兼而有之。
"Resource": [
"arn:aws:s3:::MyExampleBucket",
"arn:aws:s3:::MyExampleBucket/*"
], ...
策略中的Resource
键接受字符串或字符串数组。