gpt4 book ai didi

security - 安全服务是微服务架构中的单点故障吗?

转载 作者:行者123 更新时间:2023-12-04 21:08:04 24 4
gpt4 key购买 nike

我正在开发具有微服务架构的应用程序。每个微服务都可以为自己而存在,与系统中的其他微服务没有直接的依赖关系。在每个微服务中,我们都使用 CQRS 和事件源来通知服务中的状态变化。如果其他服务感兴趣并且也能够更新他们的数据,则会将这些事件通知给其他服务。

到目前为止,该系统运行良好。如果一个微服务关闭,其他微服务仍在工作。在被中断的服务再次启动后,它会接收在它不在时发生的所有事件,并将根据这些事件更新自己的状态。

现在我们需要保护我们的服务,我们为此使用 IdentityServer。我们还有一项服务,我们的安全服务,它将被其他微服务调用以获取 token 。这是微服务第一次必须直接与另一个微服务对话。

我对这种方法的问题是,如果安全服务器停机,整个系统就会停机。

我正在考虑以下解决方案:

每个微服务都应该将用户数据保存在自己的数据库中。如果用户访问微服务,则无需远程调用安全服务即可在服务内部对用户进行身份验证。我仍然应该有一个仅用于管理用户的安全服务。对用户的更改将再次引发事件,其他微服务可以更新其用户数据。当然,一切都带有 https。也许为了减少安全性的冗余代码,我可以使用 nuget 包。

你认为这是一个合理的方法吗?

谢谢你的建议

最佳答案

您的解决方案会带来用户数据可供攻击者使用的风险,攻击者会破坏任何微服务,而不是某一特定安全服务。我认为这是一个重大差异和风险,您可能不想接受。

请注意,虽然使用类似于 OAuth2/OpenID Connect 的 SSO 解决方案,但不需要每个微服务(SSO 中的服务提供者,SP)为每个请求连接到安全服务(身份提供者,IP)。一旦客户端(作为微服务消费者的客户端)从 IP 获得 token ,就可以在独立于 IP 的 SP 上验证 token (例如通过公钥加密)。这意味着如果 IP 关闭,将不会发布新的访问 token ,但已发布的访问 token 将继续工作,并且微服务不一定直接相互通信,仅通过其消费者进行通信。

关于security - 安全服务是微服务架构中的单点故障吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41027449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com