设置授权用户S3桶策略



我正在尝试为S3桶设置策略,以便只有经过身份验证的用户才能通过URL访问其中的文件。这个想法是在另一个系统中只存储链接而不是文件,当用户想要下载文件时,他们点击链接。我希望用户在AWS中有一个帐户,并且我授予他下载文件的权限。

但是这个解决方案对我的账户不起作用。我得到错误代码403访问被拒绝。

仅当我设置了"Principals" : "*"然后文件就可以访问了。但是我需要限制只有注册用户才能访问。

有人能帮忙吗?提前谢谢你。

亲切的问候,

Lenka

需要理解的重要一点是,您希望向授权用户授予访问权限。因此,当用户请求文件时,他们需要提供他们的身份验证。如果您只是通过匿名链接(例如s3.amazonaws.com/my-bucket/file.txt)访问文件,那么Amazon S3不知道他们是谁,并且会拒绝请求。

有几种方法可以做到这一点:

  • 通过使用AWS SDK的编程语言调用GetObject命令。每个呼叫都将伴随着识别用户的访问凭据。
  • web浏览器通过传递散列授权字符串(称为签名v4)的GET请求来识别用户
  • 通过Amazon S3预签名URL授权通过散列授权字符串
  • 对Amazon S3中的对象进行临时访问

最合适的解决方案是使用Amazon S3预签名URL。

A 预签名URL可用于授予对S3对象的访问权限,作为"覆盖"访问控制的一种方式。通常私有对象可以通过URL访问,方法是附加一个到期时间和签名。这是一种无需web服务器就可以提供私有内容的好方法。

使用预签名URL的好处是您的用户不需要AWS凭据。应用程序的责任是对用户进行适当的身份验证,以确定是否允许他们访问S3中的对象。如果它们被授予访问权限,那么应用程序应该生成预签名的url,作为指向这些对象的经过身份验证的链接。这些url只在限定时间内有效

预签名URL也可以通过AWS CLI中的aws s3 presign命令生成

最新更新