我有一个api网关,将由前端javascript应用程序访问。考虑到这一点,我们不能切实限制访问api密钥(我不认为?),所以我真的想通过IP地址来限制它...但我找不到办法做到这一点。这是否可能,因为它实际上并非来自服务器?
因此,该网站托管在具有前端Cloudfront的S3上。 API网关接受几个键,然后命中lambda脚本并保存到dynamodb。如果有人想要,他们可能只是通过价值观垃圾邮件。我只希望网络应用能够与它交谈。我还在学习很多AWS!我希望我可以使用Shield或WAF,但似乎不行。有什么建议吗?
答案 0 :(得分:3)
当然,在您的应用中对任何凭据或API密钥进行硬编码并不是一个好主意,大多数情况下,您会找到解释如何使用Web联合身份提供程序授权API调用的文章通过API网关(请参阅Setting Credentials in a Web Browser),但由于您使用的是CloudFront,因此还有另一种解决方法。
您可以将您的API密钥(甚至IAM凭据)存储在S3上的单独文件中,但限制其对特定IP地址的访问权限,以便您的脚本可以获取密钥并进行API调用。所有其他IP地址都无法检索API密钥。因此,无法调用API方法。
api-key.json
。确保行为的限制查看者访问权限设置为是。 确保此行为优先于默认行为,方法是将其置于列表的顶部,即优先级为0 。注意:如果您确定您的签名网址已安全存储且没有人可以访问它,您可以从自定义策略中删除IP地址要求,因为检查这种情况下的IP地址。当然,这将允许您使用预制策略。