我已经弄清楚了如何设置 CORS 和 IAM,所以我将图像发布到 S3 并显示来自 S3 的图像。我有两个主要问题。
- 我所拥有的
- 似乎不安全,因为根据我对我所拥有的东西的理解,任何人都可以访问它。
- 如果我保护它,我将无法再在本地主机上正确测试。而且我无法选择将其设置为可从工作网络访问本地主机,因为我们都是远程的。
政策
{"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:PutObjectAcl",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::bucket-name",
"arn:aws:s3:::bucket-name/*"
]
},
{
"Sid": "read only policy",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket-name/*"
}
]}
科尔斯
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
那么,如何在仍然允许从本地主机进行开发的同时保护我的配置呢?
使用"Condition": {"StringLike": {"aws:Referer": [ ... ]}}
会阻止来自本地主机的访问吗?
您可以在不使用 Referer 标签的情况下锁定 S3 存储桶。 测试完成后使用它可能更安全。
在 AWS S3 控制台中,您可以向自己授予访问存储桶的权限。 只要被授权者不说"所有人",每个人都无法访问存储桶。
然后,您可以在 IAM>用户中为自己生成 IAM 访问密钥>"user_name"。 此密钥可用于向存储桶进行身份验证。
您还需要通过将 AmazonS3FullAccess 附加为策略来授予用户 AmazonS3FullAccess。
您应该能够使用刚刚生成的用户凭证来访问和修改 S3 中的文件。