微服务 - 安全实施

时间:2017-06-12 15:28:51

标签: java spring-boot microservices api-gateway

在微服务部署中处理微服务级别或api-gateway级别的安全性是否更好?是否存在比另一方更贴切的情况?

2 个答案:

答案 0 :(得分:2)

来自this文章:

  

使用API​​网关的一个主要好处是它封装了应用程序的内部结构。客户端只需与网关通信,而不必调用特定服务。

这只是意味着客户端通过API网关与微服务进行通信,并且该网关处理任何底层服务的所有请求。

因此,我认为如果您需要对请求进行任何授权,那么在API网关本身进行此操作是有益的,因为这样,未经授权的请求永远不会到达您的服务。

但这也不是一个完整的解决方案。让我们考虑一个实际验证用户身份的服务。此服务将始终由尚未获得授权的用户访问,因此,在服务级别而不是API网关实现此服务的安全性是有意义的。

另外,考虑一下创建订单的服务。如果任何内部服务可以调用此服务并创建订单,而不需要任何令牌(或任何其他身份验证过程),该怎么办?现在可以使用以下方法解决这个问题:

  • 对内部服务的限制性网络访问,例如除API网关之外的其他服务不能访问此服务。
  • 将安全令牌(如JWT)添加/代理到所有服务,并在每个服务中验证针对该令牌的请求。

当然这是一个高级别的概述,是我的想法,我愿意看到其他人的意见。

答案 1 :(得分:1)

我说它是使用某种反向代理作为安全网关的常用方式,它会生成某种安全令牌,例如SAML。

否则,例如,如果您有一些链式调用,例如微服务用户调用微服务事务日志,则每个微服务都会一次又一次地为自己执行身份验证。这可能会非常昂贵。