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角色访问控制相关推荐

  1. ABP 详解系列9:基于ABP框架实现RBAC(角色访问控制)

    基于ABP框架实现RBAC(角色访问控制) 本文详细讲解了基于ABP框架实现RBAC(角色访问控制)的方法,文中通过示例代码介绍的非常详细.对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考 ...

  2. Spring Security 实战:基于配置的接口角色访问控制

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 1 ...

  3. 访问权限冲突定义_一文读懂F5 REST API的细粒度角色访问控制

    ↑ 点击上方"小咩社长"关注我 阅读提示|本文大概4718字   阅读需要12分钟 写在前面: 前两天一个保险的客户联系我说有个需求,问通过调用F5 REST API可否实现?: ...

  4. oracle数据库的访问控制,数据库角色访问控制

    基于角色的访问控制 (Role-based access control, RBAC) 是一种安全功能,用于控制用户对通常仅限于超级用户的任务的访问.通过对进程和用户应用安全属性,RBAC 可以向多个 ...

  5. (附源码)ssm基于角色访问控制的文件共享系统 毕业设计161821

    ssm角色访问控制的文件共享系统 摘要 近些年,一些较大的企业经常自行开发科技角色访问控制的文件共享系统,这样做有一定的好处,如成本低廉,上级单位一次开发,基层单位可以重复利用,而且一定程度上能满足个 ...

  6. ssm基于角色访问控制的文件共享系统毕业设计源码161821

    ssm角色访问控制的文件共享系统 摘要 近些年,一些较大的企业经常自行开发科技角色访问控制的文件共享系统,这样做有一定的好处,如成本低廉,上级单位一次开发,基层单位可以重复利用,而且一定程度上能满足个 ...

  7. RBAC角色权限设计

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...

  8. 错误:在keystone中无法找到默认角色user_Kubernetes RBAC角色权限控制

    摘选:https://i4t.com/4448.html 在Kubernetes中所有的API对象都保存在ETCD里,可是,对这些API对象的操作,却一定是通过访问kube-apiserver实现的. ...

  9. [SpringSecurity]web权限方案_用户授权_基于权限访问控制_基于角色访问控制_hasAuthority和hasAnyAuthority_hasRole和hasAnyRole

    基于角色或权限进行访问控制 hasAuthority 方法 如果当前的主体具有指定的权限,则返回 true,否则返回 false 在配置类设置当前访问地址有哪些 @Overrideprotected ...

最新文章

  1. SQL注入——基于时间的盲注(九)
  2. MVC如何添加Model
  3. 微软笔试题(看到的写答案啊)
  4. vue,watch监听数据,数据监听
  5. 百兆以太网口通信速率_以太网 数据包速率计算方法
  6. Vivado定制DDR3 IP核注意事项
  7. 创建LEANGOO账号
  8. Python网络编程之socketserver实现多并发
  9. App列表之拖拽ListView(上)
  10. 系统学习深度学习(十八)--NIN模型
  11. 网吧web电影服务器系统,网吧电影服务器如何安装制作?
  12. systemd 编写微信鱼虾蟹棋牌搭建服务管理脚本
  13. java gc 监控_java 内存、GC、性能监控
  14. windows下大文件复制工具介绍
  15. 厨师 做菜 java_厨师做菜心得
  16. .net后台实现ping网关地址操作
  17. echarts3.0 markline 最大值 最小值 均值 方差 标准差 包络 正态分布
  18. ubuntu中pycharm没有启动图标
  19. 内网接入外网的几种方式
  20. 磁盘性能--IOPS和吞吐量

热门文章

  1. quickbooks php 开发,通过odbc与PHP连接到quickbooks数据库?
  2. 【axios源码】- 取消请求cancel模块研读解析
  3. WinForm PictureBox加载图片方法
  4. JSP中动态添加或删除table的行
  5. C#中 out的使用
  6. 硅谷来信2,157,facebook和google之争的本质是什么?
  7. The Biggest Water Problem
  8. 0-1型整数规划—MATLAB数学建模
  9. c语言扫雷游戏计时功能_做游戏,学编程(C语言) 20 扫雷
  10. 预制式智能模块化变电站