我正在 Build 一个网站,用户可以将文件直接上传到亚马逊s3 . 我暂时用我的密钥签署一个网址,授予用户临时PUT访问我的网站的权限 . 这可以通过CORS配置实现 .
现在,一旦文件在那里,我希望没有人阅读它们,但我 . 当前的存储桶策略我不允许每个人阅读包括我,管理员在内的对象 . 哪个不好 . 什么桶政策会帮助我?
这是我的工作CORS .
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://url.com</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
UPDATE :适用于此政策:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Deny",
"NotPrincipal": {
"AWS":"arn:aws:iam::123456789012:user/Bob"
}
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<bucket>/*"
}
]
}
1 回答
好的,我们创建了一个拥有S3完全权限的IAM用户,我们使用该用户签署临时策略以允许上传 . 用户的用户策略是(您可以进一步限制此用户仅允许访问一个存储桶,或者甚至允许用户仅对存储桶授予权限):
然后,我们创建一个临时策略,允许上传到我们的useruploads存储桶
然后我们使用我们的密钥对base64编码策略进行签名(下面的代码是使用cryptojs创建签名的示例,永远不会将您的密钥放在客户端代码中)
然后,您可以使用签名的策略来允许临时上载
只要我们的案例“useruploadtest”中的存储桶允许我们在我们的应用程序中使用的另一个IAM用户的读取访问来读取文件并处理它们一切正常 .
希望这可以帮助