使用 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 开发人员用户权限

Amazon Web Services 中的 API 重试逻辑

Amazon Web Services 与这些 Azure Web Services 最相似的是啥

使用 Amazon Web Services WSDL 的最佳 python 肥皂堆栈是啥?