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
相关推荐
小马同学-6 小时前
K8s 控制器详解 — Deployment、ReplicaSet、DaemonSet 与 Job
云原生·容器·kubernetes
阿里云云原生8 小时前
深度解析 Jev 模型:如何快速做结构化决策
云原生
刘婉晴10 小时前
【K8S安全】4. 节点到云
安全·容器·kubernetes
阿里云云原生11 小时前
AI 中台的构建和智能体调优实践
云原生·agent
做运维的阿瑞12 小时前
Terraform 模块版本管理:约束语法、源类型与升级策略
云原生·云计算·terraform
时间售卖铺12 小时前
MySQL 表的约束
运维·数据库·mysql·云原生
做运维的阿瑞12 小时前
Terraform 模块组合:VPC、安全组、EC2 的输出传递与依赖编排
云原生·云计算·terraform
孔令飞13 小时前
【OneX】OneX AI 工具安装、配置及功能介绍
云原生·go·ai编程
lisanmengmeng13 小时前
监控Kubernetes集群的GPU资源(三)
linux·容器·kubernetes