【问题标题】:How secure are Amazon AWS Access keys?Amazon AWS 访问密钥的安全性如何?
【发布时间】:2011-10-06 18:33:19
【问题描述】:

我想为我的 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 中?这不应该保密吗?我知道这不是秘密,但我仍然不愿意在公共场合暴露它..

拥有我的公钥的人猜测/暴力破解我的私钥的可能性有多大?

【问题讨论】:

    标签: amazon-s3 amazon-web-services


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。尽管如此,我对分享它感到不舒服。如果有人拥有公共部分的可能性,他可以计算出私人部分会上升很多。然后,他可以使用密钥访问我完整的 aws 环境。只是因为我想分享一些文件..
    • 不,公共访问密钥 ID 在确定秘密访问密钥方面没有给攻击者显着优势,除非我认为攻击者已经拥有有效秘密访问密钥列表并且只是想知道哪个访问他们使用的密钥 ID。
    • 努力保护您的秘密访问密钥。隐藏您的非秘密访问密钥 ID 只会减少您可以使用的 AWS 功能。
    • 有足够多真正的安全问题需要担心,而无需编造新问题。
    • 等等,但是访问密钥是否允许他们访问 S3 中我们不一定要公开的其他内容? @埃里克哈蒙德
    【解决方案2】:

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

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

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

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

    应该这样做。此 AWSID 无权访问任何内容,并且与您没有关联。

    一般而言,亚马逊现在建议您不要将主 AWSID 用于“任何用途”。您在 IAM 中创建具有权限的用户,然后使用这些代码。这提供了很大的安全灵活性。您可以通过 IAM 控制台中的简单操作关闭您的只读用户。

    【讨论】:

      【解决方案3】:

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

      https 确保有人可以告诉您的连接(如果他们正在嗅探网络流量)的唯一信息是它位于您的 IP 和端口 443 上 s3.amazonaws.com 的 IP 之间。甚至您正在连接的事实amazon 必须从分配给它们的已知 IP 地址范围中推断出来(无论如何这可能是众所周知的)

      在地址栏中获取您的 AWSAccessKeyId 的唯一方法是在您的屏幕上实际看到它,在您的计算机或 MIM(中间人)亚马逊的 SSL 证书上安装一些键盘记录器或木马,即即使有人可以访问所需的上游网络节点,也非常困难。

      里昂

      【讨论】:

      • 在嗅探时不包含完整的 url 参数吗?当我使用 Fiddler 时,这是我对嗅探工具的理解,我看到了完整的 url..
      • 我不确定您是否使用了 fiddler 的 HTTPS 解密函数 (fiddler2.com/fiddler/help/httpsdecryption.asp),它执行我在本地描述的 MIM(并要求您忽略证书警告)。这在您自己的机器之外是不可能的。我刚刚用 FF 测试了提琴手并搜索了encrypted.google.com,没有任何结果。使用时仅显示 HTTP 协议。
      【解决方案4】:

      如果您担心更高的安全性,可以使用 AWS Security Token Service (AWS STS)。

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

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

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

      参考:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html

      【讨论】:

        猜你喜欢
        • 2020-04-30
        • 1970-01-01
        • 2020-04-10
        • 1970-01-01
        • 2016-10-06
        • 1970-01-01
        • 1970-01-01
        • 2012-08-06
        • 2015-11-26
        相关资源
        最近更新 更多