Spring - 使微服务只能在内部访问

时间:2017-07-17 14:00:20

标签: spring spring-security microservices

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

2 个答案:

答案 0 :(得分:0)

这实际上是一个基础设施问题。通常,您希望在内部拥有包含所有资源的专用网络 - 所谓的De-Militarized-Zone或DMZ - 然后拥有提供外部访问的第二个网络或端点桥。不应该从互联网上访问内部网络。端点可以是单个服务器,也可以是作为bastion主机实现的服务器阵列,它将对呼叫者进行身份验证和授权,并将呼叫转发给合法的专用网络。

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

以下是如何使用亚马逊云的article

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

答案 1 :(得分:0)

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

  1. IP地址白名单 - 创建良好IP地址列表,拒绝来自列表中不存在的地址的任何请求。
  2. IP地址区 - 白名单的变化。创建部分IP地址列表,并拒绝任何与其中一个部分地址不匹配的请求。
  3. 仅限非路由IP - IP地址区域的变化。仅接受来自非路由IP地址的请求(这些请求只能在您的本地网络上)。这是Wiki page of non-routing IP addresses
  4. 魔术令牌。仅接受包含特定令牌的请求。这特别糟糕,因为有人可以观察你的流量并发现令牌。
  5. 可能还有其他选择,但请使用基础设施。