GCP / Stackdriver:正常运行时间检查经过身份验证的API

问题描述

因此,我正在研究一个由其他后端服务使用的后端服务。消费者需要先获取身份验证令牌,然后才能调用我们的API。现在,我想定期请求虚拟产品(在活动的,已部署的实例上)以观察一切是否正常。

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

我看到可以通过代码https://cloud.google.com/monitoring/uptime-checks/#node.js创建正常运行时间检查,但是由于await client.createUptimeCheckConfig(request)使用静态配置(请求对象),我想您无法在其中注入函数

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

解决方法

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

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

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