【问题标题】:允许 S3 存储桶访问自身
【发布时间】:2022-01-23 09:27:48
【问题描述】:

我只希望我的 S3 存储桶能够自行访问。例如,在我的index.html 中有一个对favicon 的引用,它位于我的 s3(实际上相同)存储桶中。当我调用index.html 时,我收到 403 HTTP ACCESS DENIED 错误。

如果我关闭所有访问权限并添加一个有效的策略,但我不希望存储桶公开。

例如,我如何能够在不公开网站的情况下使用我的 AWS 用户调用我的网站(即阻止所有互联网访问)?

【问题讨论】:

  • #1 你的应用有登录页面还是一种登陆?有些资源应该是公开的,有些是私有的。
  • @JRichardsz 存储桶中的网站应该只有少数专用用户才能看到,我将使用 IAM 创建。
  • 我假设登录是由 aws 提供的。您是否阅读过“使用用户策略控制对存储桶的访问”的内容?基本上,您可以在您的 s3 文件和您的 iam 用户之间建立关系。这对你有帮助吗?
  • 查看docs.aws.amazon.com/AmazonS3/latest/userguide/walkthrough1.html 网站图标也是最简单的要求,不应该浪费您宝贵的时间。考虑更改解决方案的架构。 gmail 也不是 gmail,它有私人网站图标:ssl.gstatic.com/ui/v1/icons/mail/rfr/unreadcountfavicon/3/0.png
  • S3 存储桶从不“访问自身”。向 S3 发出请求的是用户的 Web 浏览器。

标签: amazon-web-services amazon-s3


【解决方案1】:

在不知道您的存储桶是如何设置的以及您已经部署了哪些权限/访问控制的情况下,很难给出明确的答案。

话虽如此,听起来您只需要完成正确的步骤即可构建适当的权限模型。您已经通过阻止所有访问和策略探索了其中的一部分,但还需要考虑基于对象所有权的 ACL 和权限细节。

最终,AWS 的文档将比大多数文档做得更好,说明该做什么以及从哪里开始:

https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteAccessPermissionsReqd.html

注意:如果您分享有关如何配置存储桶以及您的客户端如何访问网站的更多信息,我可以编辑答案以提供更具规范性的解决方案(假设 AWS 文档没有完全了解您那里)

更新:在重新阅读您的问题并对我的回答发表评论后,我认为 gusto2 和 John 的回答为您指明了正确的方向。您想要做的是在用户访问 S3 存储桶的内容之前对用户进行身份验证(如果我理解正确,它是一个 s3 托管的静态网站)。这意味着您需要在客户端和存储桶之间建立一个身份验证层,这可以通过多种方式完成(lambda + cloudfront,或者使用像 Cognito 这样的 IdP 肯定是可行的选择)。当有大量关于该主题的可访问博客文章(搜索“Authenticate s3 static website”)时,我要反省到底如何完成这样的事情,这将是一个有争议的问题。

但是我还想指出,您想要完成的事情不可能以您希望完成的方式完成(使用 IAM 权限建模根据 s3 托管的静态网站对用户进行身份验证)。您可以对您的 s3 网站的用户进行身份验证,或者您可以使用 IAM + S3 权限和 ACL 来设置 AWS 用户和角色对存储桶内容的特定访问权限,但您不能使用 IAM 用户/角色作为身份验证的方法客户端访问 S3 静态网站(我认为这不是简单的或至少推荐的方式......)

【讨论】:

  • 我只需要一个存储桶,某些用户可以调用它。存储桶包含多个 HTML 端,它们引用存储桶中的一些对象。存储桶不应公开。基本上就这些了。
【解决方案2】:

我只希望我的 S3 存储桶能够自行访问。

不,请求总是来自客户端

我如何能够通过我的 AWS 用户调用我的网站

对于站点级别的访问控制,有带有 signed cookie 的 CloudFront。您仍然需要一些逻辑(apigw+lambda?边缘上的 lambda?其他服务器?)来验证用户并签署 cookie。

【讨论】:

    【解决方案3】:

    您提到“存储桶中的网站应该只能由少数专用用户查看,我将使用 IAM 创建。”

    但是,使用 IAM 凭证访问 Amazon S3 内容与通过 Web 浏览器中的 URL 访问对象不兼容。进行 AWS API 调用时可以使用 IAM 凭证,但通过 URL 访问内容时需要不同的身份验证方法。身份验证通常需要后端来执行身份验证步骤,或者您可以使用 Amazon Cognito。

    【讨论】:

      猜你喜欢
      • 2018-10-27
      • 2021-10-09
      • 2023-04-05
      • 1970-01-01
      • 2021-06-28
      • 2020-06-12
      • 2020-12-18
      • 2017-06-13
      • 1970-01-01
      相关资源
      最近更新 更多