通过api为AWS S3授予第三方访问权限

时间:2019-05-28 05:30:05

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

如何让其他用户访问我的AWS S3存储桶,而不必为其创建IAM角色并发送密钥/秘密。 我希望第三方自行决定凭据。

这有可能吗?

基本上,我正在搜索类似于S3的OAuth

1 个答案:

答案 0 :(得分:1)

默认情况下,Amazon S3存储桶是私有的。

可以通过几种方式授予对对象的访问权限:

  • 存储桶策略可以使存储桶或存储桶的一部分可公开访问(不适用于您的用例)
  • 对象上的访问控制列表(ACL)可以使其公开访问(不适用于您的用例)
  • 可以为
  • IAM用户授予对Amazon S3存储桶的权限(但IAM用户应仅用于您的员工,而不能用于应用程序用户)
  • 可以暂时假定
  • IAM角色,但首先需要进行身份验证(有关此内容,请参见下文)
  • 可以生成
  • 预签名URL ,以提供对Amazon S3对象的限时访问

对于您的用例,最适用的方法是:

  • 用户身份验证到您的应用程序。这可以使用Amazon Cognito或您希望使用的任何身份验证方法。
  • 当用户希望访问私有对象时,您的应用程序将确定他们是否具有这种访问权限(通过您自己的代码完成)。
  • 如果允许他们访问,则应用程序应生成预签名URL 。该URL可以包含在<a><img>之类的标签中。
  • 当用户访问URL时,他们将能够直接从Amazon S3访问对象。
  • 一旦有效时间,预签名的URL将不再起作用。

因此,欢迎您使用OAuth或任何其他身份验证方法,但是应用程序有责任确定它们是否有权访问单个对象,如果是,则生成并返回预签名的URL。 (这只是几行代码,不需要任何API调用即可生成它。)

请参阅:Share an Object with Others - Amazon Simple Storage Service

Amazon Cognito能够发布与 IAM角色相关的凭证,然后用户可以使用这些凭证对AWS进行API调用。但是,它是许多用户共享的通用角色,而不是授予用户特定权限的方法。