Kubernetes v1.6开始支持RBAC
2019独角兽企业重金招聘Python工程师标准>>>
Kubernetes v1.6的一个亮点就是RBAC认证特性成为了beta版本。RBAC,基于角色的访问控制(Role-Based Access Control),是用于管理Kubernetes资源访问权限的认证机制。RBAC支持灵活的认证策略配置,使得集群在不重启的情况下就可以升级权限。
本文重点聚焦在一些有趣的新特性和实践上。
RBAC vs ABAC
当前Kubernetes已经支持多种认证模式。认证器是一种机制,可以决定用户是否被允许通过Kubernetes API对集群做出一些修改。这会影响到kubectl、系统组件、还有运行在集群中和操纵集群状态的某些应用,如Jenkins的Kubernetes插件,或者是运行在集群中的Helm,它使用Kubernetes API在集群中部署应用。在可用的授权机制中,ABAC和RBAC都是Kubernetes集群的本地机制,都可以对访问策略进行配置。
ABAC,基于属性的访问控制(Attribute Based Access Control),是一种很强大的概念。然而在Kubernetes的实现中,ABAC难以管理和理解。要改变授权策略,要求有集群master节点的ssh和根文件系统的访问权限。而且,只有在集群的API server重启后,权限变更才会生效。
RBAC权限策略通过kubectl或者直接使用Kubernetes API来配置。可以通过RBAC来授权用户,从而在不给予用户集群master的ssh访问权限情况下,可以进行资源管理。RBAC策略能够轻松地映射资源和Kubernetes API中使用的操作。
基于Kubernetes社区的开发力度,未来RBAC应该会取代ABAC。
基本概念
要理解RBAC,这里有一些基本理念。最核心的,RBAC是一种授权用户对Kubernetes API资源进行不同粒度访问的方式。
用户和资源的连接是使用RBAC的下面两个对象来定义的。
角色(Roles)
角色是一系列权限的集合。比如,角色可以被定义为包含pod的读权限和列表(list)权限。ClusterRole
(集群角色)和角色很像,但它可以被使用在集群中的任何位置。
角色绑定(Role Bindings)
角色绑定将角色映射到一个用户或者一组用户,把角色在命名空间中对资源的权限授权给这些用户。ClusterRoleBinding
(集群角色绑定)允许授权用户ClusterRole
的在整个集群中的授权访问。
此外,还需要考虑集群角色和集群角色绑定。集群角色和集群角色绑定功能就像角色和角色绑定一样,只是有着更宽的使用范围。集群用户、集群用户绑定和用户、用户绑定之间的准确区别,详见Kubernetes doc。
Kubernetes中的RBAC
RBAC现在已经被深度集成在Kubernetes中,并使用它授权给系统组件使用。系统角色以system
为前缀,因此可以轻易地识别出来。
$ kubectl get clusterroles --namespace=kube-system
NAME KIND
admin ClusterRole.v1beta1.rbac.authorization.k8s.io
cluster-admin ClusterRole.v1beta1.rbac.authorization.k8s.io
edit ClusterRole.v1beta1.rbac.authorization.k8s.io
kubelet-api-admin ClusterRole.v1beta1.rbac.authorization.k8s.io
system:auth-delegator ClusterRole.v1beta1.rbac.authorization.k8s.io
system:basic-user ClusterRole.v1beta1.rbac.authorization.k8s.io
system:controller:attachdetach-controller ClusterRole.v1beta1.rbac.authorization.k8s.io
system:controller:certificate-controller ClusterRole.v1beta1.rbac.authorization.k8s.io
...
扩充了RBAC的系统角色,仅使用RBAC就能管理运行Kubernetes集群所需的权限。
在从ABAC到RBAC的权限迁移期间,一些在ABAC授权的deployment中默认使能的权限,在RBAC中被识别为是没有必要的,权限会在RBAC中被降级。可能会影响到服务帐户的权限的负载。在ABAC配置下,使用pod映射token来授权API server的pod请求有着很高的权限。一个具体的例子,当使能ABAC时,下面的curl命令会返回一个JSON格式的正确结果,而只使能RBAC时则会返一个错误。
$ kubectl run nginx --image=nginx:latest
$ kubectl exec -it $(kubectl get pods -o jsonpath='{.items[0].metadata.name}') bash
$ apt-get update && apt-get install -y curl
$ curl -ik \-H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \https://kubernetes/api/v1/namespaces/default/pods
在从ABAC迁移为RBAC的过程中,Kubernetes集群中运行的任何应用,只要和Kubernetes API交互,都可能被权限迁移所影响。
为了使ABAC到RBAC的迁移尽量平滑,你可以在创建Kubernetes v1.6集群时,同时使能ABAC和RBAC授权。当同时使能ABAC和RBAC时,如果任一授权策略授以访问权限,则都被会授予资源权限。然而,然而在这种配置下,被赋予了太宽容的权限,在完全的RBAC环境下可能无法工作。 现在,RBAC完全足够,ABAC的支持未来应该考虑被弃用。在可预见的未来,它应该还会保存在Kubernetes中,不过开发主要集中在RBAC上了。
在Google Cloud Next会议上,有两篇涉及到Kubernetes v1.6中BRAC相关改变的演讲,可通过这里和这里来查看相关部分。如果要查看更多关于Kubernetes v1.6使用RBAC的详细信息,阅读完整的RBAC文档。
转载于:https://my.oschina.net/styshoo/blog/883146
Kubernetes v1.6开始支持RBAC相关推荐
- 在Kubernetes v1.8中使用RBAC
Kubernetes 1.8一个重要里程碑是推出了基于角色的访问控制(RBAC)授权,在这个版本中被提升为GA.RBAC是一种控制访问Kubernetes API的机制,因为在1.6中推出beta版, ...
- 二进制部署Kubernetes v1.13.4 HA可选
本次采用二进制文件方式部署,本文过程写成了更详细的ansible部署方案 https://github.com/zhangguanzhang/Kubernetes-ansible 和之前的步骤差不多都 ...
- Kubernetes v1.10.4 安装记录
#参考文档:https://github.com/opsnull/follow-me-install-kubernetes-cluster #约定: #1.会显式的标注出命令都要再哪一台或哪几台上执行 ...
- Kubernetes权限管理与控制-RBAC
Kubernetes权限管理与控制-RBAC 1.Kubernetes api访问控制 用户通过kubectl.客户端库或者通过发送REST请求访问API.用户和Kubernetes服务账户都可以被授 ...
- 使用docker engine 运行时 集群部署 kubernetes v1.23
硬件环境: 使用 VMware16 模拟3台服务器,建立1个control plane(master),2个work 节点的kubernetes集群 使用 Ubuntu server 20.04 TL ...
- s24.基于 Kubernetes v1.25 (二进制) 和 Docker部署高可用集群
1.安装说明 本文章将演示二进制方式安装高可用k8s 1.17+,相对于其他版本,二进制安装方式并无太大区别,只需要区分每个组件版本的对应关系即可. 生产环境中,建议使用小版本大于5的Kubernet ...
- 使用二进制包在生产环境部署 Kubernetes v1.13.2 集群
文章目录 使用二进制包在生产环境部署 Kubernetes v1.13.2 集群 一 背景 二 环境及架构图 2.1 软件环境 2.2 服务器规划 2.3 节点或组件功能简介 2.4 Kubernet ...
- 关于 Kubernetes中API Server授权(RBAC)管理的一些笔记
写在前面 学习K8s涉及,整理笔记记忆 博文偏实战,内容涉及: k8s中API Server的授权策略简述 RBAC授权策略中涉及到的资源对象创建删除 Role ClusterRole RoleBin ...
- kubernetes(k8s)之rbac权限管理详解
kubernetes(k8s)之rbac权限管理详解 RBAC简介 RBAC(Role-Based Access Control) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 ...
最新文章
- 百度大脑开放日:24 种新 AI 能力 20 个经典案例 助力 AI 落地
- GNN笔记:图信号处理(Graph Signal Processing)
- wait()和sleep()
- Python中曲率与弯曲的转换_1000R曲率更具沉浸感!三星T55曲面显示器评测
- mysqldump 使用备忘
- 解决outlook不能显示鼠标问题
- 大一python期末考试选择题_python大一题目
- 我从AI For Everyone学到的十个重要AI 概念
- 天池二手车交易价格预测— 赛题理解 + 数据分析
- 运用nginx和阿里云解析配置二级域名 设置不同端口号
- 名著中的经典语录(转自网络)
- tkinter如何绑定鼠标和键盘等事件
- PotPlayer 高逼格无边框的本地播放器
- 骨龄预测代码学习(二)
- HNUCM 1544:XP的宝藏
- 教大家如何破解某款返利机器人最新版1.4.7
- 北航数理统计大作业_如何自学概率论与数理统计/微积分/线性代数等科目
- 圈层突破:再穷,也要挤进富人圈!
- 已经开始申报!2021年联合培养博士项目申报指南(详细)
- 用户空间的SystemTap探测是怎么工作的