【问题标题】:Is it okay to publish credentials for an IAM user with NO permissions?可以为没有权限的 IAM 用户发布凭证吗?
【发布时间】:2017-06-17 12:54:16
【问题描述】:

我想创建一个 IAM 用户,该用户可以在客户端激活 JS SDK,允许任何人(有意)将文件上传到特定的 s3 存储桶。

为了使用 SDK,我需要提供凭据。

是否可以为具有零权限的 IAM 用户发布密钥以简单地激活 SDK?

安全性将在存储桶策略上处理。

【问题讨论】:

  • “为了使用 SDK,我需要提供凭据。” 这听起来不对。比如this example就没有这个要求。
  • @Michael-sqlbot 谢谢,但从第一行开始,“让我们开始使用 SDK for JavaScript,创建一个简单的基于浏览器的应用程序,该应用程序使用 Web 身份联合和 Facebook 登录对用户进行身份验证。”我也不想要求用户使用 FB 或任何其他形式的身份验证进行身份验证。
  • 我没说你做过,这不是我想要表达的意思。这是以不需要 AWS 访问密钥 ID 或秘密的方式使用开发工具包的示例——它使用 IAM 角色。
  • 啊,我明白了。有没有一种方法可以在没有任何身份验证步骤的情况下访问联合 ID?我想我可以使用 cognito 来创建一个匿名用户,但这似乎是一个很大的额外步骤。

标签: amazon-web-services amazon-s3 aws-sdk


【解决方案1】:

为什么不使用匿名认知身份池和认知身份凭据提供程序?它主要是为此目的而设计的。

http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-browser-credentials-cognito.html

请注意存在未经身份验证或“匿名”模式

【讨论】:

  • 虽然我不想让 Cognito 参与其中,但 AWS 通知我公开公开密钥违反了 AWS 客户协议。因此,即使这不是安全问题,也是合法问题。
  • @MichaelPell 或者,如果您有办法保持预签名的 url 新鲜(在到期前刷新),您可以简单地对预签名的 url 执行 http put。
  • 感谢您的跟进。我会看看那个。我也在考虑一个 lambda。不过匿名的认知好像也不是什么大问题
  • @MichaelPell 你仍然需要一种方法来获取调用 lambda 的凭据。这也意味着您必须传输两次数据(这是更高的费用),如果您想走这条路线,Api 网关可能是一个更好的长期选择。
  • 是的,我会用 API Gateway 公开它。你知道在服务器端生成签名 URL 的方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
相关资源
最近更新 更多