在Kubernetes v1.8中使用RBAC
Kubernetes 1.8一个重要里程碑是推出了基于角色的访问控制(RBAC)授权,在这个版本中被提升为GA。RBAC是一种控制访问Kubernetes API的机制,因为在1.6中推出beta版,许多Kubernetes集群和配置策略在默认情况下都启用了它。
展望未来,我们预计RBAC将成为保护Kubernetes集群的基础。本文介绍使用RBAC管理用户和应用程序访问Kubernetes API。
向用户授予访问
RBAC使用标准Kubernetes资源配置,用户可以通过绑定(ClusterRoleBindings和RoleBindings)到一组角色(集群角色和角色)。用户启动时没有权限,必须由管理员明确授予访问权限。
所有Kubernetes集群都安装了一组默认的集群角色,表示可以放置用户的公共bucket。“edit”角色允许用户执行像部署pod这样的基本操作,“view”让用户观察非敏感资源,“admin”允许用户管理名称空间;并且“集群管理”授予对集群的管理权限。
$ kubectl get clusterroles NAME AGE admin 40m cluster-admin 40m edit 40m # … view 40m |
ClusterRoleBindings允许用户、组或服务帐户在整个集群中使用ClusterRole的功能。使用kubectl,我们可以让一个示例用户“jane”在所有命名空间中执行基本动作,将其绑定到“edit”ClusterRole:
$ kubectl create clusterrolebinding jane –clusterrole=edit –user=jane $ kubectl get namespaces –as=jane NAME STATUS AGE default Active 43m kube-public Active 43m kube-system Active 43m $ kubectl auth can-i create deployments –namespace=dev –as=jane yes |
RoleBindings在命名空间中授予ClusterRole的权力,允许管理员管理集群中重用的集群角色的中心列表。例如,当新资源被添加到Kubernetes时,默认的clusterrole会被更新,以自动授予其命名空间内的RoleBinding主题的正确权限。
接下来,我们将让组“infra”修改“dev”名称空间中的资源:
$ kubectl create rolebinding infra –clusterrole=edit –group=infra –namespace=dev rolebinding “infra” created |
因为我们使用了一个RoleBinding,这些权限只适用于RoleBinding的命名空间。在我们的例子中,“infra”组中的用户可以在“dev”名称空间中查看资源,但不能在“prod”中查看资源:
$ kubectl get deployments –as=dave –as-group=infra –namespace dev No resources found. $ kubectl get deployments –as=dave –as-group=infra –namespace prod Error from server (Forbidden): deployments.extensions is forbidden: User “dave” cannot list deployments.extensions in the namespace “prod”. |
创建自定义角色
当默认的ClusterRoles还不够用时,就可以创建定义一个自定义权限集的新角色。由于ClusterRoles只是常规的API资源,它们可以表示为YAML或JSON,并使用kubectl应用。
每个ClusterRole都包含指定“规则”的权限列表。规则是纯添加的,允许在一组资源上执行特定的HTTP谓词。例如,以下ClusterRole拥有对“部署”、“configmaps”或“secrets”执行任何操作的权限,并查看任何“pod”:
kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: deployer rules: – apiGroups: [“apps”] resources: [“deployments”] verbs: [“get”, “list”, “watch”, “create”, “delete”, “update”, “patch”] – apiGroups: [“”] # “” indicates the core API group resources: [“configmaps”, “secrets”] verbs: [“get”, “list”, “watch”, “create”, “delete”, “update”, “patch”] – apiGroups: [“”] # “” indicates the core API group resources: [“pods”] verbs: [“get”, “list”, “watch”] |
verbs对应于HTTP请求,而resources和apiGroups则引用被引用的资源。考虑以下的Ingress资源:”
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: test-ingress spec: backend: serviceName: testsvc servicePort: 80 |
要发布资源,用户需要以下权限:
rules: – apiGroups: [“extensions”] # “apiVersion” without version resources: [“ingresses”] # Plural of “kind” verbs: [“create”] # “POST” maps to “create” |
应用程序的角色
当部署需要访问Kubernetes API的容器时,最好将RBAC角色发送到应用程序清单。除了确保应用程序在RBAC支持集群工作之外,这还可以帮助用户审核应用程序在集群上执行哪些操作,并考虑它们的安全影响。
通常是应用程序通常更适合命名空间,因为应用程序通常运行在一个命名空间,命名空间的资源应该绑定到应用程序的生命周期。然而,角色不能授权访问没有命名空间的资源(如节点)或在命名空间,所以一些应用程序可能仍然需要ClusterRoles。
下面的角色允许Prometheus实例监视和发现“dev”名称空间中的服务、endpoint和pod:
kind: Role metadata: name: prometheus-role namespace: dev rules: – apiGroups: [“”] # “” refers to the core API group Resources: [“services”, “endpoints”, “pods”] verbs: [“get”, “list”, “watch”] |
在Kubernetes集群中运行的容器接收服务帐户凭据,以与Kubernetes API进行对话,服务帐户可以通过RoleBinding进行***。pod通常使用“default”服务帐户运行,但良好的做法是使用一个独特的服务帐户运行每个应用程序,这样RoleBindings就不会无意中授予其他应用程序的权限。要使用自定义服务帐户运行一个pod,在同一个名称空间中创建一个ServiceAccount资源,并指定manifest的“serviceAccountName”字段。
apiVersion: apps/v1beta2 # Abbreviated, not a full manifest kind: Deployment metadata: name: prometheus-deployment namespace: dev spec: replicas: 1 template: spec: containers: – name: prometheus image: prom/prometheus:v1.8.0 command: [“prometheus”, “-config.file=/etc/prom/config.yml”] # Run this pod using the “prometheus-sa” service account. serviceAccountName: prometheus-sa — apiVersion: v1 kind: ServiceAccount metadata: name: prometheus-sa namespace: dev |
本文出自http://www.sohu.com/a/205750642_610730
转载于:https://blog.51cto.com/lookingdream/2108953
相关文章:

Java String.substring内存泄露?
2019独角兽企业重金招聘Python工程师标准>>> String可以说是最常用的Java类型之一了,但是最近听说JDK6里面String.substring存在内存泄露的bug,伙惊呆!一起来看看到底是啥情况吧。 这个是可以导致Exception in thread "main&…

第二弹,坐地铁就能学会的3种「非常有趣」的 Python 玩法
作者 | 黄伟呢来源 | 数据分析与统计学之美本文说明为什么要学习python?是因为不仅很多工作需要用到python,同时我们可以利用python做很多好玩儿的事儿。比如说下面的3种用法:1.利用python给小猪佩奇换背景色;2.利用python将小猪佩…

php比较长的configure
原先的字串./configure --prefix/usr/local/php --with-apxs2/usr/local/apache2/bin/apxs --enable-zip --enable-calendar --with-mysql/usr/local/mysql --with-pdo-mysql/usr/local/mysql --with-iconv/usr/local/libiconv --with-curl/usr/local/curl --with-gd/usr/local…

用mpvue实现的微信小程序版cnode社区
五一放假,没出去玩,想熟悉下vue的开发流程,又想体验下mpvue,于是写了个练手项目。一个用mpvue实现的cnode微信小程序版。 代码在仓库。欢迎各位star、fork、issue、pr。目前已经完成了百分之80的功能。个人感觉这个项目还是非常适…

PHP编译安装
#wget http://museum.php.net/php5/php-5.2.6.tar.gz (下载php源码) http://cn.php.net/releases/ 可以找到 #tar zxvf php-5.2.6.tar.gz #cd php-5.2.6 #./configure --prefix/usr/local/php --with-mysql/usr/local/mysql --with-apxs2/usr/local/apa…

Python 办公自动化,一键给PDF文件加密,超方便
作者 | 欣一来源 | Python爱好者集中营今天给大家做一个给PDF文件加密的GUI界面(图形用户界面),方便现在的一些上班族白领们使用,尤其是需要给一些比较重要的PDF文件加密的时候,下面我们来看具体的步骤给PDF文件加密首先我们需要清楚的是如何…

YUM安装多个(多实例) Mysql
2019独角兽企业重金招聘Python工程师标准>>> 这里使用的是MYSQL的percona分支 先安装repo包 yum install percona-release-0.0-1.x86_64.rpm -y 想安装5.6的把5.5替换就行了,5.6的太耗内存了-。- yum install Percona-Server-server-55.x86_64 Percona-Server-clien…

scala可变长度参数函数
2019独角兽企业重金招聘Python工程师标准>>> scala可变长度参数函数只需要在参数列表的最后放一个星号,实验如下: def main (args:Array[String]){argsfun("Runoob", "Scala", "Python")} def argsfun(args:St…

3000 字推荐一个可视化神器,50 行 Python 代码制作数据大屏
作者 | 俊欣来源 | 关于数据分析与可视化今天小编给大家分享一个制作数据大屏的工具,非常的好用,100行左右的Python代码就可以制作出来一个完整的数据大屏,并且代码的逻辑非常容易理解。PywebIO介绍Python当中的PywebIO模块可以帮助开发者在不…

使用Varnish+ESI实现静态页面的局部缓存
页面静态化是搭建高性能网站必用的招式之一,页面静态化可以有效提升系统响应速度,同时也有利于搜索引擎优化。但在页面静态化后,静态页面之间包含(例如所有的静态页面包含页头、页脚)以及静态页面中的局部信息的动态更…

The Apply method of function object
2019独角兽企业重金招聘Python工程师标准>>> http://webreference.com As explained in the previous page, JavaScript 1.3 includes two new methods for the Function object, call() andapply(). The apply() method is a variation on the call() method. The …

资源 | 100+个自然语言处理数据集大放送,再不愁找不到数据!
奉上100多个按字母顺序排列的开源自然语言处理文本数据集列表(原始未结构化的文本数据),快去按图索骥下载数据自己研究吧! 数据集 Apache软件基金会公开邮件档案:截止到2011年7月11日全部公开可用的Apache软件基金会邮…

Java中ArrayList源码分析
一、简介 ArrayList是一个数组队列,相当于动态数组。每个ArrayList实例都有自己的容量,该容量至少和所存储数据的个数一样大小,在每次添加数据时,它会使用ensureCapacity()保证容量能容纳所有数据。 1.1、ArrayList 的继承与实现接…

介绍三种绘制时间线图的方法
作者 |周萝卜来源 |萝卜大杂烩今天我们再来分享几种不同的制作方法,大家可以自行比较下各种方法的优劣。Matplotlib 制作Matplotlib 作为 Python 家族最为重要的可视化工具,其基本的 API 以及绘制流程还是需要掌握的。尤其是该库的灵活程度以及作为众多工…

phpize是什么
安装php(fastcgi模式)的时候,常常有这样一句命令:/usr/local/webserver/php/bin/phpize 一、phpize是干嘛的? phpize是什么东西呢?php官方的说明: http://php.net/manual/en/install.pecl.phpiz…

C语言比较好的风格梳理
errno int err;tb malloc(sizeof(struct xtracer_table));if (!tb) {err errno;fprintf(stderr, "%s:%d, errno:%d, %s\n",__func__, __LINE__, err, strerror(err));return NULL;} 转载于:https://www.cnblogs.com/muahao/p/8979144.html

Linux下Memcache服务器端的安装
Linux下Memcache服务器端的安装服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 。下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz http://memcached.googlecode.com/files/memcached-1.4.9.tar.gz 另外&#…

如何用技术恢复模糊的图像?在线教学…
作者 |小白 来源 |小白学视觉 有人认为恢复模糊的图像是不可能的,因为会丢失信息。但我对这个问题进行了很多思考,并认为如果输出图像的大小与输入图像的大小相同,那实际上是可能的!这样,输出就有足够的像素/信息来恢复…

数据库创建索引的原则
数据库建立索引的原则 铁律一:天下没有免费的午餐,使用索引是需要付出代价的 索引的优点有目共睹,但是,却很少有人关心过采用索引所需要付出的成本。若数据库管理员能够对索引所需要付出的代价有一个充分的认识,也就不…

Linux上实现ssh免密码登陆远程服务器
平常使用ssh登陆远程服务器时,都需要使用输入密码,希望可以实现通过密钥登陆而免除输入密码,从而可以为以后实现批量自动部署主机做好准备。 环境如下: IP地址操作系统服务器端10.0.0.10CentOS 6.5 x86客户端10.0.0.61CentOS 6.5 …

分享memcache和memcached安装过程
Memcache是什么? Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。 它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一…

导入导出Android手机文件
1、获得root权限:adb root; 如提示adbd cannot run as root in production builds,参见我的另一篇文章:http://www.cnblogs.com/hdk1993/p/4770388.html 2、设置/system为可读写:adb remount; 3、将文件复制…

GPT-3 不够 Open,BigScience 构建开放语言模型,规模小 16 倍
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 大约一年前,总部位于纽约布鲁克林的自然语言处理初创公司 Hugging Face 推出了 BigScience。这是一个拥有 900 多名研究人员的国际项目,旨在更好地理解自然语言模型原理和提高大…

华为云微服务引擎CSE大量新特性上线,诚邀您免费体验
1、提供GO语言微服务开发框架SDK 支持插件化注册中心、多RPC协议(已默认实现http和highway,可扩展) 提供熔断降级、容错、路由管理、限流、错误注入、灰度发布等治理能力 2、提供Service Mesh商业版 支持.NET、Node.js、PHP等多语言应用…

memcache和memcached安装
首先要明确 memcache不是memcached第一步安装libevent #wget https://github.com/downloads/libevent/libevent/libevent-2.0.15-stable.tar.gz #tar libevent-2.0.15-stable.tar.gz #tar xzvf libevent-2.0.15-stable.tar.gz #cd libevent-2.0.15-stable #./configure --h…

点击按钮下载文件
RequestMapping("/download.do")public void download(HttpServletRequest request,HttpServletResponse response)throws Exception {String filePath "文件路径";FileInputStream fis null;OutputStream os null;try {fis new FileInputStream(fileP…

开源社区的危机:拒绝被“白嫖”?2大著名项目遭作者破坏
作者 | 林檎来源 | 数据实战派近日,一位开源开发者的故意破坏,再次引发了机构依赖开源库的争议。这一类开源库往往由维护者义务工作而支撑。被破坏的开源库是 Marak Squires 开发的 color.js 库和 faker.js 库。这两个库被广泛使用,其中不乏企…
状态和面向对象编程——1.定位步骤
定位 所有无人驾驶车要安全畅游全球,都必须经过一系列相同的步骤。 你一直在学习第一步:定位。在车辆能够安全驾驶之前,它们首先要使用传感器和收集的其他数据对它们所处的位置做出最佳估计。 卡尔曼滤波器 让我们来回顾一下卡尔曼滤波器对汽…

ldconfig命令详解,linux动态链接库
动态链接库管理命令 为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig.此执行程序存放在/sbin目录下. ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍…

用于自动驾驶的实时 YUV 多任务 CNN
作者 | AI 修炼之路来源 | AI 修炼之路摘要本文提出了一种针对低功耗车用SoC优化的多任务卷积神经网络(CNN)结构。我们介绍了一个基于统一架构的网络,其中编码器由检测和分割两个任务共享。该网络以25FPS运行,分辨率为1280800。简要讨论了直接利用原生YU…