我们有一个与客户分享的套餐。在包中,我们有一大块代码可以对我们的中央API网关进行HTTP请求调用。截至目前,我们的API网关是开放的,接受来自世界各地的请求,这是不好的。我想限制访问将使用我们软件的用户。我发现的唯一解决方案是使用IAM并提供授权,要求我们在包中包含我们的访问密钥。我们的用户可以在他们想要的任何环境中安装我们的软件包,我们无法控制该环境。所以我认为一个可行的选择是创建一个通用的用户策略,其访问权限最小,允许我们的用户调用我们的API网关。但是,将访问密钥放在代码中并不是一个好主意。另一个选择是为我们的客户提供访问密钥,但也有开销。什么是更安全,更易于维护的更好的替代方案?
答案 0 :(得分:1)
当IAM政策不可行时,您可以使用内置API网关API密钥功能。
只要您的客户可以使用任何基础架构,而不限于AWS,API网关服务就会提供通用API密钥解决方案,允许您通过强制客户端请求包括API密钥来限制客户端流量到API网关。此API密钥界面是他们的" API Usage Plan"的一部分。特征
This document解释了如何使用控制台设置API网关来强制客户端流量带有API密钥:
要设置API密钥,请执行以下操作:
配置API方法以要求API密钥。
为区域中的API创建或导入API密钥。
您的客户可以实施"秘密存储"解决方案,以避免将其API密钥放入其源代码中。
对于您的客户来说,确保将API密钥纯文本存储在其源代码中是不明智的。相反,他们可以使用秘密存储解决方案,将API密钥存储在其代码库之外,但仍然可以让他们的应用程序访问该秘密。
本文介绍了一种用于安全秘密存储(例如,安全API密钥存储)的示例解决方案,该解决方案授予应用程序对应用程序秘密的访问权限,而无需将未加密的秘密放入源代码中。它使用Amazon KMS + Cryptex,但同样的原则可以应用于其他技术:http://technologyadvice.github.io/lock-up-your-customer-accounts-give-away-the-key/