附006.Kubernetes RBAC授权
一 RBAC介绍
1.1 RBAC授权
- Role
- ClusterRole
- RoleBinding
- ClusterRoleBinding

二 RBAC详解
2.1 Role 和 ClusterRole
1 [root@k8smaster01 study]# vi pod-reader-Role.yaml
2 apiVersion: rbac.authorization.k8s.io/v1
3 kind: Role
4 metadata:
5 namespace: default
6 name: pod-reader
7 rules:
8 - apiGroups: [""] # "" indicates the core API group
9 resources: ["pods"] #资源类型
10 verbs: ["get", "watch", "list"] #操作类型
- 集群范围的资源(如nodes);
- non-resource endpoints(如“/healthz”);
- 跨所有命名空间(可通过kubectl get pods --all-namespaces查看)的命名空间资源(如pods)。
1 [root@k8smaster01 study]# vi secret-reader-ClusterRole.yaml
2 apiVersion: rbac.authorization.k8s.io/v1
3 kind: ClusterRole
4 metadata:
5 # 因为ClusterRoles是针对所有命名空间,因此省略了“命名空间”。
6 name: secret-reader
7 rules:
8 - apiGroups: [""]
9 resources: ["secrets"] #资源类型
10 verbs: ["get", "watch", "list"] #操作类型
2.2 RoleBinding 和 ClusterRoleBinding
1 kind: RoleBinding
2 apiVersion: rbac.authorization.k8s.io/v1
3 metadata:
4 name: read-pods
5 namespace: default #普通角色绑定指定namespace
6 subjects: #主体参数
7 - kind: User #指定主体类型为user
8 name: jane #指定user用户名
9 apiGroup: rbac.authorization.k8s.io
10 roleRef: #角色引用
11 kind: Role #类型为普通角色
12 name: pod-reader #角色名
13 apiGroup: rbac.authorization.k8s.io
1 [root@k8smaster01 study]# vi dave_RoleBinding.yaml
2 kind: RoleBinding
3 apiVersion: rbac.authorization.k8s.io/v1
4 metadata:
5 name: read-secrets
6 namespace: development #指定特定的命名空间
7 subjects: #主体参数
8 - kind: User #指定主体类型为user
9 name: dave #指定user用户名
10 apiGroup: rbac.authorization.k8s.io
11 roleRef: #角色引用
12 kind: ClusterRole #类型为集群角色
13 name: secret-reader #角色名
14 apiGroup: rbac.authorization.k8s.io
1 [root@k8smaster01 study]# vi manager_ClusterRoleBinding.yaml
2 kind: ClusterRoleBinding
3 apiVersion: rbac.authorization.k8s.io/v1
4 metadata:
5 name: read-secrets-global
6 subjects: #主体参数
7 - kind: Group #指定主体类型为group
8 name: manager #指定group组名
9 apiGroup: rbac.authorization.k8s.io
10 roleRef: #角色引用
11 kind: ClusterRole #类型为集群角色
12 name: secret-reader #角色名
13 apiGroup: rbac.authorization.k8s.io
2.3 默认角色
三 资源与主体
3.1 资源介绍
1 [root@k8smaster01 study]# vi pod-and-pod_log.yaml
2 kind: Role
3 apiVersion: rbac.authorization.k8s.io/v1
4 metadata:
5 namespace: default
6 name: pod-and-pod-logs-reader
7 rules:
8 - apiGroups: [""]
9 resources: ["pods","pods/log"]
10 verbs: ["get","list"]
1 [root@k8smaster01 study]# vi updater_configmap.yaml
2 kind: Role
3 apiVersion: rbac.authorization.k8s.io/v1
4 metadata:
5 namespace: default
6 name: configmap-updater
7 rules:
8 - apiGroups: [""]
9 resources: ["configmaps"]
10 resourceNames: ["my-configmap"]
11 verbs: ["update","get"]
3.2 主体介绍
1 subjects:
2 - kind: User
3 name: "alice@example.com"
4 apiGroup: rbac.authorization.k8s.io
1 subjects:
2 - kind: Group
3 name: "frontend-admins"
4 apiGroup: rbac.authorization.k8s.io
1 subjects:
2 - kind: ServiceAccount
3 name: default
4 namespace: kube-system
1 subjects:
2 - kind: Group
3 name: system:serviceaccounts:qa
4 apiGroup: rbac.authorization.k8s.io
1 subjects:
2 - kind: Group
3 name: system:serviceaccounts
4 apiGroup: rbac.authorization.k8s.io
1 subjects:
2 - kind: Group
3 name: system:authenticated
4 apiGroup: rbac.authorization.k8s.io
1 subjects:
2 - kind: Group
3 name: system:unauthenticated
4 apiGroup: rbac.authorization.k8s.io
1 subjects:
2 - kind: Group
3 name: system:authenticated
4 apiGroup: rbac.authorization.k8s.io
5 - kind: Group
6 name: system:unauthenticated
7 apiGroup: rbac.authorization.k8s.io
四 角色相关命令
4.1 创建角色
4.2 创建集群角色

4.3 权限和角色绑定
4.4 权限和集群角色绑定
4.5 相关对比


五 服务账户权限
5.1 服务账户
5.2 服务账号授权
- 授予角色给一个指定Pod的服务帐户
1 kubectl create rolebinding my-sa-view \
2 --clusterrole=view \
3 --serviceaccount=my-namespace:my-sa \
4 --namespace=my-namespace
- 在一个命名空间授予“view”集群角色给“default”服务帐户
1 kubectl create rolebinding default-view \
2 --clusterrole=view \
3 --serviceaccount=my-namespace:default \
4 --namespace=my-namespace
1 kubectl create clusterrolebinding add-on-cluster-admin \
2 --clusterrole=cluster-admin \
3 --serviceaccount=kube-system:default
- 在一个命名空间中,授予角色给所有的服务帐户
1 kubectl create rolebinding serviceaccounts-view \
2 --clusterrole=view \
3 --group=system:serviceaccounts:my-namespace \
4 --namespace=my-namespace
- 在整个集群中授予一个角色给所有的服务帐户 (不推荐)
1 kubectl create clusterrolebinding serviceaccounts-view \
2 --clusterrole=view \
3 --group=system:serviceaccounts
- 在整个集群中授予超级用户访问所有的服务帐户 (强烈不推荐)
1 kubectl create clusterrolebinding serviceaccounts-cluster-admin \
2 --clusterrole=cluster-admin \
3 --group=system:serviceaccounts
- 宽松的RBAC权限(致命危险)
1 kubectl create clusterrolebinding permissive-binding \
2 --clusterrole=cluster-admin \
3 --user=admin \
4 --user=kubelet \
5 --group=system:serviceaccounts
附006.Kubernetes RBAC授权的更多相关文章
- Kubernetes RBAC授权普通用户对命名空间访问权限
Kubernetes RBAC授权普通用户对命名空间访问权限 官方文档:https://www.cnblogs.com/xiangsikai/p/11413970.html kind: Role ap ...
- 附007.Kubernetes ABAC授权
一 ABAC 1.1 ABAC授权 基于属性的访问控制(ABAC)定义了访问控制范例,通过使用将属性组合在一起的策略向用户授予访问权限. 使用--authorization-policy-file=S ...
- 附024.Kubernetes全系列大总结
Kubernetes全系列总结如下,后期不定期更新.欢迎基于学习.交流目的的转载和分享,禁止任何商业盗用,同时希望能带上原文出处,尊重ITer的成果,也是尊重知识.若发现任何错误或纰漏,留言反馈或右侧 ...
- 附004.Kubernetes Dashboard简介及使用
一 Kubernetes dashboard简介 1.1 Web UI简介 dashboard是基于Web的Kubernetes用户界面.可以使用dashboard将容器化应用程序部署到Kuberne ...
- 16. kubernetes RBAC
16. kubernetes RBAC授权插件: Node,ABAC,RBAC,webhock RBAC: role based access contrl 基于角色的授权. 角色:(role)许可( ...
- Service Account和RBAC授权
一.介绍 Service Account概念的引入是基于这样的使用场景:运行在pod里的进程需要调用Kubernetes API以及非Kubernetes API的其它服务.Service Accou ...
- 这些用来审计 Kubernetes RBAC 策略的方法你都见过吗?
原文链接:这些用来审计 Kubernetes RBAC 策略的方法你都见过吗? 认证与授权对任何安全系统来说都至关重要,Kubernetes 也不例外.即使我们不是安全工作人员,也需要了解我们的 Ku ...
- 附010.Kubernetes永久存储之GlusterFS超融合部署
一 前期准备 1.1 基础知识 在Kubernetes中,使用GlusterFS文件系统,操作步骤通常是: 创建brick-->创建volume-->创建PV-->创建PVC--&g ...
- 附014.Kubernetes Prometheus+Grafana+EFK+Kibana+Glusterfs整合解决方案
一 glusterfs存储集群部署 注意:以下为简略步骤,详情参考<附009.Kubernetes永久存储之GlusterFS独立部署>. 1.1 架构示意 略 1.2 相关规划 主机 I ...
随机推荐
- Activex、OLE、COM、OCX、DLL之间的区别(转)
熟悉面向对象编程和网络编程的人一定对ActiveX.OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的.在具体介绍它们的关系之间,我们还是先明确组件(Co ...
- Python访问剪切板
剪切板访问工具 ----pyperclip he purpose of Pyperclip is to provide a cross-platform Python module for copyi ...
- WPF中的字体改善
WPF4对字体渲染做了很大的改善,增加了TextOptions属性,该属性可以设置TextFormattingMode,TextRenderingMode,TextHintingMode 1.Text ...
- mysql 多重游标嵌套
1.DECLARE CONTINUE HANDLER FOR NOT FOUND 在mysql的存储过程中经常会看到这句话:DECLARE CONTINUE HANDLER FOR NOT FOUND ...
- DaTaX当成jar包当作第三方库启动的相关问题
上一篇已经大致的将了本地状况下DaTaX的纯Java代码启动的过程 http://www.cnblogs.com/blogsofmy/p/8287637.html不了解的请点超链接 这次我们来说说文件 ...
- Java的动态代理
什么是动态代理(dynamic proxy) 动态代理(以下称代理),利用Java的反射技术(Java Reflection),在运行时创建一个实现某些给定接口的新类(也称“动态代理类”)及其实例(对 ...
- Linux系统监控命令及定位Java线程
1.PID.TID的区分 uid是user id,即用户id,root用户的uid是0,0为最高权限,gid是group id,用户组id,使用 id 命令可以很简单的通过用户名查看UID.GID:~ ...
- iOS开发-获取属性和方法
iOS开发数据存储有两种方式,属性列表和对象编码,属性列表可以通过NSArray,NSMutableArray,NSMutableDictionary,存储对象我们可以通过归档和解档来完成.如果我们想 ...
- java.lang.IllegalStateException——好头疼
在我东,下下来一个项目总会出现启动不了的问题,这些问题往往在编译的时候发现不了,当你的服务器启动的时候,就是一片片的报错,有些问题可以通过异常的提示信息,判断出来哪里配置错了,但是也有些情况下,从异常 ...
- 0基础的人如何入门 Python ?Python难么?
人生苦短,我用Python,为啥这么说,因为我们自动化测试有金句:学完Python,便可上天 ~ 废话不多说,相信很多人都听过之前的Python进入小学课本.Python进入浙江省高考等新闻,有这么多 ...