在私人谷歌访问环境中为我们限制谷歌地图API密钥



我有一个应用程序在GCP上的VM中运行,没有外部IP地址。该应用程序在VPC内;谷歌私人访问";允许应用程序使用谷歌地图API,而无需公共互联网访问。

我已经创建了一个API密钥,它可以访问地理编码API,并且在没有IP限制的情况下工作。然而,当我尝试将密钥限制为VM的CIDR(172.16.0.0/24(时,我从谷歌返回了一个错误,如下所示:

# curl "https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=${GOOGLE_MAPS_API_KEY}"
{
"error_message" : "This IP, site or mobile application is not authorized to use this API key. Request received from IP address fda3:e722:ac3:10:4a:dc74:ac10:5, with empty referer",
"results" : [],
"status" : "REQUEST_DENIED"
}

我不确定这个IP是从哪里来的,我想它是谷歌用来将请求保持在GCP内而不是通过互联网发出的基础设施的一部分。但我不清楚哪些值可以安全地限制密钥的使用。

您似乎正在云环境上进行Geocoding API web请求。根据API密钥最佳实践,用于web服务的API密钥仅支持IP地址限制。然而,IP限制可能不切实际,例如在依赖dynamicIP地址的移动应用程序和云环境中。在这些场景中使用地图Web服务API时,您可以使用以下一种或多种技术来保护您的应用程序:

  • 代理服务器
  • 混淆
  • 钉扎

虽然我不是虚拟机方面的专家,但也有可能虚拟机实际上有一个静态IP,这就是您在响应中看到的(fda3:e722:ac3:10:4a:dc74:ac10:5(。确认这一点的一种方法是使用该IP地址限制您的API密钥,并查看它是否在重新启动虚拟机后仍然有效。

此外,我注意到你提到你可以使用地图API服务,而无需公共互联网访问。因此,可能有一些下载正在进行中。当涉及到这一点时,请注意3.2.3下的服务条款(a.禁止报废(。

相关内容

最新更新