从 heroku 访问 s3 内容时,AWS 访问密钥显示在浏览器 url 中

Posted

技术标签:

【中文标题】从 heroku 访问 s3 内容时,AWS 访问密钥显示在浏览器 url 中【英文标题】:AWS access key is showing up in browser url when accessing the s3 content from heroku 【发布时间】:2020-09-18 20:50:20 【问题描述】:

我已将我的 django 应用程序部署到 heroku 并使用 Amazon s3 存储桶存储静态文件,我发现从 s3 存储桶获取数据到 heroku 没有问题。但是,当我测试查看内容存储位置时,除了 AccesskeyID 之外,我还获得了 url 路径

https://myapp.s3.amazonaws.com/img/front_cover.JPG?AWSAccessKeyId=AKIAXPKPZLYKLRB7DR4N&Signature=JzTU0DpmbGSBRpYHwV8Dvt0p1QQ%3D&Expires=1590936351

所以我担心在浏览器 URl 中显示访问 ID,我们是否可以选择在 heroku 或 django 设置或 AWS 中禁用它

【问题讨论】:

URL 生成背后的代码是什么?您使用的库应该支持公共(无签名)和预签名 URL(如您发布的那个)。要使用前者,您需要确保对象是公开的,并且您确实可以接受它们。 【参考方案1】:

这是一个presigned URL,AWSAccessKeyId 实际上是其结构的一部分。

this 和 Signature 都需要匹配才能显示给最终用户。

如果安全是一个问题,只需生成最低权限的 IAM 用户。请记住,密钥应该保密,这相当于密码。然而,访问密钥实际上可以通过您的 AWS 账户中的任何人检索到,更接近用户名。

【讨论】:

在浏览了许多网页后发现,将 s3 存储桶公开是在 url 中禁用 AccessKey,这是有道理的。虽然我的是一个网络应用程序,但我仍然只想将存储桶中的文件保密,允许登录到我的应用程序的用户使用。

以上是关于从 heroku 访问 s3 内容时,AWS 访问密钥显示在浏览器 url 中的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 AWS::S3::Errors:: 拒绝访问?

从 VPC 中的 Lambda 访问 AWS S3

使用 VPC 配置添加 AWS Lambda 会导致访问 S3 时超时

Rails:回形针上传时 AWS S3 访问被拒绝错误

AWS S3 存储桶策略允许从特定 URL 的访问

在不同账户的 Lambda 中从 AWS Athena 查询 S3 文件时访问被拒绝