k8s中RBAC使用

原文出处: 25-k8s集群中-RBAC用户角色资源权限_权限 资源 角色-优快云博客   

这里根据自己的实践做了完善笔记.


1,用户的创建流程

1,User
2,SerciceAccount
3,Group

本质上讲,在k8s系统中,用户,就是一个文件,这个文件在当前登录用户的家目录下;

这个文件config,就代表“我”是谁;

        这里面并没有角色、权限信息,角色和权限信息,在其他位置;

[root@k8s231 ~]# ll .kube/config 
-rw------- 1 root root 5634 Jan  1 19:40 .kube/config

        所以,要创建用户,就是要创建这个文件;

        那么如何创建这个文件呐?

· ssl流程介绍


        知道了ssl原理,https请求过程,我们就了解了,ssl的安全机制;

        实际上k8s当中“根证书”早就生成好了,在我们kubeadm部署的时候,就自动帮我们生成了;

        k8s是模拟ca机构,给自己颁发证书,自己验证自己,所以,整数中有私钥、公钥等;

[root@k8s231 ~]# ll /etc/kubernetes/pki/
total 56
-rw-r--r-- 1 root root 1281 Jan  1 19:39 apiserver.crt
-rw-r--r-- 1 root root 1155 Jan  1 19:39 apiserver-etcd-client.crt
-rw------- 1 root root 1679 Jan  1 19:39 apiserver-etcd-client.key
-rw------- 1 root root 1675 Jan  1 19:39 apiserver.key
-rw-r--r-- 1 root root 1164 Jan  1 19:39 apiserver-kubelet-client.crt
-rw------- 1 root root 1679 Jan  1 19:39 apiserver-kubelet-client.key
#根证书
-rw-r--r-- 1 root root 1099 Jan  1 19:39 ca.crt
#ca机构的私钥
-rw------- 1 root root 1679 Jan  1 19:39 ca.key
drwxr-xr-x 2 root root  162 Jan  1 19:39 etcd
-rw-r--r-- 1 root root 1115 Jan  1 19:39 front-proxy-ca.crt
-rw------- 1 root root 1675 Jan  1 19:39 front-proxy-ca.key
-rw-r--r-- 1 root root 1119 Jan  1 19:39 front-proxy-client.crt
-rw------- 1 root root 1679 Jan  1 19:39 front-proxy-client.key
-rw------- 1 root root 1675 Jan  1 19:39 sa.key
-rw------- 1 root root  451 Jan  1 19:39 sa.pub
1.生成用户证书

      一个用户一个证书,这个用户证书,就是用来生成,用户文件的(也就是家目录下的config)

· 生成kubeconfig用户授权文件
        有了这个授权文件,我们就拥有了一个用户了;

        但是,还没有任何权限,还无法使用;

2.创建角色和规则

        通过资源清单的方式,创建角色和规则;

        角色就是:

1,Role:局部资源角色

2,ClusterRole:全局资源角色

        规则就是:这个角色的权限;能使用什么资源、不能使用什么资源,,,,

3,角色与用户的绑定
        根据角色的不同,创建资源清单,对应不同的绑定资源清单的编写;

1,RoleBinding

2,ClusterRoleBinding

        只要角色和用户绑定完成,那么,RBAC的整个流程就结束了;

        我们就成功创建了一个带有特定权限的用户;就可以分发给“同事”进行使用了;

4,逻辑流程的总结


RBAC创建初体验

1,创建用户【user】
· 生成用户ssl证书
        以往我们使用openssl的工具命令生成证书,比较繁琐,本次学习,我给大家介绍一个证书生成工具,叫做cfssl证书生成工具;

1,上传/下载cfssl证书生成工具

或者去github地址下载:https://github.com/cloudflare/cfssl

### RBAC 的核心原理 Kubernetes 中的 RBAC(基于角色的访问控制)是一种通过角色定义权限,并将角色绑定到用户或服务账户的机制。RBAC 使用 `rbac.authorization.k8s.io` API 组来实现授权决策,允许管理员通过 Kubernetes API 动态配置策略[^2]。其核心模型由以下几个组件构成: - **Role(角色)**:定义在某个命名空间中的权限规则,例如对 Pod 的读写权限。 - **ClusterRole(集群角色)**:与 Role 类似,但作用范围是整个集群,适用于跨命名空间的资源。 - **RoleBinding(角色绑定)**:将 Role 绑定到某个用户或服务账户,使其在特定命名空间中拥有该角色的权限。 - **ClusterRoleBinding(集群角色绑定)**:将 ClusterRole 绑定到用户或服务账户,使其在整个集群范围内拥有相应权限。 这些组件共同构成了 Kubernetes 的权限控制体系,使得集群管理员可以灵活地控制不同用户或服务账户对资源的访问权限。 --- ### RBAC 的启用与配置 要启用 RBAC,需要在 kube-apiserver 启动参数中添加 `--authorization-mode=RBAC`,如果使用 kubeadm 安装的集群,1.6 版本以上默认开启了 RBAC。可以通过查看 Master 节点上 apiserver 的静态 Pod 定义文件来确认: ```bash $ cat /etc/kubernetes/manifests/kube-apiserver.yaml ... - --authorization-mode=Node,RBAC ``` 一旦启用 RBAC,就可以通过创建 Role、ClusterRole、RoleBinding 和 ClusterRoleBinding 来配置权限策略。 --- ### 角色与绑定的配置示例 以下是一个 Role 的定义示例,限制某个用户只能在特定命名空间中读取 Pod 和 Service: ```yaml apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: development name: pod-reader rules: - apiGroups: [""] resources: ["pods", "services"] verbs: ["get", "list"] ``` 接着,创建一个 RoleBinding 将该角色绑定到某个用户: ```yaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-pods namespace: development subjects: - kind: User name: developer apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: pod-reader apiGroup: rbac.authorization.k8s.io ``` 如果希望该角色在整个集群范围内生效,则应使用 ClusterRole 和 ClusterRoleBinding: ```yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: cluster-reader rules: - apiGroups: [""] resources: ["pods", "nodes", "services"] verbs: ["get", "list"] ``` 绑定 ClusterRole 到用户: ```yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: bind-cluster-reader subjects: - kind: User name: admin apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: cluster-reader apiGroup: rbac.authorization.k8s.io ``` 通过上述配置,可以实现细粒度的权限控制,增强 Kubernetes 集群的安全性和可管理性[^1]。 --- ### RBAC 的优势与应用场景 RBAC 提供了强大的权限管理能力,适用于多租户环境、多项目协作、自动化运维等多种场景。例如: - 在开发与生产环境之间设置不同的访问策略,确保开发人员无法修改生产环境的配置。 - 为 CI/CD 工具分配最小权限,仅允许其访问必要的资源,防止误操作或安全漏洞。 - 在多团队共享集群时,通过命名空间隔离和 RoleBinding 控制不同团队对资源的访问范围。 此外,RBAC 还支持聚合 ClusterRole,允许将多个角色组合成一个更高级别的权限集合,便于集中管理权限策略。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值