K8s RBAC认证 简单讲

k8s对我们整个系统的认证,授权,访问控制做了精密的设置;对于k8s集群来说,apiserver是整个集群访问控制的唯一入口,我们在k8s集群之上部署应用程序的时候,也可以通过宿主机的NodePort暴露的端口访问里面的程序

认证->授权->准入控制(admination controller)
认证(Authenticating) 是对客户端的认证,通俗点就是用户名密码验证
授权(Authorization) 是对资源的授权,k8s中的资源无非是容器,最终其实就是容器的计算,网络,存储资源,当一个请求经过认证后,需要访问某一个资源(比如创建一个pod),授权检查会根据授权规则判定该资源(比如某namespace下的pod)是否是该客户可访问的
准入(Admission Control) 机制:准入控制器(Admission Controller)位于 API Server中,在对象被持久化之前,准入控制器拦截对 API Server 的请求,一般用来做身份验证和授权
变更(Mutating) 准入控制:修改请求的对象
**验证(Validating)**准入控制:验证请求的对象

准入控制器是在 API Server 的启动参数配置的。一个准入控制器可能属于以上两者中的一种,也可能两者都属于。当请求到达 API Server 的时候首先执行变更准入控制,然后再执行验证准入控制。

**假如有6个名称空间,每个名称空间的用户都需要对自己的名称空间有管理员权限,那么需要定义6个role和rolebinding,然后依次绑定,如果名称空间更多,我们需要定义更多的role,这个是很麻烦的,所以我们引入clusterrole,定义一个clusterrole,对clusterrole授予所有权限,然后用户通过Clusterrolebinding绑定到clusterrole,就会拥有自己名称空间的管理员权限了**

进入cd /etc/kubernetes/pki

生成一个私钥 umask 077; openssl genrsa -out lucky.key 2048

生成一个证书请求 openssl req -new -key lucky.key -out lucky.csr -subj "/CN=lucky"

生成一个证书 :

openssl x509 -req -in lucky.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out lucky.crt -days 3650

在kubeconfig下新增加一个lucky这个用户

把lucky这个用户添加到kubernetes集群中,可以用来认证apiserver的连接

kubectl config set-credentials lucky --client-certificate=./lucky.crt --client-key=./lucky.key --embed-certs=true

在kubeconfig下新增加一个lucky这个账号

kubectl config set-context lucky@kubernetes --cluster=kubernetes --user=lucky

切换账号到lucky,默认没有任何权限

kubectl config use-context lucky@kubernetes

创建一个命名空间lucky,

kubectl create ns lucky

使lucky用户仅对lucky命名空间有最高权限权限

kubectl create rolebinding lucky -n lucky --clusterrole=cluster-admin --user=lucky

创建一个普通用户lucky :useradd lucky

更改密码为123 :passwd lucky

进入隐藏文件cd /root/.kube/

将文件config拷出:cp config /home/lucky/

给lucky用户下文件权限:chown lucky:lucky /home/lucky/config

进入lucky账户:su - lucky

创建隐藏目录:mkdir.kube

将文件导入:mv config .kube/

编辑文件:vim /lucky/.kube/config

删除重复内容,保留lucky权限,注意修改名称

重新进入lucky用户shell,设置默认固定进入 lucky 命名空间 :alias kubectl='kubectl -n lucky'

写入.bashrc:vim .bashrc

------------------------------以上是使lucky用户仅对lucky命名空间有最高权限权限----------------------------

创建Role角色:vim lucky-role.yml

kubectl create -f lucky-role.yml

Rolebinding:角色绑定

再按之前的重来一遍注意改命名 注意/CN=lucky01(lucky01这里写的就是Username)

相关推荐
悟天特斯1 分钟前
安防一体化:从“各管各的“到“全局联动“
java·大数据·网络·人工智能·物联网
牛马工作号6 分钟前
Copyparty 轻量文件共享:Docker Compose 部署、权限与多协议使用全指南
运维·docker·容器
70后写java的老码农10 分钟前
Spring Boot 3.x + ShardingSphere 5.x + MyBatis-Plus 3.x:订单分库分表实战(含两个踩坑记录)
java
霸道流氓气质14 分钟前
AI 翻译插件:翻译记忆级联复用、术语混合检索与结构化质量门禁的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
斯维赤20 分钟前
OCR到底是接入第三方API 还是自己封装?
java·ocr
码智社38 分钟前
Redis 哨兵模式详解:从原理到生产实践
java·redis
救救孩子把1 小时前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务
silvamux_1 小时前
微头条爆款体平台适配实测:把交付要求变成可计算的指标
java·线性代数·算法·决策树·矩阵
论文复现现场1 小时前
DeepSeek V4.1 Flash 和 V4 Pro 有什么区别?API 价格、性能与迁移建议
java·服务器·人工智能·python·大模型api·deepseek·deepseek v4.1
oioihoii1 小时前
Windows部署MySpeed自建测速服务:Docker运行后直接测速,再配置固定公网地址远程查看
运维·docker·容器