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
相关推荐
饼瑶5 分钟前
Isaac Sim 5.0.0 Docker 部署手册(实验室服务器)
服务器·docker·容器
wb18917 分钟前
docker-ce容器技术重习
运维·笔记·docker·容器·云计算
刘某的Cloud30 分钟前
svc中外部流量访问限制
linux·运维·docker·kubernetes·service
阿沁QWQ41 分钟前
Docker镜像制作实战
运维·docker·容器
浮尘笔记1 小时前
Docker中安装Kafka以及基本配置和用法、踩坑记录
后端·docker·容器·kafka·php
键盘鼓手苏苏1 小时前
Kubernetes与边缘AI最佳实践
云原生·kubernetes·k8
成为你的宁宁1 小时前
【docker镜像加速器配置】
运维·docker·容器
风向决定发型丶1 小时前
K8S中Pod驱逐介绍
docker·容器·kubernetes
海鸥812 小时前
Kubernetes 集群中缺少 kagent.dev/v1alpha2
云原生·容器·kubernetes
qq_396153452 小时前
docker ddns-go 忘记密码
docker·容器·golang