Security 具有随机密钥的公共S3对象的安全性

Security 具有随机密钥的公共S3对象的安全性,security,amazon-web-services,amazon-s3,Security,Amazon Web Services,Amazon S3,我有一个S3存储桶,其中包含我想与网站用户共享的对象。我知道我可以使用类似的东西来提供对对象的安全访问,但是如果我让每个对象公开可读,但“隐藏”在包含加密强随机数的复杂密钥(即URL)后面,会怎么样?如果包含的bucket不允许列出对象,那么就没有办法猜测或发现URL,对吗?还是有我忽略的安全漏洞 旁注:我的第一个想法是在键中使用UUID,但我读到,考虑到前面的一些实例,它们显然是可以预测的。也就是说,我不知道这有多容易做到。如果它是非平凡的,我可能不会太担心使用它们而不是强随机数…问题是,一旦

我有一个S3存储桶,其中包含我想与网站用户共享的对象。我知道我可以使用类似的东西来提供对对象的安全访问,但是如果我让每个对象公开可读,但“隐藏”在包含加密强随机数的复杂密钥(即URL)后面,会怎么样?如果包含的bucket不允许列出对象,那么就没有办法猜测或发现URL,对吗?还是有我忽略的安全漏洞


旁注:我的第一个想法是在键中使用UUID,但我读到,考虑到前面的一些实例,它们显然是可以预测的。也就是说,我不知道这有多容易做到。如果它是非平凡的,我可能不会太担心使用它们而不是强随机数…

问题是,一旦共享的URL落入另一个用户手中(比如通过共享)。如果您确保URL被充分保密,那么这种方法也可以(假设您通过https将URL返回给用户,而该用户不共享该URL)

这里的任何漏洞都会导致安全漏洞,基于查询字符串的签名方案在这里非常有用,因为签名会在固定时间后过期,因此任何重新共享都不会对您造成伤害


您可以使用UUID(如果新UUID发生冲突,请重新生成另一个UUID,以确保它们不会重复)。它们可能与任何其他8个字母的密码一样难以猜到(或更难猜到)。

实现所需操作的标准方法是为要共享的每个对象生成。如果你用很短的生命周期制作它们,那么它们就不能在该时间段之外共享。所有服务器都支持此功能