【问题标题】:Integrating S3 with custom user management将 S3 与自定义用户管理集成
【发布时间】:2018-02-26 15:35:26
【问题描述】:

我们正在构建一个自定义应用程序(使用LoopBack),该应用程序需要存储来自多个用户的许多大文件,因此我们自然而然地关注 S3。我们之前做过类似的事情,客户端将文件上传到服务器,然后在一个 AWS 账户下处理并将它们上传到 S3,但是对于这个新应用程序,我们希望允许客户端(使用自定义 iOS 应用程序)使用 iOS S3 SDK 直接上传到自己的存储桶或文件夹。将在服务器上创建用户帐户。

有没有办法使用自定义代码来处理 S3 身份验证/授权?例如,iOS 客户端是否可以请求一个临时令牌以允许它们上传到特定的 S3 存储桶或文件夹?或者我们是否需要为系统中的每个用户创建唯一的 IAM 用户?

这是一个糟糕的主意吗?这听起来是个可怕的主意。 :)

我发现了一个类似的问题here,但没有确定的答案。

更新:我发现 this 关于临时安全凭证的文章看起来很有希望。如果构建移动应用程序,它还建议使用我从未使用过的 Cognito。

【问题讨论】:

    标签: amazon-web-services amazon-s3 loopbackjs


    【解决方案1】:

    Cognito 是要走的路。您绝对不应为此创建 IAM 用户。 IAM 用于以编程方式或从控制台管理对 aws 服务的访问。此外,您需要在 ios 应用程序中硬编码 IAM 访问密钥,这不是最佳做法。

    https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html

    https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_cognito.html

    【讨论】:

    • 这是我们要采用的方法。我已经完成了 99% 的工作(只需整理角色的 S3 访问策略文件。)
    【解决方案2】:

    如果您的应用程序的用户已经通过身份验证,您可以使用您的凭据在您的后端生成一个预签名的 S3 url。然后可以将此 URL 返回给应用程序并用于上传文件。

    这将避免必须创建单独的 IAM 用户/权限和/或管理存储桶策略。

    查看上面的文档here

    【讨论】:

    • 很高兴知道,我们实际上将在应用程序的其他地方使用预签名的 URL。感谢您的建议!
    【解决方案3】:

    不确定与您的情况有多相关。

    您可以创建一个允许上传到 s3 的角色,并使用基于 Web 的 SAML 身份进行身份验证,并允许特权代入该角色并获取临时凭证和令牌。

    这将使验证 S3 上传的时间非常有限。即直到临时凭据过期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-16
      • 2016-06-20
      • 2011-05-03
      • 2012-08-24
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多