2017-07-17 48 views
1

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

+0

你的微服务和它所涉及的所有数据库应该在防火墙后面。我不会只依赖Spring Security。 – duffymo

+0

那么最后唯一不在防火墙后面的是api网关吗?感谢您的回答 –

+0

我会有一个可以验证和重定向的网关。 – duffymo

回答

0

假设你是无法解决这个问题,基础设施 (这是解决这个问题的唯一正确途径), 有几个(坏)技术,您可以使用:

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

可能有其他的选择,但随着基础设施去。

0

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

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

这是一个article如何与亚马逊云做到这一点。

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