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
相关推荐
罗小爬EX3 小时前
Helm 从概念到实战:以一个普通 Web 应用为例
云原生·helm
java_logo3 小时前
Docker 部署 DeepSeek Harness(moelin):轻松搭建带登录的本地 AI Agent 平台
运维·docker·容器·ai agent·deepseek·harness·轩辕镜像
xbzb4 小时前
容器 IP 每次重建都变?docker network 五种模式与自定义网桥固定地址
网络·docker·容器·ip·network·固定
打工仔折腾 AI9 小时前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化
fengkai45459 小时前
Prometheus+K8s弹性伸缩综合项目
运维·kubernetes·k8s·prometheus·hpa·vpa
分布式存储与RustFS11 小时前
镜像仓库的层别只堆本地盘:用 RustFS 给 Harbor 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
分布式存储与RustFS13 小时前
工作流脚本和依赖 JAR 散在各节点本地盘:用 DolphinScheduler 资源中心接到 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
Eyfcom14 小时前
〖物流云原生实战 01〗K8s Operator 在物流定时任务中的实践:从“裸 CronJob”到“声明式任务编排”
云原生·物流管理系统·物流云原生实战
阿里云云原生1 天前
阿里云智能体白皮书开源进展
云原生
阿里云云原生1 天前
万联智策基于 AgentCore 构建数字员工团队,800+智能体规模化落地
云原生