如何使用 IAM 和 CORS 正确保护 S3



我已经弄清楚了如何设置 CORS 和 IAM,所以我将图像发布到 S3 并显示来自 S3 的图像。我有两个主要问题。

    我所拥有的
  1. 似乎不安全,因为根据我对我所拥有的东西的理解,任何人都可以访问它。
  2. 如果我保护它,我将无法再在本地主机上正确测试。而且我无法选择将其设置为可从工作网络访问本地主机,因为我们都是远程的。

政策

    {"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 中的文件。

相关内容

  • 没有找到相关文章

最新更新