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,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...
随机推荐
- spock和junit测试报告
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- div可编辑 可拖动
版权声明:本文为博主原创文章,未经博主允许不得转载. 1.可编辑: <div id="move" contentEditable="true">可编 ...
- 026 Remove Duplicates from Sorted Array 从排序数组中删除重复项
给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度.不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点.示例:给定数组: nums ...
- 用boost模块加速你的drupal站
boost模块可以对 html, xml, ajax, css, javascript进行缓存,极大提升游客访问的速度,几乎可以和静态页面媲美.下载boost http://drupal.org/p ...
- maven相关说明,以及使用Testng相关
配置Apache Maven Apache Maven使用本身的配置和建立的项目位于许多地方: MAVEN_OPTS环境变量: 该变量包含用于启动运行Maven的JVM的参数,可用于向Maven提供其 ...
- Soft skill
不要害怕让别人看到自己的无知 作为高级程序员的一个好处是,当别人问一些我不懂的问题时,我可以很淡然地告诉他们: 这个东西我也不懂,因为以前没有遇到过,不过我可以看一下,然后再告诉你. 当我还是一个初级 ...
- js对secure的支持是没问题的,httponly是为限制js而产生的,当然httponly的cookie也不会被js创建
function setCookie4(c_name,value,expiredays){ var cookieStr = ""; var exdate=new Date(); e ...
- cairo-dock天气位置代码
cairo-dock天气位置代码: 城市: 北京CHXX0008哈尔滨CHXX0046长春CHXX0010沈阳CHXX0119大连CHXX0019天津CHXX0133呼和浩特CHXX0249乌鲁木齐C ...
- eclipse加上电脑全黑主题的设置(win10)
eclipse加上电脑全黑主题的设置(win10) 前几天在找设置win10的边框颜色时,发现的这个高对比的功能,现在已经用了好几天了,自己感觉是真的好用,所有才分享出来,相比所谓网上的豆沙绿,果然感 ...
- Vue.js(2.x)之计算属性
昨天看完大神的文章后,深感惭愧,硬着头皮继续看官网文档,然而这真的没是没办法,介绍的实在有些敷衍: 1).计算属性:也不说下computed是计算属性关键词,vm实例是可以像代理data一样代理com ...