Serviceaccount

news2024/11/25 11:45:18

K8S鉴权

目录

K8S鉴权

什么是RBAC

K8S中的RBAC

角色

角色绑定

主体(subject)

角色(Role和ClusterRole)

集群内置权限

cluster-admin admin edit view

system开头的y用户

 演示

参考


k8s集群相关所有的交互都通过apiserver来完成,对于这样集中式管理的系统来说,权限管理尤其重要,在1.5版的时候引入了RBAC(Role Base Access Control)的权限控制机制

启用RBAC,需要在 apiserver 中添加参数–authorization-mode=RBAC,如果使用的kubeadm安装的集群,1.6+版本都默认开启了RBAC。

所以基本上现在遇到的,都会是RBAC方式校验权限,而权限则是我们对于攻击的一大重点,权限提升,绕过,窃取凭证。

主要将rbac,如果想了解更多的鉴权方案,可以看Kubernetes 认证 _ Kubernetes(K8S)中文文档_Kubernetes中文社区

什么是RBAC

简单就如下所示,给谁分配什么权限,这是大家经常在后台管理系统遇到的

在这里插入图片描述

K8S中的RBAC

简单来说,RBAC如下所示,对于kubectl使用普通用户来访问,而对于K8s就如下所示,在pod内,也就是容器内访问使用serviceaccount,而在主机节点使用普通用户,这就是我们的主体,也就是上列的张三,李四

那么在k8s中,如何进行上述的动作呢,就是通过下列方式,定义一个角色,然后绑定到角色就好,在k8s中是通过下列三类方式操作的

角色

Role:授权特定命名空间的访问权限
ClusterRole:授权所有命名空间的访问权限


角色绑定

RoleBinding:将角色绑定到主体(即subject)
ClusterRoleBinding:将集群角色绑定到主体


主体(subject)

User:用户
Group:用户组
ServiceAccount:服务账号
 

角色(Role和ClusterRole)

可以通过下列yaml来配置一个Role

cat >Role-001.yaml<<EOF
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: default
  name: pod-role
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["pods"]
  verbs: ["get", "watch", "list"]
EOF
$ kubectl apply -f Role-001.yaml
$ kubectl get role -n default
$ kubectl describe role pod-role -n default

可以通过下列yaml来配置一个集群角色

cat >ClusterRole-001.yaml<<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pod-clusterrole
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]
EOF
$ kubectl apply -f ClusterRole-001.yaml
$ kubectl get clusterrole pod-clusterrole
$ kubectl describe clusterrole pod-clusterrole

其中

verb有如下设置

“get”, “list”, “watch”, “create”, “update”, “patch”, “delete”, “exec”

resource有如下设置

“services”, “endpoints”, “pods”,“secrets”,“configmaps”,“crontabs”,“deployments”,“jobs”,“nodes”,“rolebindings”,“clusterroles”,“daemonsets”,“replicasets”,“statefulsets”,“horizontalpodautoscalers”,“replicationcontrollers”,“cronjobs”

apiGroup有如下设置

“”,“apps”, “autoscaling”, “batch”

集群内置权限

cluster-admin admin edit view

cluster-admin  超级管理员,对集群所有权限,和linux下面root一样(在部署dashboard的时候,先创建sa,然后将sa绑定到角色cluster-admin,最后获取到token,这就使用了内置的cluster-admin )
admin   主要用于授权命名空间所有读写权限(针对于某个命名空间)
edit   允许对命名空间大多数对象读写操作,不允许查看或者修改角色、角色绑定。
view 允许对命名空间大多数对象只读权限,不允许查看角色、角色绑定和Secret
 

system开头的y用户

以system开头的用户都为k8s内置用户,

serviceaccount

$ cat >RoleBinding-ServiceAccount-001.yaml<<EOF
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: default
  name: role001
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["pods"]
  verbs: ["get", "watch", "list"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rb001
  namespace: default
subjects:
- kind: ServiceAccount
  name: lisi
  namespace: default
roleRef:
  kind: Role
  name: role001
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: lisi
  namespace: default
EOF

 演示

以为能够创建pod的权限来演示

参考

k8s之service account_serviceaccount_分享放大价值的博客-CSDN博客

九析帶你用 curl 輕鬆完爆 k8s apiserver - JavaShuo

kubernetes 开发必须要知道的知识点—— API Group_k8s apigroups_random_w的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/401395.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go 内置运算符 if for switch

算数运算符fmt.Println("103", 103) //103 13 fmt.Println("10-3", 10-3) //10-3 7 fmt.Println("10*3", 10*3) //10*3 30 //除法注意&#xff1a;如果运算的数都是整数&#xff0c;那么除后&#xff0c;去掉小数部分&#xff0c;保留整数部分 f…

redis Big key (俗称大key)

一、什么是Big Key? 大key&#xff0c;其实不是说比较大的主键&#xff0c;而是值比较大的key。key往往是程序可以自行设置的&#xff0c;value往往不受程序控制&#xff0c;因此可能导致value很大。 redis中这些Big Key对应的value值很大&#xff0c;在序列化/反序列化过程中…

SAP MM学习笔记5-SAP中的移动类型实例,对应收货入库以及退货之后的各种情况

对应现实的情况&#xff0c;SAP中有各种各样的收货模式。在SAP中使用移动Type来对应这些情况。 最常用的就是 移动Type 101 收货。没有意外情况&#xff0c;就是正常的收货。 以下是我调查及验证的结果&#xff0c;如果有错误&#xff0c;请指正&#xff0c;谢谢。 移动Type…

腾讯云企业网盘2.5版本全新发布啦!!!

腾讯云企业网盘又又又更新啦&#xff01;本期重点打磨管理协同、企业安全守护能力&#xff0c;同时也不断强化自身产品体验&#xff0c;助力企业高效办公~那么&#xff0c;此次更新具体有什么安全可靠的新功能呢&#xff1f;今天就带大家一起解锁~01协同管理&#xff0c;提升工…

【网络】http协议

&#x1f941;作者&#xff1a; 华丞臧. &#x1f4d5;​​​​专栏&#xff1a;【网络】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449; LeetCode刷题网站 文章…

C/C++ 操作ini文件(SinpleIni 跨平台库)

最近在学习时&#xff0c;发现自己还不会操作ini文件&#xff0c;想着以前工作时接触到的项目或多或少都要用到ini文件去保存初始化程序的数据&#xff1b;所以赶紧去网上搜索以下C/C操作ini文件都有些什么库可以玩玩&#xff1b;搜索到有&#xff1a; 1. inih&#xff1a;这是…

Dubbo原理简介

Dubbo缺省协议采用单一长连接和NIO异步通讯&#xff0c;适合于小数据量大并发的服务调用&#xff0c;以及服务消费者机器数远大于服务提供者机器数的情况。 作为RPC&#xff1a;支持各种传输协议&#xff0c;如dubbo,hession,json,fastjson&#xff0c;底层采用mina,netty长连接…

SAP 分析云 2023.03 版新功能抢先看

本文介绍了 SAP 分析云2023.03版本的新功能。对于 SAP 分析云季度发布周期 (QRC) 客户&#xff0c;此版本及其功能将作为 QRC 2023 年第2季度版本的一部分提供。本版本主要在仪表盘和故事设计、数据集成、企业计划方面进行了功能更新&#xff0c;来和阿拓一起看看吧&#xff01…

Hive---窗口函数

Hive窗口函数 其他函数: Hive—Hive函数 文章目录Hive窗口函数开窗数据准备建表导入数据聚合函数window子句LAG(col,n,default_val) 往前第 n 行数据LEAD(col,n, default_val) 往后第 n 行数据ROW_NUMBER() 会根据顺序计算RANK() 排序相同时会重复&#xff0c;总数不会变DENSE…

C#要点技术(一) - List 底层源码剖析

1。 ## 常用组件底层代码解析List 底层代码剖析List是一个C#中最常见的可伸缩数组组件&#xff0c;我们常常用它来替代数组&#xff0c;因为它是可伸缩的&#xff0c;所以我们在写的时候不用手动去分配数组的大小。甚至有时我们也会拿它当链表使用。那么到底它的底层是怎么编写…

将Quazip编译成基于32位release版的库时报错的解决方案

开发环境&#xff1a;Win10 Qt5.9.9 注意&#xff1a;阅读本篇文章前&#xff0c;首先阅读Quazip的编译及使用&#xff0c;保姆级教程。 之前写了如何编译Quazip的库&#xff0c;当时是使用MSV2015-64-release来编译的&#xff0c; 具体编译流程可参考之前的文章Quazip的编译及…

3句代码,实现自动备份与版本管理

前言&#xff1a;服务器开发程序、测试版本等越来越多&#xff0c;需要及时做好数据的版本管理和备份&#xff0c;作为21世界的青年&#xff0c;希望这些事情都是可以自动完成&#xff0c;不止做了数据备份&#xff0c;更重要的是做好了版本管理&#xff0c;让我们可以追溯我们…

用Go快速搭建IM即时通讯系统

WebSocket的目标是在一个单独的持久连接上提供全双工、双向通信。在Javascript创建了Web Socket之后&#xff0c;会有一个HTTP请求发送到浏览器以发起连接。在取得服务器响应后&#xff0c;建立的连接会将HTTP升级从HTTP协议交换为WebSocket协议。由于WebSocket使用自定义的协议…

深度学习部署笔记(十): CUDA RunTime API-2.2流的学习

1. 流的定义 流&#xff08;Stream&#xff09;是一个基于上下文&#xff08;Context&#xff09;的任务管道抽象&#xff0c;是一组由GPU依次执行的CUDA操作序列&#xff0c;其中每个操作可能会使用或产生数据。在一个上下文中可以创建多个流&#xff0c;每个流都拥有自己的任…

Kettle体系结构及源码解析

介绍 ETL是数据抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;、装载&#xff08;Load&#xff09;的过程。Kettle是一款国外开源的ETL工具&#xff0c;有两种脚本文件transformation和job&#xff0c;transformation完成针对数据的基础转换&…

全网最详细的(CentOS7)MySQL安装

一、环境介绍 操作系统&#xff1a;CentOS 7 MySQL&#xff1a;5.7 二、MySQL卸载 查看软件 rpm -qa|grep mysql 卸载MySQL yum remove -y mysql mysql-libs mysql-common rm -rf /var/lib/mysql rm /etc/my.cnf 查看是否还有 MySQL 软件&#xff0c;有的话继续删除。 软件卸…

单线程的 javascript 如何管理任务

要怎么理解 JavaScript 是单线程这个概念呢&#xff1f;大概需要从浏览器来说起。 JavaScript 最初被设计为浏览器脚本语言&#xff0c;主要用途包括对页面的操作、与浏览器的交互、与用户的交互、页面逻辑处理等。如果将 JavaScript 设计为多线程&#xff0c;那当多个线程同时…

Excel职业版本(4)

图表 图表基本结构 组成元素 图表的分类 柱状图 介绍&#xff1a;在竖直方向比较不同类型的数据 适用场景&#xff1a;用于二维数据集&#xff0c;对于不同类型的数据进行对比&#xff0c;也可用于同一类型的数据在不同的时间维度的数据对比&#xff0c;通过柱子的高度来反…

GeniE 实用教程(五)荷载与边界

目 录一、前言二、位移边界三、工况与组合3.1 荷载工况3.2 荷载组合四、自重/设备/隔间4.1 结构自重4.2 设备荷载4.3 隔间负载五、显式荷载六、环境荷载6.1 点位信息 / Location6.2 波浪数据 / Wave6.2.1 规则波数据6.2.2 一般波数据6.3 洋流廓线 / Current Profile6.4 风轮廓线…

【物联网低功耗转接板】+机智云开发体验之遥控灯

在本文中&#xff0c;通过设计一个智能遥控的小灯来介绍一下使用机智云平台的开发过程和体验。一、硬件设计设计硬件电路之前&#xff0c;我先查阅了GE211的规格书&#xff0c;发现预留接口是5V电平。翻找了一下手头的板卡&#xff0c;发现只有一块arduino UNO是5V电平的。因此…