![c9502b3b64c690298612ab327aba2cf0.png](https://img-blog.csdnimg.cn/img_convert/c9502b3b64c690298612ab327aba2cf0.png)
写这篇文章的动机是,我发现网上对k8s用户安全机制分析的文章几乎都落入对一般人很不友好的两个类别:要么集中介绍k8s使用的某些具体安全协议细节,要么集中介绍k8s中某个安全机制的概念。看了一圈下来总有些只见树木不见森林的感觉。所以,我这篇文章主要是从整体上介绍k8s的安全机制是如何实现的,特别是“信任的链条”是如何传递的。
在一个系统中的安全系统究竟需要完成什么目标?一句话说就是:控制“谁”可以对“什么”做“哪些操作”。其实这句话还隐藏了一个前提,就是安全系统需要能够识别确认一个尝试/正在和系统交互的用户是“谁”。接下的文章就从这个前提入手,介绍k8s的安全模型。
在接下来的阅读前,读者至少需要了解:
- k8s的整体master-worker框架和其中apiServer和etcd的地位和作用(文章1,文章2)。
- k8s中namespace,secret等API资源的概念(文章)
- 非对称加密的应用场景,比如CA证书
1. 发出请求的是谁?
首先需要确定k8s含有哪些身份模型,好比工厂的安保人员对于一个要求开门的请求方可能有如下分类:人类,动物,无人驾驶汽车,对于不同的模型自然有不同的流程去验证。k8s集群中的身份只有两种:用户(User)和服务账号ÿ