Spring starter security or spring cloud security 如何保护整个微服务架构?

Posted

技术标签:

【中文标题】Spring starter security or spring cloud security 如何保护整个微服务架构?【英文标题】:Spring starter security or spring cloud security How to secure an entire microservice architecture? 【发布时间】:2020-11-06 07:47:51 【问题描述】:

目前正在接受开发人员培训,我正在春季开展一个个人项目。我 6 个月前开始使用 java,所以有一个我还没有掌握的概念。我的教练根本不懂弹簧,所以他帮不了我。 我也是法国人,关于 spring 的可靠文档很少(它正在迅速发展)。 例如,我学习了一篇关于微服务的法语教程,并在春季维护它们时使用了功能区和 zuul 代理。我重新开始(新项目)在响应式 webflux 中重新编码

我有几个关于 spring starter security 或 spring cloud security

Spring 云配置(与 gitlab 相关) 尤里卡服务器 管理服务器 网关 2 个业务微服务 2 个子模块(模型和存储库)

我希望我的所有微服务和内部微服务(eureka、管理服务器、配置服务器)现在都是安全的。但我不知道怎么做。

我希望咨询 config-server 的微服务能够识别自己,并且我还希望微服务网关识别自己以向其他微服务发出请求。最后,我希望我的所有微服务都受到保护。

我们应该把 spring-starter-security 放在微服务中吗?我们是否应该使用 spring-cloug-security 创建一个新的微服务? 我们是否应该创建一个新的 spring-cloud-security 微服务并到处添加 spring-start-security ?

https://cloud.spring.io/spring-cloud-security/2.2.x/reference/html/显然我觉得这个链接不是很解释

谢谢

【问题讨论】:

我相信这更像是一个堆栈交换的问题 【参考方案1】:

在我工作过的微服务架构中,我们一直使用 OAUTH2 规范来保护服务。

OAuth2 是一个基于令牌的安全框架,允许用户通过第三方身份验证服务器对自己进行身份验证。如果用户成功通过身份验证,他们将获得一个令牌,该令牌必须随每个请求一起发送。然后可以将令牌验证回 OAuth2 服务器。 OAuth2 服务器是应用程序和正在使用的服务之间的中介。 OAuth2 服务器允许用户进行身份验证,而无需将其用户凭据传递给应用程序将代表用户调用的每个服务。

OAuth2 的详细信息可以在以下LINK 中找到。

我已经实现了简单的微服务架构来演示服务如何相互连接。

这里是链接LINK

下面是代表架构的图像:

【讨论】:

谢谢,我静静的看着,有问题再找你,不胜感激 我有时间就看,因为我现在正在学习哈希,'salt and pepper'(我不知道用英语怎么说)但是,如果我想识别的话保护微服务配置服务器,和员工和部门的原理一样吗?您是如何制定计划的? 在本例中,我们部署了微服务,我们应该限制所有入站端口流量,以便只有端口 5555 对公众开放。工资单应用的服务只能通过 Zuul Gateway Server 访问。所有的服务器,包括你的配置服务器,都不会被外界公开访问。 er ... 5555 端口是否在服务器级别受到限制?还是微服务网关?你有例子吗? 在我部署微服务的示例中,当我放置所有服务 jars(配置服务器、尤里卡服务器、网关服务器、OAuth2 服务器、员工和部门服务)后,我创建了一个 Linux 虚拟机.另外,我已经安装了 Kafka、Redis、ELK 和 Zipkin。然后我关闭了网关服务器的5555端口以外的所有端口的入站访问。因此用户无法访问配置信息,因为端口被阻塞。在现实生活中,您会将这些应用程序 docker 化并部署在 amazon ECS 中。

以上是关于Spring starter security or spring cloud security 如何保护整个微服务架构?的主要内容,如果未能解决你的问题,请参考以下文章

在简单的 Maven 项目中找不到依赖 spring-boot-starter-security

Spring starter security or spring cloud security 如何保护整个微服务架构?

grails 3 spring security boot starter登录页面定制

将 spring-boot-starter-security 添加到 Spring Boot 应用程序会导致错误 'entityManagerFactory' 或 'persistenceUnitNa

如何为 Webflux、Spring-Security、okta-spring-boot-starter 和 Okta-React 正确使用 CORS?

spring boot starter security 不在日志中生成默认密码