微服务之间是否应该有身份验证/授权?

时间:2017-08-10 19:51:25

标签: soa microservices

我知道这可能不是一个好问题。

我被问到一个问题:我们是否真的需要微服务之间的身份验证。我不知道答案。我确实阅读了一些关于SOA,微服务以及如何在服务之间添加身份验证的教程。但我没有太多想法为什么我们需要微服务之间的身份验证/授权?是否需要使用任何用例?任何不需要的用例?没有身份验证/授权的任何潜在风险?

欢迎任何评论。最好提供一些实际的例子。感谢

3 个答案:

答案 0 :(得分:7)

您设计和开发的微服务是否需要身份验证取决于您的功能要求和设计方式。

使用的常用技术是不对每个单独的微服务进行身份验证,而是将它们组合在一个公共fascade(例如API Manager)后面。然后,您可以在一个位置应用身份验证和其他策略 - 策略执行点/ API管理器 - 用于"外部"消费者虽然在内部",在您的共同安全边界之后,您的微服务仍然保持轻量级,并且可以在没有身份验证的情况下相互呼叫(如果这对您的用例/要求/架构等有意义等。)

总结 - 它是一个设计决策,涉及多次权衡。 显然,如果您有一个关键业务服务获取或更新敏感数据,您可能只希望授权的调用者访问它。但是,您可能不希望在您的组织中运行许多内部呼叫者(可能是其他微服务),并且信任"网络将承担不必要的政策执行。 但是,可能会出现内部呼叫者需要正确验证的情况(例如,如果它是支付服务)

答案 1 :(得分:0)

在大多数情况下,提供公共API的微服务需要身份验证/授权,因为它们对于World来说是可用/可见的。

为什么呢?因为当来自世界的某个人调用API方法时,我们(在大多数情况下)想要知道客户端是谁(执行身份验证)并决定允许客户端做什么(执行身份验证)。

另一方面,对于内部微服务(在大多数情况下),客户端是众所周知的,因为它们是其他内部微服务。因此,除非您不需要为不同的内部微服务提供不同的使用限制,否则无需授权。请注意,我假设内部组件仅在组织内可用。

答案 2 :(得分:0)

如果您认为您的组织面临内部威胁(为什么不这样?),则是的,所有微服务都需要受到保护,免受恶意使用。