微服务之间的安全

Security between microservices

我有两个微服务,例如,A 和 B。微服务 B 的其余端点必须只能从微服务 A 访问。 如何限制微服务之间的访问?如果可能的话,最佳做法是什么?

我正在使用 spring 云安全(oauth2、jwt)。

有另一个微服务,它不是对业务问题负责,而是对非功能性业务问题负责:安全性。

这个微服务是合乎逻辑的(因为所有微服务在逻辑上都应该对一个业务问题负责)并且不是单独部署的,而是与其他微服务一起部署的。然后在接受任何调用或执行调用之前,构建一个适当的 API,微服务 A 和 B 都知道并且必须执行。

在其他微服务应该属于某些业务相关边界(有界上下文,如果你愿意的话)的情况下,安全微服务在非功能需求的边界内。您可以称其为 IT/Ops 或 Devops 或其他名称。

这是网络问题。只需在网络级别限制对微服务 B 的访问。例如,如果使用 Docker,这可以很容易地完成。您不会公开公开微服务 B 的相关端口,而是将其公开在特定网络上,然后让微服务加入该网络。

如果您想增加额外的安全性,可以使用 public/private 密钥。或者,为应用程序 A 生成 JWT 并在微服务 B 中对其进行验证会更简单,但是随着您添加更多的微服务,这会带来更多的管理开销。

或者,您应该查看可以为您处理 API 访问的 API 网关