根据AWS的文档,为了以编程方式或通过CLI访问AWS资源,您可以在AWS控制台中生成一个访问键,如下所示:
访问密钥ID: AKIAIOSFODNN7EXAMPLE秘密访问密钥: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
医生说:
您的密钥将不再通过AWS管理控制台可用;您将拥有唯一的副本。
由于AWS不存储秘密访问密钥,我想知道如何在内部生成(访问密钥id,秘密访问密钥),以及如何安全地对API/CLI访问进行身份验证。
我认为AWS可以:
但我并不是一个安全专家,我想知道如何在AWS的生产中做到这一点。谢谢。
发布于 2016-12-20 21:27:30
从文档0中,我们看到您向AWS证明您知道使用HMAC的秘密访问密钥,而不是使用数字签名。这意味着在验证身份验证时,AWS必须能够为您的访问密钥ID生成确切的秘密访问密钥。
因此,他们承诺不再向您展示秘密访问密钥是策略问题,而不是底层技术的真相。如果是公钥密码体制,而秘密访问密钥是与公钥相对应的访问密钥ID,并且只存储公钥,则它们将真正无法重新生成和显示私钥。但是,这将要求客户端生成一个私钥签名来验证请求,这比HMAC慢且可移植性差。
我没有这方面的证据,但我相信秘密访问密钥是使用HMAC从访问密钥ID生成的,使用的密钥只对Amazon可用。在没有亚马逊( Amazon )注意到的情况下盗取该密钥,你就可以伪造任何人的秘密访问密钥,只需提供他们的访问密钥ID。如果AWS密钥被窃取,AWS将不得不使所有密钥失效,导致大量的全球停机时间,而每个人都会在AWS控制台上生成新的密钥并重新部署。我不知道他们采取了什么保护措施使这不可能,但我认为密钥不能驻留在单个HSM的每个可用性区域,因为它是需要处理每一个非公开的请求。
或者,秘密访问密钥可能是随机的,并且存储在AWS身份验证和授权系统中的访问密钥ID旁边,该密钥被复制到每个可用性区域。这就意味着,要想造成灾难,就需要有人将一大块数据,而不是一个秘密密钥,从中提取出来。
1- https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html#RESTAuthenticationExamples
https://security.stackexchange.com/questions/145478
复制相似问题