【问题标题】:Microservices - Security Implementation微服务 - 安全实施
【发布时间】:2017-11-14 03:41:57
【问题描述】:

在微服务部署中,是在微服务级别还是在 api 网关级别处理安全性更好?是否存在一种比另一种更合适的情况?

【问题讨论】:

    标签: java spring-boot microservices api-gateway


    【解决方案1】:

    来自this文章:

    使用 API 网关的一个主要好处是它封装了应用程序的内部结构。客户端无需调用特定服务,只需与网关对话即可。

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

    所以,我认为如果您需要对请求进行任何授权,最好在 API 网关本身进行,因为这样,未经授权的请求永远不会到达您的服务。

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

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

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

    当然这是一个高层次的概述,是我的想法,我愿意看看其他人有什么要说的。

    【讨论】:

    • 谢谢舒巴姆!这个很有用
    【解决方案2】:

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

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

    【讨论】:

    • 谢谢 Dudelilama
    猜你喜欢
    • 1970-01-01
    • 2020-06-16
    • 2016-04-18
    • 2020-05-30
    • 2016-10-18
    • 2017-09-25
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    相关资源
    最近更新 更多