概述
单体应用发展成微服务架构带来了诸多便利,业务迭代更加敏捷,扩展性更好,同时为服务架构也带了新的安全考虑,如:
- 微服务之间通信安全问题,如何防止中间人攻击。
- 微服务之间的访问控制问题,对于敏感服务和信息,如何限制微服务之间的访问。
- 微服务之间访问频繁且关系复杂,如何追溯服务之间的调用情况,需要具备审计能力。
服务网格的安全机制提供了零信任的安全机制,很好地解决了以上问题。
服务网格安全架构
服务身份及证书管理
身份是安全的基础,只有给每个服务赋予一个身份才能在服务相互访问时对各方的身份进行认证以及对操作进行鉴权。服务网格使用证书作为网格内工作负载的身份标识,服务网格负载网格内工作负载的身份证书颁发、轮换等,为网格安全提供基础能力。
身份认证
服务网格提供两种认证机制:
对等身份认证:用于sidecar代理之间通信时的身份认证,解决sidecar之间身份认证和通信加密问题,支持基于工作负载证书的mTLS双向认证。
请求身份认证:用于外部请求进入网格内的身份认证,支持JWT及OIDC的认证方式。
授权
在微服务通信中,确定了双方的身份之后,我们还需要对客户端是否有权限访问服务端的资源进行权限检查。当前服务网格支持全局、命名空间和工作负载级别的授权策略控制,同时支持集成外部授权服务能力。