使用 Amazon Web Services 保守秘密密钥
Posted
技术标签:
【中文标题】使用 Amazon Web Services 保守秘密密钥【英文标题】:Keeping a secret key secret with Amazon Web Services 【发布时间】:2011-01-15 11:05:09 【问题描述】:我在我的个人项目中尝试使用亚马逊网络服务。我已经获取了他们的适用于 .NET 的 AWS 开发工具包,并且正在使用它,但我有点困惑。
通过私钥/公钥对授权访问 Web 服务(在本例中为 SimpleDB,尽管我认为这对问题并不重要)。
用于创建客户端对象的 AWS SDK for .NET API 需要私钥:
AWSClientFactory.CreateAmazonSimpleDBClient(publicKey, privateKey);
这是一个客户端应用程序,因此代码将完全在客户端上运行。
建议客户端需要访问我的私钥才能访问 SimpleDB。但亚马逊一再强调,我的私钥不能脱离我的控制。
这对我来说没有意义,所以我想我一定错过了一些东西。
对于亚马逊网络服务来说,客户端应用程序是否是错误的模型,用于使用他们的适用于 .NET 的 AWS 开发工具包,或者我是否遗漏了一些使客户端应用程序完全合理的东西?有没有一种很好的方法来解决这个问题,而无需创建我自己的代理服务来验证客户端并将他们的请求转发到 SimpleDB?
【问题讨论】:
【参考方案1】:您无需实现位于远程 (AWS) 服务前面的代理。只需实现一个简单、小型、经过身份验证的服务,该服务会向客户端返回 在联系 AWS 时要使用的 URL 和标头。您经过身份验证的 Web 服务会保留 AWS 机密,并且仅将签名的请求 URL 和标头提供给客户端,然后使用返回的信息进行实际的工作调用。
这样,您可以避免在 AWS 调用期间必须通过您自己的服务器的开销、节省延迟、带宽、服务器上的绑定套接字、故障处理的复杂性等。您只需预先进行轻量级的点击即可客户得到正确的指示。
【讨论】:
感谢您的回答。我主要在桌面环境中工作,因此我从未想到过验证和提供签名的 url 和 headers 的可能性。 如果你走这条路,还可以使用.NET API吗? 我自己的问题的答案是“否” - 您必须修改代码以远程调用 AWSSDKUtils.HMACSign。以上是关于使用 Amazon Web Services 保守秘密密钥的主要内容,如果未能解决你的问题,请参考以下文章
使用 Amazon Web Services 自动安排 Scrapy Crawler
text 如何使用Apache,PHP,MySQL设置Amazon Web Services EC2实例
Amazon Web Services 中的 API 重试逻辑