微服务安全实践
在微服务架构中,一组细粒度微服务通过相互交互以构建应用或实现业务功能。每个细粒度的服务是实现单个功能或通过网络访问实现几个相关功能。这导致被攻击机会增加,尤其显得微服务架构的安全性非常重要。
保护微服务安全的一些常见技术
1)边界安全
执行边界安全是保护微服务的一种非常传统的方法。 这意味着单个微服务不安全;访问微服务的层必须是受信任的。对Web应用程序的访问是安全的,并且Web应用程序自由地调用微服务层。各个微服务彼此自由交互。有一些与微服务相关的特性和要求使得边际的安全性不足。
1.由于各种原因,应在每个服务执行认证或授权。
2.每个细粒度的服务是一个小团队的责任。 这可能意味着保证数据的安全性也是他们的责任。
2)用户身份认证(用户名和密码)
在微服务体系架构中,微服务应用是由多个相互独立的微服务进程组成的,对每个微服务的访问都需要进行用户认证。
微服务应用应遵循单一职责原理,即一个微服务只处理单一的业务逻辑。认证和鉴权的公共逻辑不应该放到微服务实现中。因此需要考虑一个抽象、公共的逻辑对用户进行身份认证和鉴权服务。由于在微服务架构中以API
Gateway作为对外提供服务的入口,因此可以考虑在API Gateway处提供统一的用户认证。具体就技术实现采用Zuul+Spring
Security+OAuth2/JWT。
3)双向SSL。
4)OAuth 2.0和OpenID Connect。
OAuth 2.0是一个应用之间彼此访问数据的开源授权协议,所以OAuth不是一个API或者服务,而是一个验证授权(Authorization)的开放标准,所有人都有基于这个标准实现自己的OAuth。
5)自包含的JWT令牌。