文档章节

kubernetes实战篇之Dashboard的访问权限限制

SEOwhywhy
 SEOwhywhy
发布于 07/03 08:51
字数 1241
阅读 14
收藏 0

  前面我们的示例中,我们创建的ServiceAccount是与cluster-admin 绑定的,这个用户默认有最高的权限,实际生产环境中,往往需要对不同运维人员赋预不同的权限.而根据实际情况也可能会赋予开发人员只读的权限.这一节我们将介绍如何创建不同权限的用户.
  
  在开始之前,我们先了解一些关于kubernetes RABA的一些基本概念.
  
  Role
  
  Role表示是一组规则权限,只能累加,Role可以定义在一个namespace中,只能用于授予对单个命名空间中的资源访问的权限。比如我们新建一个对默认命名空间中Pods具有访问权限的角色:
  
  kind: Role
  
  apiVersion: rbac.authorization.k8s.io/v1beta1
  
  metadata:
  
  namespace: default
  
  name: pod-reader
  
  rules:
  
  - apiGroups: [""] # "" indicates the core API group
  
  resources: ["pods"]
  
  verbs: ["get", "watch", "list"]
  
  ClusterRole
  
  ClusterRole具有与Role相同的权限角色控制能力,不同的是ClusterRole是集群级别的,可以用于:
  
  集群级别的资源控制(例如 node 访问权限)
  
  非资源型 endpoints(例如 /healthz 访问)
  
  所有命名空间资源控制(例如 pods)
  
  比如我们要创建一个授权某个特定命名空间或全部命名空间(取决于绑定方式)访问secrets的集群角色:
  
  kind: ClusterRole
  
  apiVersion: rbac.authorization.k8s.io/v1beta1
  
  metadata:
  
  # "namespace" omitted since ClusterRoles are not namespaced
  
  name: secret-reader
  
  rules:
  
  - apiGroups: [""]
  
  resources: ["secrets"]
  
  verbs: ["get", "watch", "list"]
  
  RoleBinding和ClusterRoleBinding
  
  RoloBinding可以将角色中定义的权限授予用户或用户组,RoleBinding包含一组权限列表(subjects),权限列表中包含有不同形式的待授予权限资源类型(users、groups、service accounts),RoleBinding适用于某个命名空间内授权,而 ClusterRoleBinding适用于集群范围内的授权。
  
  比如我们将默认命名空间的pod-reader角色授予用户jane,这样以后该用户在默认命名空间中将具有pod-reader的权限:
  
  # This role binding allows "jane" to read pods in the "default" namespace.
  
  kind: RoleBinding
  
  apiVersion: rbac.authorization.k8s.io/v1beta1
  
  metadata:
  
  name: read-pods
  
  namespace: default
  
  subjects:
  
  - kind: User
  
  name: jane
  
  apiGroup: rbac.authorization.k8s.io
  
  roleRef:
  
  kind: Role
  
  name: pod-reader
  
  apiGroup: rbac.authorization.k8s.io
  
  RoleBinding同样可以引用ClusterRole来对当前 namespace 内用户、用户组或 ServiceAccount 进行授权,这种操作允许集群管理员在整个集群内定义一些通用的 ClusterRole,然后在不同的 namespace 中使用 RoleBinding 来引用
  
  例如,以下 RoleBinding 引用了一个 ClusterRole,这个 ClusterRole 具有整个集群内对 secrets 的访问权限;但是其授权用户 dave 只能访问 development 空间中的 secrets(因为 RoleBinding 定义在 development 命名空间)
  
  # This role binding allows www.huichengtxgw.com dave"www.wanhongzpt.com to read secrets in the "development" namespace.
  
  kind: RoleBinding
  
  apiVersion: rbac.authorization.k8s.io/v1beta1
  
  metadata:
  
  name: read-secrets
  
  namespace: development # This only www.baitengpt.com  grants permissions within the "development" namespace.
  
  subjects:
  
  - kind: User
  
  name: dave
  
  apiGroup: rbac.authorization.k8s.io
  
  roleRef:
  
  kind: ClusterRole
  
  name: secret-reader
  
  apiGroup: rbac.authorization.k8s.io
  
  使用 ClusterRoleBinding 可以对整个集群中的所有命名空间资源权限进行授权;以下 ClusterRoleBinding 示例展示了授权 manager 组内所有用户在全部命名空间中对 secrets 进行访问
  
  # This cluster role binding allows anyone in the www.yongshiyule178.com"manager" group to read secrets in any namespace.
  
  kind: ClusterRoleBinding
  
  apiVersion: rbac.authorization.k8s.io/v1beta1
  
  metadata:
  
  name: read-secrets-global
  
  subjects:
  
  - kind: Group
  
  name: manager
  
  apiGroup: rbac.authorization.k8s.io
  
  roleRef:
  
  kind: ClusterRole
  
  name: secret-reader
  
  apiGroup: rbac.authorization.k8s.io
  
  限制dashboard 用户权限
  
  有了上面的理论基础,我们就可以来新建一个用户,为该用户指定特定的访问权限了,比如我们要实现以下功能:
  
  新增一个新的用户tyler(tyler.yml)
  
  该用户只能对命名空间kube-system下面的pods和deployments进行管理
  
  首先,我们先创建这个ServiceAccount
  
  kubectl create sa tyler -n kube-system
  
  然后我们新建一个角色role-tyler(role-tyler.yml)
  
  kind: Role
  
  apiVersion: rbac.authorization.k8s.io/v1
  
  metadata:
  
  namespace: kube-system
  
  name: role-tyler
  
  rules:
  
  - apiGroups: [""]
  
  resources: ["pods"www.xingtuyLgw.com]
  
  verbs: ["get",www.changjianyl.com "watch", "list"]
  
  - apiGroups: ["extensions", "apps"]
  
  resources: ["deployments"]
  
  verbs: ["get", "list"www.yifayule2d.com, "watch", "create", www.yifa5yl.com"update", "patch", "delete"]
  
  注意上面的rules规则:管理pods和deployments的权限。
  
  然后我们创建一个角色绑定,将tyler用户绑定到role-tyler角色,这样用户就拥有了角色的权限.
  
  执行命令创建文件
  
  $ kubect create -f tyler.yml
  
  $ kubect create -f role-tyler.yml
  
  前面一节我们使用的是命令来创建角色和已有的role绑定,这做方法简单快捷,但是不便于像这里一样进行复杂的权限编排操作,也不便于版本管理.更为复杂的权限编排建议使用yml声明式的方式创建.
  
  使用创建的token登陆
  
  我们前面说过,某一用户的secret名称为用户名-token-随机字符串格式.我们可以使用kubectl describe secret secret名称 -n=kube-system的方式查看secret,然后把token复制到dashboard登陆页的token里就可以登陆了.

© 著作权归作者所有

SEOwhywhy
粉丝 8
博文 152
码字总数 335019
作品 0
私信 提问
CentOS7环境部署kubenetes1.12版本五部曲之四:安装dashboard

版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boling_cavalry/article/details/83715479 本文是《CentOS7环境部署kubenetes1.12版本五部曲》系列的第四篇,前面的实站已经...

博陵精骑
2018/11/04
0
0
kubernetes RBAC实战 kubernetes 用户角色访问控制,kubectl配置生成

kubernetes RBAC实战 环境准备 先用kubeadm安装好kubernetes集群,包地址在此 好用又方便,服务周到,童叟无欺 本文目的,让名为devuser的用户只能有权限访问特定namespace下的pod 命令行kub...

xiaomin0322
2018/09/07
14
0
CentOS7环境安装Kubernetes四部曲之三:添加节点

本文是《CentOS7环境安装Kubernetes四部曲》的第三篇,在前面两篇我们先将实战用的机器做统一处理,再完成rancher的安装,并且将Kubernetes的master节点准备完毕,本章我们将一台机器作为nod...

boling_cavalry
2018/03/20
0
0
kubernetes-dashboard部署

背景 前面介绍了kubernetes集群部署,如果想更直观地管理和监控k8s集群状况,kubernets-dashboard是一个比较大众的方式。dashboard提供了一个UI界面,使我们可以在页面上查看kubernetes的集群...

icenycmh
2018/06/26
0
0
Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)

0、前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1、部署master组件 master 服务器的组件有:kube-...

如痴如醉
01/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Navicat 快捷键

操作 结果 ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中的sql语句 F6 打开一个mysql命令行窗口 ctrl+l 删除一行 ...

低至一折起
今天
6
0
PyTorch入门笔记一

张量 引入pytorch,生成一个随机的5x3张量 >>> from __future__ import print_function>>> import torch>>> x = torch.rand(5, 3)>>> print(x)tensor([[0.5555, 0.7301, 0.5655],......

仪山湖
今天
5
0
OSChina 周二乱弹 —— 开发语言和语言开发的能一样么

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌:#今日歌曲推荐# 分享The Score的单曲《Revolution》 《Revolution》- The Score 手机党少年们想听歌,请使劲儿戳(这里) @批判派...

小小编辑
今天
2.8K
19
oracle ORA-39700: database must be opened with UPGRADE option

ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00704: bootstrap process failure ORA-39700: database must be opened with UPGRADE option 进程 ID: 3650 会话 ID: 29......

Tank_shu
今天
3
0
分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部