【问题标题】:Spring - Make microservice only accessible internallySpring - 使微服务只能在内部访问
【发布时间】:2017-12-22 02:43:55
【问题描述】:

如何设置只能由其他内部服务调用的微服务。微服务不应该公开访问,因为它可以访问包含秘密信息的数据库。我已经尝试使用 Spring Security 来保护微服务,但在这种情况下,我遇到了 FeignClient 有关授权的问题。

【问题讨论】:

  • 您的微服务和它与之通信的所有数据库都应该位于防火墙后面。我不会只依赖 Spring Security。
  • 那么最后唯一不在防火墙后面的将是 api 网关?感谢您的回答
  • 我会有一个可以进行身份​​验证和重定向的网关。

标签: spring spring-security microservices


【解决方案1】:

这确实是一个基础架构问题。通常,您希望在内部拥有一个包含所有资源的专用网络 - 所谓的 De-Militarized-Zone 或 DMZ - 然后拥有提供外部访问的第二个网络或端点网桥。不应从 Internet 访问内部网络。端点可以是单个服务器或一组服务器,它们被实现为bastion 主机,将对调用者进行身份验证和授权,并将调用转发到合法的专用网络。

API 网关(或边缘服务器)模式通常用于实现这一点。良好的网关配置很重要。

这里是article,介绍如何使用 Amazon 云。

这里是 link 给 Kong,这是一个您可以自己部署的通用 API 网关。

【讨论】:

    【解决方案2】:

    假设您无法通过基础架构解决此问题 (这是解决此问题的唯一正确方法), 您可以使用几种(不好的)技术:

    1. IP 地址白名单 - 创建良好 IP 地址列表,拒绝来自不在列表中的地址的任何请求。
    2. IP 地址区域 - 白名单的变体。创建部分 IP 地址列表并拒绝与部分地址之一不匹配的任何请求。
    3. 仅非路由 IP - IP 地址区域的变化。仅接受来自非路由 IP 地址的请求(这些只能在您的本地网络上)。这是Wiki page of non-routing IP addresses
    4. 魔法令牌。仅接受包含特定令牌的请求。这尤其可怕,因为有人可以监视您的流量并发现令牌。

    可能还有其他选择,但请选择基础设施。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-20
      • 2021-01-27
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多