整体架构
etcd 鉴权体系架构由控制面和数据面组成;
控制面(鉴权配置)
通过客户端工具 etcdctl 和鉴权 API 动态调整认证、鉴权规则,当 AuthServer 收到调整请求后,为了确保各节点间鉴权元数据一致性,会通过 Raft 模块进行数据同步;
当对应的 Raft 日志条目被集群半数以上节点确认后,Apply 模块通过鉴权存储 (AuthStore) 模块,执行日志条目的内容,将规则存储到 boltdb 的系列“鉴权表”里面;
数据面(鉴权执行)
数据面鉴权流程,由 Authentication(认证)和 Authorization(授权)流程组成。
Authentication(认证)
用户认证:
1)其目的是检查 client 的身份是否合法、防止匿名用户访问等。
2)当前 etcd 实现两种认证机制:Pwd Authn;Cert Authn;
Authorization(授权)
用户授权:
1)当通过认证后,在访问 MVCC 模块前,还需要通过授权流程,其目的是检查 Client 是否有权限操作你请求的数据路径。
2)etcd 实现 RBAC 机制,支持为每个用户分配一个角色,为每个角色授予最小化的权限;
参考文献
极客时间 /etcd 实战课(唐聪,腾讯云资深工程师,etcd 活跃贡献者)
《etcd 工作笔记:架构分析、优化与最佳实践》
etcd/Documentation versions