转载地址:https://www.kuboard.cn/learning/k8s-advanced/sec/rbac/auth-namespace.html

前提条件

  • 已安装 Kuboard v3,版本不低于 v3.1.1.0

两阶段授权

Kuboard v3 中,采用两阶段授权的方式控制用户/用户组在 Kuboard / Kubernetes 中的权限。

第一阶段授权,控制当前用户:

  • 可以操作哪个集群
  • 以什么样的身份操作该集群

第二阶段授权,控制用户:

  • 在集群内具备什么样的权限

本文描述了如何在 Kuboard 界面中为用户组 mygroup 授权,允许该用户组中的用户以 admin 角色访问集群 k8s-21 中的 default 名称空间。使用该用户组下 test 用户登录 Kuboard 后,首页界面如下所示:

假设用户 test 以及用户组 mygroup 已经实现创建好





  • test 用户所查询到的集群列表结果为空;
  • 点击右上角的用户名,可以显示当前登录用户的基本信息以及其所属的用户组;

第一阶段授权

  • 使用管理员账号登录 Kuboard 首页,并导航到 用户与权限 -> 角色 -> sso-user,如下图所示:

sso-user 为安装 Kuboard 时默认创建的第一阶段授权的角色,该角色具备 KubernetesCluster.act-as-impersonate-user 的 GET 权限,允许与此角色关联的用户/用户组以 使用 ServiceAccount kuboard-admin 扮演 的身份操作 Kubernetes 集群。

  • 切换到 关联用户/用户组(集群级别) 标签页,并点击 创建角色绑定(集群级别)



  • 此时,用 test 账号登录 Kuboard 首页,此时用户已经可以在 Kubernetes 集群列表中查看到被授权的 k8s-21 这个集群,如下图所示:

点击该集群,弹出对话框中:

-- 可以激活 使用 ServiceAccount kuboard-admin 扮演 test 这个选项

-- 名称空间列表中的所有名称空间都为不可访问的状态

第二阶段授权

  • 以管理员用户登录到 Kuboard 首页,点击集群列表中的集群 k8s-21,进入集群页面,并切换到 访问控制 -> 第一阶段授权 页面,如下图所示:

在此页面中,可以查看到该集群已经授权给 mygroup 用户组(操作步骤参考前文)

  • 切换到 访问控制 -> 第二阶段授权 -> 用户组,如下图所示:

点击图中 为新 Group 授权 按钮,并填入 mygroup 作为被授权的用户组名称,然后点击确定按钮,如下图所示:

  • 在 Group 详情页面,切换到 default 名称空间,并点击 RoleBinding 后面的 添加 按钮,如下图所示:

在弹出对话框中,关联的 ClusterRole/Role 字段选择 ClusterRole 、admin,并点击保存按钮,如下图所示:

点击保存后,可以看到该用户组在 default 名称空间中的权限,如下图所示:

进入名称空间

完成前述 第一阶段授权、第二阶段 两个步骤后,以 test 用户登录 Kuboard 界面,并点击首页的 k8s-21 集群,在弹出框中可以看到 default 名称空间已经变成了已授权的状态,点击 default 可以进入该名称空间,如下图所示:

授予用户/用户组访问 Kubernetes 的一个名称空间的更多相关文章

  1. kubernetes之创建基于名称空间的内存和cpu限额示例

    系列目录 首先我们创建一个名称空间 kubectl create namespace quota-mem-cpu-example 创建资源配额 apiVersion: v1 kind: Resourc ...

  2. django路由匹配、反向解析、无名有名反向解析、路由分发、名称空间

    目录 django请求生命周期流程图 1.Django请求的生命周期的含义 2.Django请求的生命周期图解及流程 3.Django的请求生命周期(分布解析) 路由层 1.路由匹配 2.path转换 ...

  3. Python 的名称空间和作用域

    最开始对名称空间的了解是在学习函数的时候,那时候知道了作用域的查找顺序,以及全局名称空间和局部名称空间,产生疑惑的时候为学递归的时候,那时候还没有名称空间这个概念,只知道递归有个最大深度,那时候以后递 ...

  4. Python名称空间与作用域

    什么是名称空间? 比如下图的长方形代表内存,在这个内存里我要设置一个变量100,那么这个变量得有个门牌号,就叫他a吧,但其实变量不是这么存储的,他其实的存储方式是这样的,他会有一个名称空间,这个名称空 ...

  5. C++ primer plus读书笔记——第9章 内存模型和名称空间

    第9章 内存模型和名称空间 1. 头文件常包含的内容: 函数原型. 使用#define或const定义的符号常量. 结构声明. 类声明. 模板声明. 内联函数. 2. 如果文件名被包含在尖括号中,则C ...

  6. Django框架路由分发-名称空间

    目录 一:路由分发 1.路由分发简介 2.总路由分发配置 3.总路由终极配置(不需要导应用路由,直接点应用即可) 4.子路由配置 二:名称空间 1.名称空间应用场景 3.解决方式二>>&g ...

  7. Kubernetes K8S之Pod跨namespace名称空间访问Service服务

    Kubernetes的两个Service(ServiceA.ServiceB)和对应的Pod(PodA.PodB)分别属于不同的namespace名称空间,现需要PodA和PodB跨namespace ...

  8. 利用 awk 统计nginx 中某一个用户的访问次数

    线上总是会遇到攻击,所以就需要分析 access.log 看看那些用户的访问次数不正常,针对这些不正常的用户,要做处理,以 access.log为例说明下怎么统计. 通过 access.log 日志来 ...

  9. 创建一个欢迎 cookie 利用用户在提示框中输入的数据创建一个 JavaScript Cookie,当该用户再次访问该页面时,根据 cookie 中的信息发出欢迎信息。

    创建一个欢迎 cookie 利用用户在提示框中输入的数据创建一个 JavaScript Cookie,当该用户再次访问该页面时,根据 cookie 中的信息发出欢迎信息. <html> & ...

随机推荐

  1. C++学习日记:关于我决定开始学习C++的那些事

    苦恼于Python运行时感人的速度,我决定学习C++. 为了激励我自己好好地学习这门未曾谋面的编程语言,我决定在此开设专栏:C++学习日记.希望在读者们的监督下,我可以早日掌握这门语言.当然,如果那位 ...

  2. AtCoder Beginner Contest 260 E // 双指针 + 差分

    题目传送门:E - At Least One (atcoder.jp) 题意: 给定大小为N的两个数组A,B,求长度分别为1~M的满足以下条件的连续序列数量,条件为: 对于每个i(从1~N),Ai和B ...

  3. salt stack学习笔记

    saltstack运行模式: local master/minion salt ssh saltstack三大功能 远程执行命令 配置管理(状态管理) 云管理 安装: master  salt-mas ...

  4. gotoscan:CMS指纹识别工具

    gotoscan 前言 项目地址 https://github.com/newbe3three/gotoscan 结合自己学习到的Go相关知识,通过实现这个简易的CMS指纹识别工具来锻炼一下自己写代码 ...

  5. 霜皮剥落紫龙鳞,下里巴人再谈数据库SQL优化,索引(一级/二级/聚簇/非聚簇)原理

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_206 举凡后端面试,面试官不言数据库则已,言则必称SQL优化,说起SQL优化,网络上各种"指南"和" ...

  6. Vue ref属性 && props配置项

    1 // # ref属性: 2 // # 1.用来给元素或者子组件注册引用信息(id的替代者) 3 // # 2.应用在html标签上获取的是真实的DOM元素,应用在组件标签上是组件实例对象(vc) ...

  7. BS架构与CS架构

    BS与CS的区别:1.BS是标准规范的,CS的协议自定义:2.BS核心运算都在服务器端,CS客户端和服务器端都可以运算:3.BS只需要部署服务器端,CS需要同时升级客户端和服务器端. CS(Clien ...

  8. Tomcat报错:类XXXServlet不是Servlet 解决方法

    学习servlet 结果对应网页打不开,报错 HTTP状态 500 - 内部服务器错误 类型 异常报告 消息 类HelloServlet不是Servlet ... 根本原因. java.lang.Cl ...

  9. Luogu3243 [HNOI2015]菜肴制作 (拓扑排序)

    题面毒人,其实就是叫你反图跑拓扑 #include <iostream> #include <cstdio> #include <cstring> #include ...

  10. Maven 配置文件如何读取pom.xml的内容

    编写配置文件 配置文件读取pom文件内容用@@的方式 logging: level: cn.sail: @logging.level@ org.springframework: warn config ...