我在谷歌云上部署了容器化服务。该应用程序由几个微服务和一个api网关组成。由于谷歌云运行提供了公共端点,我所有的微服务都是公共的。我只想让api网关公开,其余的服务应该只能通过网关作为反向代理访问。如何将微服务隐藏在公众视线之外?来自api网关以外任何地方的请求都应该被拒绝。
您可以在微服务前添加一个API网关,并激活微服务上的安全。
只有网关才会被授权访问你的微服务,所有其他请求,即使端点是公共的,也会被谷歌前端丢弃(我的意思是,这是一个谷歌层,你不需要为此付出任何代价(。
作为API网关,例如,您可以使用云端点。我写了一篇关于这方面的文章,用一个简单的API密钥访问安全的后端。在你的情况下,你可以停用API密钥安全,你将有一个公共API网关,只有网关才能访问私人服务
编辑
在您的案例中,您不需要API密钥。只需删除安全定义(在文件末尾(,不要将security:
定义放在后端定义中(或全局(。
然后
- 在公共云运行上部署云端点。此URL是公共的,任何人都可以访问它,无需API密钥
- 以私有模式(IAP背后的AppEngine(部署后端服务(云运行、云功能(。这一次,只有经过身份验证和授权的帐户才能访问此服务
- 授予云端点服务帐户以访问后端服务(云功能的云功能调用程序、云运行的云运行调用程序、AppEngine的IAP web安全访问(
最后,只有云端点服务帐户被授权访问您的后端。