Amazon web services 将公共api网关限制为特定IP
我有一个api网关,它将被前端javascript应用程序访问。考虑到这一点,我们不能切实地限制对api密钥的访问(我不认为?),所以我真的希望通过IP地址来限制它……但我找不到一种方法来做到这一点。这是否可能,因为它实际上不是来自服务器Amazon web services 将公共api网关限制为特定IP,amazon-web-services,amazon-s3,aws-api-gateway,Amazon Web Services,Amazon S3,Aws Api Gateway,我有一个api网关,它将被前端javascript应用程序访问。考虑到这一点,我们不能切实地限制对api密钥的访问(我不认为?),所以我真的希望通过IP地址来限制它……但我找不到一种方法来做到这一点。这是否可能,因为它实际上不是来自服务器 因此,该站点位于S3上,前面有Cloudfront。API网关接受两个键,这些键点击lambda脚本并保存到dynamodb。如果有人想这么做,他们可以用价值观把它扔掉。我只希望web应用程序能够与它对话。我仍然在学习很多AWS!我希望我可以使用盾牌或WAF,
因此,该站点位于S3上,前面有Cloudfront。API网关接受两个键,这些键点击lambda脚本并保存到dynamodb。如果有人想这么做,他们可以用价值观把它扔掉。我只希望web应用程序能够与它对话。我仍然在学习很多AWS!我希望我可以使用盾牌或WAF,但这似乎是不可能的。有什么建议吗?当然,在应用程序中硬编码任何凭据或API密钥不是一个好主意,大多数时候,您会发现一些文章解释如何使用Web联合身份提供程序通过API网关授权API调用(请参阅),但由于您使用的是CloudFront,因此还有另一种解决方法 您可以将API密钥(甚至IAM凭据)存储在S3上的单独文件中,但将其访问权限限制为特定IP地址,以便脚本可以获取密钥并进行API调用。所有其他IP地址都无法检索API密钥。因此,无法调用API方法
API key.json
。确保行为的Restrict Viewer Access设置为Yes。通过将该行为置于列表的顶部,确保该行为优先于默认行为,即优先级为0注意:如果您确定已签名的URL已安全存储,并且没有人可以访问它,则可以从自定义策略中删除IP地址要求,因为在这种情况下检查IP地址是多余的。当然,这将允许您改用固定策略。开箱即用。我喜欢。谢谢你。但是,我不确定这个或任何解决方案在这个设置中是否有效。因为应用程序是前端,所以服务器IP永远无法发送,我不认为?因为前端应用程序是静态的,客户端脚本会在本地机器上执行。因此,此上下文中的IP地址是您的IP,而不是S3/CloudFront。如果您所在的位置没有静态IP,您可以只保存已签名的URL,并配置应用程序将其作为参数接受,以便检索API密钥文件。我希望现在的做法是明确的。