K8s认证授权

API-Server:本质是Web服务,使用HTTPS协议,

用户

user Account:普通用户;私钥 ->CA ->

ServiceAccount:让Pod和ApiServer通信使用的用户

角色与授权

角色:

①Role:局部的角色,只对某个命名空间内生效;

②ClusterRole:全局的角色,所有命名空间生效;

权限:

①只读:查询权限

get(查询单个资源)、list(列出资源清单)、watch(实时监听资源变化);

②只写:修改创建权限

create(创建)、update(更新)、patch(部分更新);

③删除权限:

delete(删除单个资源)、deletecollection(删除资源集合,如所有Pod);

资源:

限定权限仅作用于"特定名称的资源",比如只允许修改名为"prod-app"的Deployment,相当于"说明书的附加条件"。

用户与角色绑定

RoleBinding:局部绑定

分配Role权限给命名空间内部用户;

让ClusterRole的权限仅在单个命名空间生效;

ClusterRoleBinding:给用户\用户组分配集群级权限(运维管理原)

案例

客户端证书认证(推荐)

客户端证书认证是Kubernetes中最安全、最常用的方式(类似HTTPS双向认证)。流程为:生成用户证书 → 用集群CA签名 → 配置用户通过证书访问API Server。

步骤1:生成用户私钥和证书签名请求(CSR)

使用openssl工具生成用户私钥和CSR(证书签名请求),需指定用户名(CN)和所属组(O,可选)。

复制代码
示例:创建一个名为dev-user、所属组为dev-group的用户

# 生成私钥(dev-user.key)

openssl genrsa -out dev-user.key 2048

# 生成CSR(dev-user.csr),CN为用户名,O为组(可多个,用逗号分隔)

openssl req -new -key dev-user.key -out dev-user.csr -subj "/CN=dev-user/O=dev-group"
步骤2:用集群CA签名证书

Kubernetes集群的CA证书和私钥默认存储在/etc/kubernetes/pki/(kubeadm部署),需用CA签名用户的CSR,生成可被API Server信任的证书。

复制代码
# 用CA签名CSR,生成用户证书(dev-user.crt),有效期365天

openssl x509 -req -in dev-user.csr \
   -CA /etc/kubernetes/pki/ca.crt \
   -CAkey /etc/kubernetes/pki/ca.key \
   -CAcreateserial \
   -out dev-user.crt \
   -days 365
步骤3:配置kubeconfig文件

用户通过kubeconfig文件管理集群、用户、认证信息。需将生成的证书配置到kubeconfig中。

复制代码
# 1. 设置集群信息(指向API Server,信任CA)
kubectl config set-cluster kubernetes \
  --server=https://192.168.146.10:6443 \
  --certificate-authority=/etc/kubernetes/pki/ca.crt \
  --embed-certs=true


# 2. 设置用户信息(关联证书和私钥)
kubectl config set-credentials dev-user \
  --client-certificate=./dev-user.crt \
  --client-key=./dev-user.key \
  --embed-certs=true

# 3. 设置上下文(绑定集群和用户)
kubectl config set-context dev-user-context \
  --cluster=kubernetes \
  --user=dev-user

# 4. 切换到该上下文
kubectl config use-context dev-user-context
相关推荐
AI攻城狮30 分钟前
对AI泡沫的地狱式批判,你认可吗?
云原生
皮皮冰燃2 小时前
docker-18-WSL中安装docker并部署flask服务
docker·容器·flask
面汤放盐4 小时前
从单体架构到微服务架构:模式与最佳实践
微服务·云原生·架构
木雷坞8 小时前
K8s GPU 推理服务 ImagePullBackOff 排查与预热
云原生·容器·kubernetes·gpu算力
吴爃9 小时前
Spring Boot 项目在 K8S 中的打包、部署与运维发布实践
运维·spring boot·kubernetes
人工智能培训10 小时前
工程科研中的AI应用:结构力学分析技巧
人工智能·深度学习·机器学习·docker·容器
子木HAPPY阳VIP11 小时前
信创UOS,Docker 完整操作部署(Dockerfile部署方式)&排错整合
linux·运维·redis·nginx·docker·容器·tomcat
The Straggling Crow11 小时前
Monitoring 2026-04-30
kubernetes
AOwhisky11 小时前
Kubernetes调度与服务暴露:从“定时任务”到“服务发现”的完全指南
linux·运维·云原生·容器·kubernetes·服务发现
Cyber4K12 小时前
【Kubernetes专项】温故而知新,重温技术原理(6)
云原生·容器·kubernetes