Kubernetes 认证和鉴权

举报
剑指南天 发表于 2026/10/17 20:25:46 2026/10/17
【摘要】 Pod中的容器访问API Server可以使用了 Service Account 解决 Pod 访问 API Server 的认证问题。

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 在容器中的挂载

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。