有没有一种方法可以限制对s3预签名URL的访问

时间:2020-06-29 08:42:09

标签: amazon-web-services amazon-s3

我有一个用例,允许用户访问s3中存在的远程文件。目前,我正在通过电子邮件发送预签名的URL,并允许访问。但是我有一个用例无法满足该解决方案。 也就是说,如果将包含预签名URL的电子邮件转发给意外的人,则转发收件人应该无法访问该文件。有没有一种方法可以通过id / password验证s3预签名url。我也愿意使用其他AWS服务来解决该用例。

2 个答案:

答案 0 :(得分:1)

预签名URL不适用于电子邮件。

使用预签名URL的目的是,用户将对应用程序进行身份验证,然后请求访问某些私有内容。应用程序将验证他们是否被允许访问,然后提供一个预签名的URL以授予对内容的限时访问。这种访问通常需要长达5-10分钟的时间。

如您的情况所示,如果有人将预先签名的URL转发给其他人,则会出现问题。由于访问时间有限,通常这不是问题。但是,如果生成的预签名URL可以访问数小时或数天,则更多的是安全问题。

解决方案:提供指向您的应用程序的链接。用户应该进行身份验证,然后提供一个短期(例如5分钟)的预签名URL。这降低了其他人可以使用该链接的机会。

答案 1 :(得分:0)

默认情况下,您不能限制,谁可以使用预签名网址。预先签名的S3 url的全部目的是允许在有限的时间内访问anyone who has them对象:

接收预签名URL的任何人都可以访问该对象。

如果这不适合您,则您别无选择:

  • 不要使用预签名的URL ,而是创建一个IAM用户,该用户仅具有下载对象的权限。这将需要您的收件人登录到AWS。
  • 使用包含您对象的受密码保护 7zip或rar文件。因此,您无需直接下载对象,而可以将预签名的URL提供给受密码保护的档案。
  • 使用加密并共享加密的文件。您的客户需要将其解密。
  • 还有许多其他人

但是最终,它们将与用户的密码,加密密钥或其他将要实现的保护类型一样保存。