RBAC角色访问控制
RBAC角色访问控制
- user(用户)
- ServiceAccount(服务账户)
- 创建ServiceAccount(服务账户)
- 删除ServiceAccount(服务账户)
- role(角色--管理指定资源的用户)
- 创建role(角色)
- 创建RoleBinding(绑定角色)
- 删除RoleBinding
- ClusterRole(集群角色)
- 创建ClusterRole(集群角色)
- 创建clusterrolebinding(绑定集群角色)
- 删除clusterrolebinding
- 查看RBAC权限常用命令
- 测试服务账户权限
- CKA考试RBAC授权题
参考: https://www.toutiao.com/i6942467217019666952/?wid=1643459986078
user(用户)
user不能直接创建
ServiceAccount(服务账户)
参考: https://kubernetes.io/zh/docs/reference/access-authn-authz/authentication/#service-account-tokens
ServiceAccount
用的Secret类型
是kubernetes.io/service-account-token
ServiceAccount
创建完成,其对应的Secret
信息由kube-controller-manager
更新
ServiceAccount
可以简写为sa
|--- Role --- RoleBinding #只在指定namespace中生效
ServiceAccount ---||--- ClusterRole --- ClusterRoleBinding #不受namespace限制,在整个K8s集群中生效
创建ServiceAccount(服务账户)
参考: https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/#一些命令行工具
https://blog.csdn.net/wangmiaoyan/article/details/102551390
https://www.cnblogs.com/zhaobowen/p/13562487.html#一生成账号
# 在命名空间app-team1中创建服务账户cicd-token
kubectl create sa cicd-token -n app-team1# 查看服务账户是否创建
kubectl get sa cicd-token -n app-team1 # 查看服务账户详情
kubectl describe sa cicd-token -n app-team1
删除ServiceAccount(服务账户)
# 查看命名空间app-team1下的所有用户
kubectl get sa -n app-team1 # 命名空间app-team1下的cicd-token用户
kubectl delete sa cicd-token -n app-team1
role(角色–管理指定资源的用户)
对哪个指定的资源(作用域是命名空间)执行哪些权限,不能添加拒绝权限;
创建role作用域只限于这个指定的资源对象.
例如:
- 创建的服务账户只能操作指定的namespace
- 创建的服务账户只能操作指定的pod
- 创建的服务账户只能操作指定的deployment
- 等等----可以精准的授权
创建role(角色)
参考: https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/#kubectl-create-role
# 创建名称为 "pod-reader" 的 Role 对象,允许用户对 Pods 执行 get、watch 和 list 操作
kubectl create role pod-reader --verb=get --verb=list --verb=watch --resource=pods
创建RoleBinding(绑定角色)
https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/#rolebinding-and-clusterrolebinding
将服务账户绑定到role(角色)
(要指定命名空间),让服务账户拥有role(角色)
的权限。
也将服务账户绑定到clusterrole
,(权限作用域只限于服务账户的命名空间),一般用来配置命名空间管理员权限
;
角色绑定(Role Binding)是将角色中定义的权限赋予一个或者一组用户。一个 RoleBinding 可以引用同一的名字空间中的任何 Role。
# 将集群角色绑定到服务账户
## {binding_NAME}=用户名-集群角色名-binding
kubectl create rolebinding {binding_NAME} -- clusterrole={集群角色名} --serviceaccount={命名空间名}:{用户名} -n {命名空间名}# 在命名空间app-team1中,将ClusterRole(集群角色)deployment-clusterrole绑定到服务账户cicd-token
kubectl create rolebinding cicd-token-deployment-clusterrole-binding -- clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token -n app-team1
删除RoleBinding
# 查看命名空间app-team1下有哪些rolebinding
kubectl get rolebinding -n app-team1# 删除命名空间app-team1下名为cicd-token-deployment-clusterrole-binding的rolebinding
kubectl delete rolebinding cicd-token-deployment-clusterrole-binding -n app-team1
ClusterRole(集群角色)
ClusterRole的作用域是个整个集群下.
例如:
- 创建的服务账户只能查看该集群的信息
- 创建的服务账户可以修改该集群的信息
- 等等----可以非常精准的授权
创建ClusterRole(集群角色)
ClusterRole 有若干用法。你可以用它来:
- 定义对某命名空间域对象的访问权限,并将在各个命名空间内完成授权;
- 为命名空间作用域的对象设置访问权限,并跨所有命名空间执行授权;
- 为集群作用域的资源定义访问权限。
# 创建ClusterRole(集群角色)deployment-clusterrole,权限限定为:只允许创建deployments,daemonsets,statefulsets
kubectl create clusterrole deployment-clusterrole --verb=create --
resource=deployments,daemonsets,statefulsets
创建clusterrolebinding(绑定集群角色)
# 将服务账户绑定到集群角色
### {clusterrolebinding_NAME}=服务账户名-集群角色名-binding
kubectl create clusterrolebinding {binding_NAME} --clusterrole=集群角色名--serviceaccount=kube-system:用户名# 将服务账户tiller绑定到集群管理员cluster-admin角色
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
删除clusterrolebinding
# 查看集群中有哪些clusterrolebinding
kubectl get clusterrolebinding |grep {clusterrolebinding_NAME}# 删除指定clusterrolebinding
kubectl delete clusterrolebinding {clusterrolebinding_NAME}
查看RBAC权限常用命令
参考: https://kubernetes.io/zh/docs/reference/kubectl/overview/#%E8%B5%84%E6%BA%90%E7%B1%BB%E5%9E%8B
# 查看服务账户
kubectl get sa 用户名# 查看服务账户详情
kubectl describe sa 用户名# 查看集群角色
kubectl get ClusterRole 集群角色名# 查看集群角色详情
kubectl describe ClusterRole 集群角色名# 查看role
kubectl get role 角色名# 查看role详情
kubectl describe role 角色名# 查看rolebindings
kubectl get rolebinding 绑定名# 查看rolebindings详情
kubectl describe rolebinding 绑定名# 删除rolebindings
kubectl delete rolebinding 绑定名
测试服务账户权限
# 测试服务账户权限
kubectl --as=system:serviceaccount:app-team1:cicd-token get pods -n app-team1
CKA考试RBAC授权题
# 切换到名为k8s的集群
kubectl config use-context k8s# 创建ClusterRole(集群角色)deployment-clusterrole,权限限定为:只允许创建deployments,daemonsets,statefulsets
kubectl create clusterrole deployment-clusterrole --verb=create -- resource=deployments,statefulsets,daemonsets# 在命名空间app-team1中创建服务账户cicd-token
kubectl create serviceaccount cicd-token -n app-team1# 在命名空间app-team1中,将ClusterRole(集群角色)deployment-clusterrole绑定到服务账户cicd-token
kubectl create rolebinding cicd-token-deployment-clusterrole-binding -- clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token -n app-team1
## 将集群角色绑定到服务账户
## {binding_NAME}=用户名-集群角色名-binding
kubectl create rolebinding {binding_NAME} -- clusterrole={集群角色名} --serviceaccount={命名空间名}:{用户名} -n {命名空间名}# 测试服务账户权限
kubectl --as=system:serviceaccount:app-team1:cicd-token get pods -n app-team1# 查看服务账户详情
kubectl describe sa cicd-token -n app-team1 # 查看集群角色详情
kubectl describe clusterrole deployment-clusterrole# 查看服务账户绑定成功,验证rolebinding资源
kubectl describe rolebinding cicd-token-deployment-clusterrole-binding -n app-team1
RBAC角色访问控制相关推荐
- ABP 详解系列9:基于ABP框架实现RBAC(角色访问控制)
基于ABP框架实现RBAC(角色访问控制) 本文详细讲解了基于ABP框架实现RBAC(角色访问控制)的方法,文中通过示例代码介绍的非常详细.对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考 ...
- Spring Security 实战:基于配置的接口角色访问控制
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 1 ...
- 访问权限冲突定义_一文读懂F5 REST API的细粒度角色访问控制
↑ 点击上方"小咩社长"关注我 阅读提示|本文大概4718字 阅读需要12分钟 写在前面: 前两天一个保险的客户联系我说有个需求,问通过调用F5 REST API可否实现?: ...
- oracle数据库的访问控制,数据库角色访问控制
基于角色的访问控制 (Role-based access control, RBAC) 是一种安全功能,用于控制用户对通常仅限于超级用户的任务的访问.通过对进程和用户应用安全属性,RBAC 可以向多个 ...
- (附源码)ssm基于角色访问控制的文件共享系统 毕业设计161821
ssm角色访问控制的文件共享系统 摘要 近些年,一些较大的企业经常自行开发科技角色访问控制的文件共享系统,这样做有一定的好处,如成本低廉,上级单位一次开发,基层单位可以重复利用,而且一定程度上能满足个 ...
- ssm基于角色访问控制的文件共享系统毕业设计源码161821
ssm角色访问控制的文件共享系统 摘要 近些年,一些较大的企业经常自行开发科技角色访问控制的文件共享系统,这样做有一定的好处,如成本低廉,上级单位一次开发,基层单位可以重复利用,而且一定程度上能满足个 ...
- RBAC角色权限设计
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...
- 错误:在keystone中无法找到默认角色user_Kubernetes RBAC角色权限控制
摘选:https://i4t.com/4448.html 在Kubernetes中所有的API对象都保存在ETCD里,可是,对这些API对象的操作,却一定是通过访问kube-apiserver实现的. ...
- [SpringSecurity]web权限方案_用户授权_基于权限访问控制_基于角色访问控制_hasAuthority和hasAnyAuthority_hasRole和hasAnyRole
基于角色或权限进行访问控制 hasAuthority 方法 如果当前的主体具有指定的权限,则返回 true,否则返回 false 在配置类设置当前访问地址有哪些 @Overrideprotected ...
最新文章
- SQL注入——基于时间的盲注(九)
- MVC如何添加Model
- 微软笔试题(看到的写答案啊)
- vue,watch监听数据,数据监听
- 百兆以太网口通信速率_以太网 数据包速率计算方法
- Vivado定制DDR3 IP核注意事项
- 创建LEANGOO账号
- Python网络编程之socketserver实现多并发
- App列表之拖拽ListView(上)
- 系统学习深度学习(十八)--NIN模型
- 网吧web电影服务器系统,网吧电影服务器如何安装制作?
- systemd 编写微信鱼虾蟹棋牌搭建服务管理脚本
- java gc 监控_java 内存、GC、性能监控
- windows下大文件复制工具介绍
- 厨师 做菜 java_厨师做菜心得
- .net后台实现ping网关地址操作
- echarts3.0 markline 最大值 最小值 均值 方差 标准差 包络 正态分布
- ubuntu中pycharm没有启动图标
- 内网接入外网的几种方式
- 磁盘性能--IOPS和吞吐量