Kubernetes 认证和鉴权
1.简介
Kubernetes 作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。API Server 是集群内部各个组件通信的中介,也是外部控制的入口。所以 Kubernetes 的安全机制基本就是围绕保护 API Server 来设计的。Kubernetes 使用了认证(Authentication)、鉴权(Authorization)、准入控制(Admission Control)三步来保证 API Server 的安全。

普通账号是针对(人)用户的,服务账户是针对 Pod 进程的。Pod的创建、销毁是动态的,所以手动生成证书的方案就不可行。Pod中的容器访问API Server可以使用了 Service Account 解决 Pod 访问 API Server 的认证问题。

2. RBAC 授权模式
RBAC 引入了 4 个新的顶级资源对象:Role、ClusterRole、RoleBinding、ClusterRoleBinding,4 种对象类型均可以通过 kubectl 与 API 操作。

3. Role 和 ClusterRole
在 RBAC API 中,Role 表示一组规则权限,权限只会增加(累加权权限),不存在一个资源一开始就有很多权限而通过 RBAC 对其进行减少的操作;Role 可以定义在一个 namespace 中,如果想要跨 namespace 则可以创建 ClusterRole。ClusterRole 具有与 Role 相同的权限角色控制能力,不同的是 ClusterRole 是集群级别的,ClusterRole 可以用于:集群级别的资源控制(例如 node 访问权限)和非资源型 endpoints(例如 /healthz 访问)。


4. RoleBinding 和 ClusterRoleBinding
RoleBinding 可以将角色中定义的权限授予用户或用户组,RoleBinding 包含一组权限列表(subjects),权限列表中包含有不同形式的待授予权限资源类型(users, groups, or service accounts);RoleBinding 同样包含对被 Bind 的 Role 引用;RoleBinding 适用于某个命名空间内授权,而 ClusterRoleBinding 适用于集群范围内的授权。


5. Pod / Deployment 中使用 ServiceAccount
5.1 资源定义





5.2 kubectl 验证权限


5.3 Pod 内调用 API Server 验证权限



5.4 关闭 token 在容器中的挂载




- 点赞
- 收藏
- 关注作者
评论(0)