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,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...
随机推荐
- ffmpeg文件生成m3u8文件及ts切片程序(一)
ffmpeg文件生成m3u8文件及ts切片程序(一) 实现目标:输入本地文件,实现m3u8切片,功能点请看注释,注意:注释很重要. 参考: http://www.cnblogs.com/mystory ...
- py---------socketserver
同时两个客户端连接, server 不能有input server端根据client端的要求去执行固定的代码 server.py #-*- coding:utf-8 -*- import time i ...
- 【ACM】组合数 - 全排列
组合数 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 找出从自然数1.2.... .n(0<n<10)中任取r(0<r<=n)个数的所有组合 ...
- 有趣的 验证JS只能输入正整数
<html> <head> <title>只能输入正整数</title> </head> <body> 兑换数量:<inp ...
- (转)IE6 死后即将大快人心的10件事
(转)未来五年程序员应当具备的十项技能 W3C CSS 2.1 Specification(Quick Table of Contents) (转)IE6 死后即将大快人心的10件事 2009-04- ...
- Windows下使用nvm管理多个Node.js 版本
下载 https://github.com/coreybutler/nvm-windows/releases 安装 配置 使用 # nvm install 版本号 # nvm list ...
- B/S模式获取客户端IP地址
using System.Web; namespace Common { public class IPUtil { /// <summary> /// 获取IP地址 /// </s ...
- 运用CSS3媒体查询判断iPhoneX、iPhoneXR、iPhoneXS MAX及横竖屏
//iphoneX.iphoneXs @media only screen and (device-width: 375px) and (device-height: 812px) and (-web ...
- 使用HTML5 canvas做地图(1)基础知识
之前一直想使用HTML5技术全新做一套地图API,可是苦于时间和精力,迟迟未有行动.后来下定决心,利用下班和周末做出一个大体框架出来,现在和网友分享一下自己的整体的一个思路和想法.欢迎大家提出宝贵建议 ...
- repair table
mysql> show create table lixl;+-------+---------------------------------------------------------- ...