【身份与访问控制工程】服务身份:mTLS、SPIFFE/SPIRE 与 Workload Identity
💡
原文中文,约26000字,阅读约需62分钟。
📝
内容提要
在微服务系统中,服务间调用普遍存在,传统身份验证方法面临安全和管理挑战。本文探讨了服务身份的重要性,介绍了mTLS的应用及其在Kubernetes中的实现,强调了SPIFFE和SPIRE的角色,以及云厂商的工作负载身份解决方案。这些技术使服务能够获得短期、可验证的身份,从而确保安全的服务间通信。
🎯
关键要点
- 微服务系统中,服务间调用普遍存在,传统身份验证方法面临安全和管理挑战。
- 服务身份需要独立于人的机器身份体系,解决长期在线、非交互式、规模巨大等问题。
- mTLS是服务身份最成熟的载体,能够实现双向认证和通道加密。
- SPIFFE规范和SPIRE实现为每个工作负载提供可验证的身份,支持Kubernetes和混合云环境。
- 云厂商的工作负载身份解决方案(如AWS IRSA、GCP Workload Identity、Azure Workload Identity)通过OIDC将K8s ServiceAccount映射到云厂商的IAM角色。
- Istio和Linkerd通过mTLS实现服务间的安全通信,自动管理证书的下发与轮换。
- 在Kubernetes中部署mTLS的常见组合包括cert-manager与内部CA、Let’s Encrypt、Istio/Linkerd等。
- SPIRE架构包括Server、Agent和Workload API,负责管理信任域和工作负载身份的签发。
- 云厂商的工作负载身份方案降低了运维成本,适合主要在云上运行的工作负载。
- 选择合适的身份验证方案应根据具体场景,如单云、多云、服务网格等需求进行决策。
❓
延伸问答
什么是服务身份,为什么需要独立于人的身份体系?
服务身份是指在微服务系统中,服务之间的身份认证机制,独立于人的身份体系是为了应对长期在线、非交互式和大规模的服务调用需求。
mTLS在微服务中的作用是什么?
mTLS(双向TLS)在微服务中用于实现服务间的双向认证和通道加密,确保安全的服务间通信。
SPIFFE和SPIRE的主要功能是什么?
SPIFFE定义了一套跨平台的工作负载身份规范,而SPIRE是其参考实现,负责为每个工作负载提供可验证的身份。
云厂商的工作负载身份解决方案如何工作?
云厂商的工作负载身份解决方案通过OIDC将Kubernetes ServiceAccount映射到云厂商的IAM角色,实现临时身份凭证的获取。
在Kubernetes中如何部署mTLS?
在Kubernetes中部署mTLS的常见组合包括cert-manager与内部CA、Let’s Encrypt、Istio或Linkerd等,自动管理证书的下发与轮换。
选择身份验证方案时应考虑哪些因素?
选择身份验证方案时应根据具体场景,如单云、多云、服务网格等需求进行决策,以确保满足安全和管理要求。
➡️