Amazon AWS Access密钥的安全性如何?

AyK*_*rsi 25 amazon-s3 amazon-web-services

我想向我的s3桶提供预付费网址,并提供有效期限..net sdk很好地生成了这些网址,但看着它们让我有点担心:

https://s3.amazonaws.com/upload_youtipit/myfile?AWSAccessKeyId=**MYACCESSKEY**&Expires=1317924047&response-content-disposition=attachment;filename=feedback.jpg&response-content-type=image/jpeg&Signature=podKJSrNeFel6%2B0aOneb342H5GA%3D
Run Code Online (Sandbox Code Playgroud)

为什么需要将我的(公共)AWSAccessKey放入Url?这不应该保密吗?我知道这不是秘密,但我仍然觉得在公开场合露出它感觉不舒服.

有多少人拥有我的公钥,可以猜测/暴力破解我的私钥?

Eri*_*ond 32

访问密钥ID不是秘密,不需要保护.

实际上,如果您希望它们访问S3对象,您可以将随机URL提供给随机的陌生人.他们可以看到该URL中的访问密钥,但无法对您未授权的任何内容执行任何操作.

参考:http://docs.amazonwebservices.com/AWSSecurityCredentials/1.0/AboutAWSCredentials.html#AccessKeys

  • 有足够的真实安全问题需要担心,而不需要编写新的安全问题. (11认同)
  • 不,公共访问密钥ID使攻击者在确定秘密访问密钥方面没有明显的优势,除非我认为,攻击者已经拥有一个有效的秘密访问密钥列表,并且只是想知道他们使用哪些访问密钥ID. (6认同)
  • 花费精力保护您的秘密访问密钥.隐藏您的非秘密访问密钥ID只会减少您可以使用的AWS功能. (3认同)

Tom*_*sen 10

我同意接受的答案,但有一种简单的方法可以做你想要的.

您需要使用Amazon IAM来创建只能读取文件的用户(这并不重要,但它们至少需要只读取您正在处理的存储桶).然后使用THAT用户AWS ID和secret生成下载链接.

这并没有打开你的整个桶,因为看到这个人需要这个IAM'读者'用户的AWSID的整个桶,加上他们的密钥.您仍然需要构建时间限制的URL.

您可以使用IAM控制台在几分钟内创建这样的用户.您只有一次机会获得密钥 - 在您创建用户时(或者如果您旋转其密钥).

应该这样做.此AWSID无权访问任何内容,并且未与您链接.

通常,亚马逊现在建议您的主要AWSID不用于"任何事情".您在IAM中创建具有权限的用户,然后使用这些代码.这允许很多安全灵活性.您可以在IAM控制台中通过简单操作关闭只读用户.