繁体   English   中英

面向用户的网站的 S3 存储桶策略

[英]S3 bucket policy for user facing websites

那里的所有文章,尤其是 aws 文档都列出了拥有公共存储桶非常危险,这是正确的,但是对于面向客户的平台,例如社交媒体网站,这里的目标是确实拥有可用的资产向公众开放,并且只允许写入平台上经过身份验证的用户

我试图实现的目标是,如果用户已被授予使用预签名 POST url的访问权限,则仅允许用户写入存储桶,但允许用户从存储桶中的特定位置读取。

我有一个特定的政策,但这是否允许任何人写入存储桶?

"Statement": [
        {
            "Sid": "Write",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:PutObject",
            "Resource": "bucket_name/path/path/*"
        },
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "bucket_name/path/path/*"
        }
    ]

默认情况下,S3 私有存储桶仅允许私有访问以进行写入交互,第一条语句允许任何人调用PutObject ,无论他们是否拥有 AWS IAM 凭证或已登录。

第二条语句允许匿名读取,但仅限于特定前缀。

如果您想允许登录用户执行操作,您有以下选择:

  • 使用IAM 角色(或仅当您的应用程序不在 AWS 中时使用IAM 用户)控制此服务器端。 授予附加到实体的策略执行 putObject 的权限,如果您想在委托人中进一步锁定存储桶,您可以指定 IAM Arn。
  • 您是否使用附加的Cognito用户登录,通过使用 Cognito 登录,您的前端/后端将获得临时 session 凭据。 使用这些凭据,您可以与SDK进行交互,但请确保用户已先登录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM