k8s基于RBAC的访问控制(用户授权)
kubernetes的API Server常用的授权插件有:
Node、ABAC、RBAC、Webhook
我们重点说一下RBAC的访问控制逻辑
RBAC(Role base access control)基于角色的访问控制
涉及到的资源类型:
Role #角色,基于名称空间下的资源
RoleBinding #角色绑定,基于名称空间下的资源
ClusterRole #集群角色,基于集群级别下的资源
ClusterRoleBinding #集群角色绑定,基于集群级别下的资源
其中,Role和Role是针对于名称空间级别,授予其所在名称空间范围内的许可权限。
而ClusterRole和ClusterRoleBinding是针对于集群级别,授予其所在集群范围内的许可权限。
原理如图:
1.将user1通过rolebinding绑定到role,则该用户将拥有role定义的权限,但操作范围只能是role所在的名称空间。
2.将user2通过clusterrolebinding绑定到clusterrole,则该用户拥有clusterrole定义的权限,操作范围是clusterrole所在集群。
3.将user3通过rolebinding绑定到clusterrole,则该用户拥有clusterrole定义的权限,但操作范围只能是rolebinding所在名称空间。
使用k8s资源配置清单的书写格式(yaml文件)的便捷方法,快速获取资源清单的基本框架:
创建角色:kubectl ceate role ROLE_NAME --verb=ACTION --resource=KIND --dry-run -o yaml >role-damo.yaml
创建角色绑定:kubectl create rolebinding ROLEBINDING_NAME --role=ROLE_NAME --user=USER_NAME --dry-run -o yaml > rolebinding.yaml
创建集群角色:kubectl create clusterrole CLUSTERROLE_NAME --verb=ACTION --resource=KIND --dry-run -o yaml > cluster-role.yaml
创建集群角色绑定:kubectl create clusterrolebinding CLUSTERROLEBINDING_NAEM --clusterrole=CLUSTERROLE_NAME --user=USER_NAME --dry-run -o yaml > cluster-binding.yaml
注:这些资源对象的修改会立即生效的
--verb:是动作名称如:get,list,watch等。
--resource:是资源类型如:pods,deploy,svc等;注意这里如果写入namespaces是无用的,因为role就是在namespace级别的,而namespaces选项是集群级别的。
--dry-run:运行这条命令,但不生效,常用于测试。
--role:是集群中现已存在的role资源对象。
--user:填写集群中现已存在的用户。或创建完rolebinding后创建这个用户。
--clusterrole:是集群中现已存在的clusterrole资源对象。
资源清单书写格式:
role\clusterrole(两个role写法差不多):
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: smbands-cluster-role
rules:
- apiGroups: #apigroups是包含资源的apigroup的名称。如果指定了多个API组,对其中一个将允许任何API组中的枚举资源。
- ""
resources: #写资源类型
- pods
- services
- namespaces
verbs: #写授权动作
- get
- list
- watch
- apiGroups:
- extensions
resources:
- deployments
verbs:
- get
- list
- watch
rolebinding\clusterrolebinding(两个binding写法差不多):
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: smbands-binding
roleRef:
apiGroup: rbac.authorization.k8s.io #apigroup是被引用资源的组。
kind: ClusterRole #正在引用的资源类型(role或clusterrole)。
name: smbands-cluster-role #定义role或clusterrole时定义的资源名称。
subjects:
- apiGroup: rbac.authorization.k8s.io #这个apiGroup是参考类,默认对于ServiceAccount是"",默认对于用户或组是"rbac.authorization.k8s.io"
kind: User #用户类型:User,Group,ServiceAccount.
name: smbands #用于绑定的集群中的用户名。
k8s基于RBAC的访问控制(用户授权)的更多相关文章
- k8s 基于RBAC的认证、授权介绍和实践
在K8S中,当我们试图通过API与集群资源交互时,必定经过集群资源管理对象入口kube-apiserver.显然不是随随便便来一个请求它都欢迎的,每个请求都需要经过合规检查,包括Authenticat ...
- .NET环境下基于RBAC的访问控制
.NET环境下基于RBAC的访问控制 Access Control of Application Based on RBAC model in .NET Environment 摘 要:本文从目前信息 ...
- 普通程序员看k8s基于角色的访问控制(RBAC)
一.知识准备 ● 上一节描述了k8s的账户管理,本文描述基于角色的访问控制 ● 网上RBAC的文章非常多,具体概念大神们也解释得很详细,本文没有站在高屋建瓴的角度去描述RBAC,而是站在一个普通程序员 ...
- RBAC(基于角色的访问控制)用户权限管理数据库设计
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...
- Kubernetes 基于 RBAC 的授权(十六)
目录 一.RBAC介绍 1.1.角色和集群角色 1.2.RoleBinding 和 ClusterRoleBinding 1.3.资源 1.4.主体 二.命令行工具 2.1.kubectl creat ...
- k8s之RBAC授权模式
导读 上一篇说了k8s的授权管理,这一篇就来详细看一下RBAC授权模式的使用 RBAC授权模式 基于角色的访问控制,启用此模式,需要在API Server的启动参数上添加如下配置,(k8s默然采用此授 ...
- RBAC基于角色的访问控制
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...
- RBAC(Role-Based Access Control,基于角色的访问控制)
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...
- RBAC(Role-Based Access Control)基于角色的访问控制
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...
随机推荐
- Zookeeper启动失败:java.net.BindException: Address already in use
错误日志如下: [hadoop@master zookeeper-3.4.5-cdh5.10.0]$ cat zookeeper.out 2018-05-15 01:29:21,036 [myid:] ...
- js的语法糖?
++“”里面的+“”默认被变成“0”了 前端多写了个+号导致的bug,网址后面多一个0.虽然不知道是什么原因,但是感觉是js的隐式替换
- over partition by与group by
over partition by与group by 的区别 http://www.cnblogs.com/scottpei/archive/2012/02/16/2353718.html 今天看到一 ...
- SpringMVC09 Converter变流器、数据回显、异常测试
1.配置web.xml文件 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3// ...
- Oracle同义词。。。
同义词 --私有同义词--私有同义词权限grant create synonym to scott;--创建私有同义词create synonym dp for scott.dept;--将查询dep ...
- swift第一课快速体验playground
最近听说苹果要大力推行swift语言,所以我必须要赶快好好学一学,今天做第一个就遇到问题. 在Xcode7.2欢迎界面,选中创建第一个,我们一般都是默认创建第二个. 创建完后,出现问题了,提示如下: ...
- python协程与异步协程
在前面几个博客中我们一一对应解决了消费者消费的速度跟不上生产者,浪费我们大量的时间去等待的问题,在这里,针对业务逻辑比较耗时间的问题,我们还有除了多进程之外更优的解决方式,那就是协程和异步协程.在引入 ...
- 在Magento System Configuration页面添加配置项
以 Jp_Coupon 模块为例: 目标: 在 System configuration 页面添加一个 JP tab, 在JP中添加 Coupon section, 然后给 Coupon sectio ...
- SpringBoot的优缺点
优点: 1.快速构建项目 2.对主流开发框架的无配置继承 3.项目可独立运行,无须外部依赖Servlet容器 4.提高运行时的应用监控 5.极大地提高了开发.部署效率 6.与云计算的天然集成 缺点: ...
- sudo用户权限添加问题
现象:通过visudo或者vim /etc/sudoers文件添加用户权限后,该用户测试时依然需要输入密码解决:查看/etc/passwd用户id可能重复并且重复的uid排在该用户上面