https://kubernetes.io/zh/docs/concepts/security/controlling-access/
https://kubernetes.io/zh/docs/reference/access-authn-authz/
用户合法认证-----> 鉴权(如:rbac, node) ---------> 准入控制。
合法性,确认用户:
(--requestheader-client-ca-file AND --requestheader-allowed-names) OR --client-ca-file OR --service-account-key-file OR --token-auth-file OR --enable-bootstrap-token-auth
有多个认证方式:
--requestheader-client-ca-file AND --requestheader-allowed-names
--client-ca-file
--service-account-key-file
--token-auth-file
--enable-bootstrap-token-auth
--enable-bootstrap-token-auth 这个认证有点特殊,因为这个只是用来在kubelet引导初始化过程中apiserver对他的一种认证方式,正式工作以后就不能使用这个认证了。一般用于kubelet第一次引导过程中请求签署证书用的。
权限验证:
确认用户是否有资源的操作权
rbac现在很常用,用来给用户授权, 给客户端授权。
node专用于kubelet的,可以授权kubelet可以读取node上的pod信息,如从apiserver获取本节点的新增,删除, 修改pod的操作。
rbac, node, webhook, ABAC
准入控制
对进来的请求做一些后续的操作。
这个请求是否可以执行, 有没有超出限额, 给请求自动作调整等,有各种各样的 准入控制 插件负责。
比如: node 授权kubelet 可以修改pod和node以及状态信息,启用NodeRestriction访问控制以后,kubelet就只能修改本节点和本节点pod的信息和状态。