首页 文章

Amazon S3下载身份验证

提问于
浏览
11

我在Amazon S3中创建了一个存储桶,并在其中上传了2个文件并将其公开 . 我有链接,我可以通过它从互联网上的任何地方访问它们 . 我现在想对谁可以下载文件设置一些限制 . 有人可以帮助我 . 我确实尝试过文档,但感到困惑 .

我希望在下载时使用公共链接,它应该要求一些凭据或某些东西来验证当时的用户 . 这可能吗?

1 回答

  • 19

    By default, all objects in Amazon S3 are private. 然后,您可以添加权限,以便人们可以访问您的对象 . 这可以通过以下方式完成:

    • 访问控制单个对象的列表权限

    • 一个桶策略

    • IAM用户和组

    • 预签名网址

    只要这些方法中至少有一种授予访问权限,您的用户就可以从Amazon S3访问这些对象 .

    1. Access Control List on individual objects

    Amazon S3管理控制台中的 Make Public 选项将向所有Internet用户授予 Open/Download 权限 . 这可用于授予对特定对象的公共访问权限 .

    2. Bucket Policy

    Bucket Policy可用于授予对整个存储桶或存储桶的一部分的访问权限 . 它还可用于指定访问限制 . 例如,策略可以使桶中的特定目录在特定时间段内从特定范围的IP地址公开给用户,并且仅在通过SSL访问存储桶时 .

    存储桶策略是在必须为每个单独对象指定权限的情况下授予对许多对象(例如特定目录)的公共访问权的好方法 . 它通常用于由S3存储桶提供的静态网站 .

    3. IAM Users and Groups

    这类似于定义存储桶策略,但是将权限分配给特定用户或用户组 . 因此,只有那些用户才有权访问这些对象 . 用户在访问对象时必须进行身份验证,因此在通过AWS API访问对象时最常用,例如使用AWS Command-Line Interface (CLI)中的 aws s3 命令 .

    用户必须在进行API调用时提供身份验证,而不是被提示进行身份验证 . 执行此操作的一种简单方法是将用户凭据存储在本地配置文件中,CLI在调用S3 API时将自动使用该文件 .

    4. Pre-Signed URL

    Pre-Signed URL 可用于授予对S3对象的访问权限,作为"overriding"访问控制的一种方式 . 通过附加到期时间和签名,可以通过URL访问通常的私有对象 . 这是一种在不需要Web服务器的情况下提供私有内容的好方法 .

    通常,当应用程序希望授予对对象的访问权限时,由应用程序构造预签名URL . 例如,假设您有一个照片共享网站,并且用户已对您的网站进行了身份验证 . 您现在希望在网页中显示他们的图片 . 图片通常是私有的,但您的应用程序可以生成预签名URL,授予他们临时访问图片的权限 . 预签名URL将在特定日期/时间后过期 .

相关问题