【问题标题】:Securing Microservices that use Spring Cloud & Netflix's Eureka and Feign保护使用 Spring Cloud 和 Netflix 的 Eureka 和 Feign 的微服务
【发布时间】:2015-07-20 18:27:47
【问题描述】:

我正在尝试找出使用 Spring Cloud 和 Netflix 的堆栈,特别是使用 Eureka 和 Feign 来构建和实现微服务的最佳方法。我对每个问题都有一些与安全相关的问题:

  1. 我看到您可以使用用户名/密码凭据配置 Eureka Server。这可以阻止未经授权的应用程序,但是每个应用程序必须共享凭据才能访问 Eureka。有没有一种简单的方法来创建凭据注册表,以便每个微服务都可以拥有自己的? (将它挂接到 Spring Security 的堆栈中会很不错——UserDetailService 等)

  2. 一旦微服务连接起来并通过 feign 进行通信,是否可以将原始请求中使用的凭据共享/传递给对其他微服务进行的其他调用?因此,如果“Jim”在 FooService 上请求 /foos,并且 FooServiceBarServiceBarService 上请求 /bars会知道是吉姆要求他们吗?

Jim > FooService > BarService - BarService 知道正在为 Jim 处理请求...

【问题讨论】:

  • 1.可以使用 Spring Security 保护 Eureka Server。我们没有任何自动配置。保护 eureka 目前是开发人员的一项工作。 2. 就 Feign 而言,您可以连接 RequestInterceptors,它可以从您想要的任何地方提取身份验证并将其添加到后续请求中。同样,这是一个练习,我们不会自动执行任何操作。
  • @spencergibb Re 1:在服务器上保护它是有道理的,而且是直截了当的,但是我们如何让客户端知道所说的安全性呢?答案 2 是完美的 :) 谢谢
  • 这对于一般的服务来说是一个大问题。您可以在配置服务器中加密凭证,那么您如何保护呢?您可以使用证书。您可以使用网络安全。您可以将凭据放在环境变量中。我们还没有解决这个问题。
  • 对不起,应该更清楚一点:假设我们使用 Basic Auth 保护 Eureka Server,那么我们如何配置 EurekaClient 以包含 Authorization 标头?我见过像EurekaClientConfig 这样的东西,但没有处理身份验证的概念
  • 我们把用户名和密码放在eureka url http://user:pass@host:port/eureka.

标签: spring-cloud netflix-eureka netflix-feign


【解决方案1】:

大卫。你可能想看看我写的一篇关于保护 Spring Cloud 服务的文章。 Spring 团队在很大程度上将这个话题留给了开发人员,因为组织之间的安全实现差异很大。此示例在 eureka 和配置服务器上使用基本身份验证。

http://www.baeldung.com/spring-cloud-securing-services

一些小要点应该是:除了您对系统其余部分使用的任何其他类型的身份验证之外,必须在配置和发现服务器上定义身份验证。这两个服务器必须处理自己的身份验证,因为它们通常需要在身份验证服务器启动之前运行(因为它从配置服务中提取它的配置并注册到发现服务)。

服务到服务的通信是一种不同的野兽。您必须问自己的问题,就像 David 所说的那样,您是否正在使用具有 ip 安全性的服务运行,它们是否暴露在整个网络中,您的应用程序中在哪里进行身份验证。如果没有这些问题,就很难给出具体的建议。

这方面的一些一般性建议可能是:

    1234563就足够了。您甚至可以将特定 IP 地址列入白名单以始终允许。
  • 如果您正在运行这些暴露于网络的服务,您可能希望将所有流量引导回您的网关(这也应该是您的应用程序进行身份验证的地方)。如果您收到 403,那么您应该以编程方式执行登录并使用会话 ID 重试请求。如果您使用 spring-session 配置您的系统,每个服务都会自动提取该服务的身份验证详细信息。

这些只是众多可能性中的两种。我不确定您在编写这些安全配置方面有多舒服,所以如果您需要更多帮助,请将您的问题澄清到一个场景,我会尝试为您的用例编写通用解决方案。

【讨论】:

    猜你喜欢
    • 2017-07-07
    • 2018-01-01
    • 2019-03-26
    • 2020-07-05
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 2016-12-11
    相关资源
    最近更新 更多