首页 > 解决方案 > GCP/Stackdriver:正常运行时间检查经过身份验证的 API

问题描述

所以我正在开发一个由其他后端服务使用的后端服务。消费者在调用我们的 API 之前需要获取一个身份验证令牌。现在,我想定期向虚拟产品(在实时、已部署的实例上)发出请求,以观察一切是否正常。

通过正常运行时间检查可以做到这一点吗?似乎它们仅支持基本身份验证,您无法在执行之前执行实际代码(检索令牌或生成随机请求标识符)。对?

我看到有通过代码https://cloud.google.com/monitoring/uptime-checks/#node.js创建正常运行时间检查的选项,但由于await client.createUptimeCheckConfig(request)使用静态配置(请求对象),我猜你不能在那里注入函数?

我可以使用 GCP 中的任何其他工具来满足我的需要,还是需要部署中间人服务(或功能)来转发正常运行时间检查?

标签: google-cloud-platformmonitoringstackdrivergoogle-cloud-stackdriver

解决方案


正常运行时间检查确实允许您提供自定义标头(https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.uptimeCheckConfigs#HttpCheck),因此如果您有硬编码的令牌,您可以使用它能够通过标头传递给您的 API。

如果这不是一个选项,您可以使用执行您需要的自定义逻辑的路由启动一个网络服务器实例。然后,设置正常运行时间检查以根据需要 ping 您的网络服务器。如果您需要在您的网络服务器上增加安全性,您有几个选择:

  1. 通过设置 HTTP 基本身份验证来限制对 Web 服务器的访问。正常运行时间支持基本身份验证,因此您只需提供服务器所需的值。
  2. 限制您的服务器仅接受来自 Google 用于正常运行时间检查的 IP 地址的连接 ( https://cloud.google.com/monitoring/uptime-checks/using-uptime-checks#get-ips )。请注意,这些是动态的,需要一些自动化过程来保持列表最新。

推荐阅读