Ahm*_*med 1 policy amazon-s3 bucket amazon-web-services
我有一个具有以下策略的 s3 存储桶
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::bucket",
"arn:aws:s3:::bucket/*"
]
}
]
Run Code Online (Sandbox Code Playgroud)
}
存储桶的公共访问也被阻止。这是存储桶策略的快照
基本上,我希望存储桶是私有的,以防止未经授权的用户上传文件,但我想向任何用户授予对存储桶内对象的公共读取访问权限
看来您希望允许任何人检索对象,但不应该允许他们执行任何其他操作。
有两种方法可以实现此目的:
1. 使用ACL
您可以将public-readACL 分配给各个对象。这还需要为两个 ACL 相关选项停用 S3 阻止公共访问。
通过这种方式,您的存储桶仍然是私有的,但如果对象的名称已知,则可以访问对象。(列表未启用。)
2. 使用桶策略
此策略将允许任何人访问存储桶中的对象:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
它将允许任何获取对象的尝试,但不允许列出、删除等。
对于上述两个选项,如果您希望“授权”用户能够执行上传和删除对象等操作,则应将这些权限直接分配给 IAM 用户(不使用 S3 存储桶策略)。