2

我需要通过移动应用程序在 AWS S3 上上传文件。我找到了 2 个解决方案来处理它。两种解决方案都有效,但我没有足够的能力来确定最安全的解决方案。

  1. 使用Secure Token Service (STS) Amazon Web Services 提供的临时凭证。

    1. 我的服务器使用 AWS 账户 access_key_id 和 secret_access_key 请求 STS 的临时凭证(具有受限权限)
    2. 然后我的服务器将临时凭证(access_key_id、secret_access_key 和 session_token)发送到移动应用程序
    3. 移动应用使用具有特定请求签名(在移动端计算)的临时凭证在 S3 上发送文件

  2. 使用永久凭证(AWS 账户 access_key_id 和 secret_access_key)

    1. 我的服务器直接创建请求签名(使用 AWS 账户 access_key_id 和 secret_access_key)并将请求“元素/结构”(包括生成的签名、所需的标头...)发送到移动应用程序
    2. 移动应用程序使用带有服务器提供的签名的“元素”在 S3 上发送文件

第二种解决方案更简单。但该解决方案似乎不太安全:帐户 access_key_id 被公开,并且直接使用帐户 secret_access_key 生成签名。用于生成签名的摘要算法是 HMAC-SHA1。是否足够安全?

第二种解决方案公开具有过期时间的临时凭证:公开有限的凭证更加安全。如果 HMAC-SHA1 算法足够安全以使 secret_access_key 无法检索,我不明白我为什么会选择这个解决方案。

感谢您的投入

4

1 回答 1

0

您的临时解决方案本质上是一个Token Vending Machine。这是我们推荐的将凭证获取到设备上以与我们的 AWS 移动开发工具包一起使用的方法。发送临时凭证的内在好处是它们可以用于访问 S3 之外的其他服务。

于 2013-04-05T22:46:08.577 回答