我在Amazon S3中创建了一个存储桶,并在其中上传了2个文件并将其公开。我有链接,我可以从互联网上的任何地方访问它们。我现在想对谁可以下载文件设置一些限制。有人可以帮助我。我确实尝试过文档,但感到困惑。
我希望在下载时使用公共链接,它应该要求一些凭据或某些东西来验证用户。这可能吗?
答案 0 :(得分:21)
默认情况下,Amazon S3中的所有对象都是私有的。然后,您可以添加权限,以便人们可以访问您的对象。这可以通过以下方式完成:
只要这些方法中至少有一种授予访问权限,您的用户就可以从Amazon S3访问这些对象。
<强> 1。单个对象的访问控制列表
Amazon S3管理控制台中的Make Public
选项将向所有Internet用户授予Open/Download
权限。这可用于授予对特定对象的公共访问权。
<强> 2。存储桶政策
可以使用Bucket Policy授予对整个存储桶或存储桶的一部分的访问权限。它还可用于指定访问限制。例如,策略可以使桶中的特定目录在特定时间段内从特定范围的IP地址向用户公开,并且仅在通过SSL访问存储桶时才会公开。
存储桶策略是在必须为每个单独对象指定权限的情况下授予对许多对象(例如特定目录)的公共访问权的好方法。它通常用于从S3存储桶中提供的静态网站。
第3。 IAM用户和组
这类似于定义存储桶策略,但是将权限分配给特定用户或用户组。因此,只有那些用户才有权访问这些对象。用户在访问对象时必须对自己进行身份验证,因此在通过AWS API访问对象时最常用,例如使用AWS Command-Line Interface (CLI)中的aws s3
命令。
用户必须在进行API调用时提供身份验证,而不是提示进行身份验证。一种简单的方法是将用户凭据存储在本地配置文件中,CLI在调用S3 API时将自动使用该文件。
<强> 4。预签名网址
Pre-Signed URL 可用于授予对S3对象的访问权限,作为“覆盖”访问控制的一种方式。通过附加到期时间和签名,可以通过URL访问通常的私有对象。这是一种在不需要Web服务器的情况下提供私有内容的好方法。
通常,预签名URL由应用程序在希望授予对象访问权限时构建。例如,假设您有一个照片共享网站,并且用户已对您的网站进行了身份验证。您现在希望在网页中显示他们的图片。图片通常是私有的,但您的应用程序可以生成预签名URL,授予他们临时访问图片的权限。预签名URL将在特定日期/时间后过期。
答案 1 :(得分:0)
关于预签名 URL,签名位于请求标头中,因此它应该在 HTTPS/TLS 加密中。但请自行检查。