Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 Amazon AWS访问密钥的安全性如何?_Amazon S3_Amazon Web Services - Fatal编程技术网

Amazon s3 Amazon AWS访问密钥的安全性如何?

Amazon s3 Amazon AWS访问密钥的安全性如何?,amazon-s3,amazon-web-services,Amazon S3,Amazon Web Services,我想为我的s3存储桶提供一个带有到期日期的预签名URL。 .net sdk很好地生成了这些URL,但查看它们让我有点担心: https://s3.amazonaws.com/upload_youtipit/myfile?AWSAccessKeyId=**MYACCESSKEY**&Expires=1317924047&response-content-disposition=attachment;filename=feedback.jpg&response-content

我想为我的s3存储桶提供一个带有到期日期的预签名URL。 .net sdk很好地生成了这些URL,但查看它们让我有点担心:

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
为什么需要将我的(公共)AWSAccessKey放入Url?这件事不应该保密一点吗?我知道这不是秘密,但我还是不愿意把它公开


拥有我的公钥的人猜测/强制使用我的私钥的可能性有多大

您的私钥是一些未知参数的单向计算,它甚至可能不使用公钥本身作为算法的一部分。知道您的AWSAccessKeyId应该不会影响强制使用私钥的复杂性

https确保人们能够知道的关于您的连接的唯一信息(如果他们正在嗅探网络流量)是它位于您的IP和端口443上s3.amazonaws.com的IP之间。甚至你连接到亚马逊的事实也必须从分配给他们的已知ip地址范围中推断出来(这可能是众所周知的)

在地址栏中获取AWSAccessKeyId的唯一方法是在屏幕上看到它,在计算机上安装一些密钥记录器或特洛伊木马,或者MIM(中间人)amazon的SSL证书,即使有人可以访问所需的上游网络节点,这也非常困难


leon

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

事实上,如果您想让陌生人访问S3对象,您可以将过期URL提供给他们。他们可以在该URL中看到访问密钥,但不能对其执行任何您未授权的操作


参考资料:

我有点同意公认的答案,但有一种简单的方法可以满足你的需求

您需要使用AmazonIAM创建一个只能读取文件的用户(这并不重要,但他们至少需要只读取您正在处理的bucket)。然后使用该用户的AWS ID和secret生成下载链接

这不会打开整个存储桶,因为要查看整个存储桶,此人需要此IAM“reader”用户的AWSID以及他们的密钥。您仍然需要构造有时间限制的URL

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

应该这样做。此AWSID无法访问任何内容,并且未链接到您


一般来说,Amazon现在建议您的主AWSID不用于“任何事情”。您可以在IAM中创建具有权限的用户,然后使用这些代码。这允许有很大的安全灵活性。您可以在IAM控制台中通过简单的操作关闭只读用户

如果您担心更高的安全性,可以使用AWS
安全令牌服务(AWS STS)

临时安全凭据的工作原理与IAM用户可以使用的长期访问密钥凭据几乎相同,但有以下区别:

  • 顾名思义,临时安全凭据是短期的。它们可以配置为在任何地方持续几分钟到几个小时。凭据过期后,AWS将不再识别它们,也不允许通过使用它们发出的API请求进行任何类型的访问

  • 临时安全凭据不会与用户一起存储,而是动态生成并在用户请求时提供给用户。当临时安全凭据过期(甚至在过期之前)时,用户可以请求新凭据,只要请求凭据的用户仍有权限这样做


  • Ref:

    嗅探时,完整的url是否包含可见的参数?当我使用Fiddler时,这是我对嗅探工具的理解,我看到了完整的url。我不确定你是否在使用Fiddler的HTTPS解密函数(),它执行我在本地描述的MIM(并要求你忽略证书警告)。这在您自己的机器之外是不可能的。我刚刚用FF测试了fiddler并进行了搜索,结果什么都没有出现。使用时只显示HTTP协议。谢谢。尽管如此,我觉得分享它并不舒服。如果有人拥有公共部分,他会发现私人部分上升了很多。有了这些钥匙,他就可以访问我的整个aws环境。只是因为我想共享一些文件..不,公共访问密钥ID在确定秘密访问密钥时不会给攻击者带来任何明显的优势,除非,我想,攻击者已经有一个有效的秘密访问密钥列表,并且只是想知道它们与哪些访问密钥ID一起使用。请尽全力保护您的秘密访问密钥。隐藏您的非机密访问密钥ID只会减少您可以使用的AWS功能。在不创建新的安全问题的情况下,有足够多的真正的安全问题需要担心。等等,但是访问密钥不允许他们访问S3中我们不一定要公开的其他内容吗@埃里克哈蒙德