当前位置: 首页 > news >正文

kubernetes安全框架RBAC

目录 

一、Kubernetes 安全概述

二、鉴权、授权和准入控制

2.1 鉴权(Authentication)

2.2 授权(Authorization)

2.3 准入控制

三、基于角色的权限访问控制: RBAC

四、案例:为指定用户授权访问不同命名空间权限


一、Kubernetes 安全概述


K8S安全控制框架主要由下面3个阶段进行控制,每一个阶段都 支持插件方式,通过API Server配置来启用插件。

1. Authentication (鉴权)

2. Authorization (授权)

3. Admission Control (准入控制)


二、鉴权、授权和准入控制


2.1 鉴权(Authentication)

客户端要想访问K8s集群API Server,一般需要证书、 Token或者用户名+密码; 如果Pod访问,需要ServiceAccount

三种客户端身份认证:

• HTTPS 证书认证:基于CA证书签名的数字证书认证

• HTTP Token认证:通过一个Token来识别用户

• HTTP Base认证:用户名+密码的方式认证

2.2 授权(Authorization)

K8s目前支持多种授权策略,目前企业主要使用RBAC (Role-Based Access Control,基于角色的访问控制)完成授权工作。

RBAC根据API请求属性,决定允许还是拒绝。

比较常见的授权维度:

• user:用户名

• group:用户分组

• 资源,例如pod、 deployment

• 资源操作方法: get , list , create , update , patch ,watch , delete

• 命名空间

• API组

2.3 准入控制


Adminssion Control实际上是一个准入控制器插件列表,发送到API Server的请求都需要经过这个列表中的每个准入控制器插件的检查, 检查不通过,则拒绝请求。


三、基于角色的权限访问控制: RBAC


RBAC (Role-Based Access Control,基于角色的访问控制),允许通过Kubernetes API动态配置策略。

角色

• Role:授权特定命名空间的访问权限

• ClusterRole:授权所有命名空间的访问权限

角色绑定

• RoleBinding:将角色绑定到主体(即subject)

• ClusterRoleBinding:将集群角色绑定到主体

主体(subject)

• User:用户

• Group:用户组

• ServiceAccount:服务账号


四、案例:为指定用户授权访问不同命名空间权限


示例:为kangll用户授权default命名空间Pod读取权限

1. 用K8S CA签发客户端证书

2. 生成kubeconfig授权文件

3. 创建RBAC权限策略

集群信息

角色

IP

组件

k8s-master1

192.168.2.119

apiServer , controller, schedule, etcd

k8s-node1

192.168.2.118

kubelet , kube-proxy, docker ,etcd

k8s-node2

192.168.2.210

kubelet , kube-proxy, docker ,etcd

安装cfssl 工具,用于生成证书

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfochmod +x  /usr/local/bin/cfssl
chmod +x  /usr/local/bin/cfssljson
chmod +x  /usr/bin/cfssl-certinfo

运行如下命令,生成证书

cat > ca-config.json <<EOF
{"signing": {"default": {"expiry": "87600h"},"profiles": {"kubernetes": {"usages": ["signing","key encipherment","server auth","client auth"],"expiry": "87600h"}}}
}
EOFcat > kangll-csr.json <<EOF
{"CN": "kangll","hosts": [],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","ST": "BeiJing","L": "BeiJing","O": "k8s","OU": "System"}]
}
EOFcfssl gencert -ca=/etc/kubernetes/pki/ca.crt -ca-key=/etc/kubernetes/pki/ca.key -config=ca-config.json -profile=kubernetes kangll-csr.json | cfssljson -bare kangll

如下图:

生成kubeconfig授权文件, 运行如下命令:

kubectl config set-cluster kubernetes \--certificate-authority=/etc/kubernetes/pki/ca.crt \--embed-certs=true \--server=https://192.168.2.119:6443 \--kubeconfig=kangll.kubeconfig# 设置客户端认证
kubectl config set-credentials kangll \--client-key=kangll-key.pem \--client-certificate=kangll.pem \--embed-certs=true \--kubeconfig=kangll.kubeconfig# 设置默认上下文
kubectl config set-context kubernetes \--cluster=kubernetes \--user=kangll \--kubeconfig=kangll.kubeconfig# 设置当前使用配置
kubectl config use-context kubernetes --kubeconfig=kangll.kubeconfig

 运行rbac.yaml, 创建RBAC权限策略

运行rbac.yaml, 创建RBAC权限策略 

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:namespace: defaultname: pod-reader
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "watch", "list"]---kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: read-podsnamespace: default
subjects:
- kind: Username: kangllapiGroup: rbac.authorization.k8s.io
roleRef:kind: Rolename: pod-readerapiGroup: rbac.authorization.k8s.io

kangll用户成功的读取 pod 信息

没有delete pod 权限 报错

感谢点赞和关注!

相关文章:

kubernetes安全框架RBAC

目录 一、Kubernetes 安全概述 二、鉴权、授权和准入控制 2.1 鉴权(Authentication) 2.2 授权(Authorization) 2.3 准入控制 三、基于角色的权限访问控制&#xff1a; RBAC 四、案例&#xff1a;为指定用户授权访问不同命名空间权限 一、Kubernetes 安全概述 K8S安全控…...

【大数据面试题大全】大数据真实面试题(持续更新)

【大数据面试题大全】大数据真实面试题&#xff08;持续更新&#xff09; 1&#xff09;Java1.1.Java 中的集合1.2.Java 中的多线程如何实现1.3.Java 中的 JavaBean 怎么进行去重1.4.Java 中 和 equals 有什么区别1.5.Java 中的任务定时调度器 2&#xff09;SQL2.1.SQL 中的聚…...

Linux [常见指令 (1)]

Linux常见指令 ⑴ 1. 操作系统1.1什么事操作系统1.2选择指令的原因 2.使用工具3.Linux的指令操作3.1mkdir指令描述:用法:例子 mkdir 目录名例子 mkdir -p 目录1/ 目录2/ 目录3 3.2 touch指令描述:用法:例子 touch 文件 3.2pwd指令描述:用法:例子 pwd 3.4cd指令描述:用法:例子 c…...

进程控制下篇

进程控制下篇 1.进程创建 1.1认识fork / vfork 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程 #include<unistd.h> int main() {pid_t i fork;return 0; }当前进程调用fork&#xff0c;…...

PS学习笔记(零基础PS学习教程)

很多新手学习PS不知从何下手&#xff0c;做设计的第一阶段肯定是打牢基础&#xff0c;把工具用熟练&#xff1b;本期特别为大家整理了PS入门的学习笔记&#xff0c;把每个工具的用法整理了下来&#xff0c;在使用过程中有哪里不清楚的可以翻看来看看~ 一、ps的工作界面的介绍 …...

如何构建数据血缘系统

1、明确需求&#xff0c;确定边界 在进行血缘系统构建之前&#xff0c;需要进行需求调研&#xff0c;明确血缘系统的主要功能&#xff0c;从而确定血缘系统的最细节点粒度&#xff0c;实体边界范围。 例如节点粒度是否需要精确到字段级&#xff0c;或是表级。一般来说&#x…...

IPsec中IKE与ISAKMP过程分析(主模式-消息3)

IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息1&#xff09;_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息2&#xff09;_搞搞搞高傲的博客-CSDN博客 阶段目标过程消息IKE第一阶段建立一个ISAKMP SA实现通信双发的身份鉴别和密钥交换&…...

深度学习技巧应用10-PyTorch框架中早停法类的构建与运用

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用10-PyTorch框架中早停法类的构建与运用,文章将介绍深度学习训练过程中的一个重要技巧—早停法,以及如何在PyTorch框架中实现早停法。文章将从早停法原理和实践出发,结合实际案例剖析早停法的优缺点及在PyTorch中的应…...

Linux文件系统权限

目录标题 文件权限文件和目录的一般权限文件的权限针对三类对象进行定义文件和目录中&#xff0c;r、w、x的作用 设置文件和目录的一般权限修改文件或目录的权限—chmod(change mode)命令权限值的表示方法—使用3位八进制数表示权限值的表示方法—使用字符串表示修改文件或目录…...

ctfshow之_萌新web1至web7

一、访问在线靶场ctfshow ctf.showhttps://ctf.show/challenges如下图所示&#xff0c;进入_萌新赛的web1问题&#xff1a; 如上图所示&#xff0c;页面代码提示id1000时&#xff0c;可以查询到flag&#xff0c;进行如下尝试&#xff1a; 如下图所示&#xff0c;传入参数id1时…...

HPDA的资料

HPDA&#xff0c;英文全称为High Performance Data Analysis&#xff0c;直译为高性能数据分析。 适用场景 机器学习大数据分析 技术挑战 大量的元数据操作数据的同步随机读写高IOPOS的小IO请求高带宽的文件请求 技术关键字 存算分离移动计算大I/O直通&#xff0c;小I/O聚…...

项目管理软件可以用来做什么?这篇文章说清楚了

项目管理软件是用来干嘛的&#xff0c;就得看对项目的理解。项目是为创造独特的产品、服务或成果而进行的临时性工作。建造一座大楼可以是一个项目&#xff0c;进行一次旅游活动、日常办公活动、期末考试复习等也都可以看成一个项目。 项目管理不善会导致项目超时、超支、返工、…...

ETL工具 - Kettle 转换算子介绍

一、Kettle 转换算子 上篇文章对 Kettle 中的输入输出算子进行了介绍&#xff0c;本篇文章继续对转换算子进行讲解。 下面是上篇文章的地址&#xff1a; ETL工具 - Kettle 输入输出算子介绍 转换是ETL里面的T&#xff08;Transform&#xff09;&#xff0c;主要做数据转换&am…...

界面设计的读书笔记

所见即所得&#xff0c;属于绝大多数的人。 所想即所想&#xff0c;属于极少数的人。 当复杂度&#xff0c;超出了大脑的负荷&#xff0c;人会觉得很累&#xff0c;直到放弃追求。 地图的显示&#xff0c;必须有足够多的描述性的数据。 点信息 &#xff1a;标签&#xff0c;位…...

C#底层库--自定义进制转换器(可去除特殊字符,非Convert.ToString方式)

系列文章 C#底层库–程序日志记录类 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/124187709 C#底层库–MySQLBuilder脚本构建类&#xff08;select、insert、update、in、带条件的SQL自动生成&#xff09; 本文链接&#xff1a;https://blog.csd…...

Doris(24):Doris的函数—聚合函数

1 APPROX_COUNT_DISTINCT(expr) 返回类似于 COUNT(DISTINCT col) 结果的近似值聚合函数。 它比 COUNT 和 DISTINCT 组合的速度更快,并使用固定大小的内存,因此对于高基数的列可以使用更少的内存。 select city,approx_count_distinct(user_id) from site_visit group by c…...

干货! ICLR:将语言模型绑定到符号语言中个人信息

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; ╱ 作者简介╱ 承洲骏 上海交通大学硕士生&#xff0c;研究方向为代码生成&#xff0c;目前在香港大学余涛老师的实验室担任研究助理。 个人主页&#xff1a;http://blankcheng.github.io 谢天宝 香港大学一年级…...

Windows安装mariadb,配置环境变量(保姆级教学)

软件下载地址&#xff1a;https://mariadb.com/downloads/ 1.双击下载好的软件 2.点击next 3.勾选我同意&#xff0c;点击next 4.这里那你可以设置你要安装的路径&#xff0c;也可以使用默认的&#xff0c;之后点击next 5.如图所示&#xff0c;设置完点击next 6.接下来就默…...

华为OD机试 - 积木最远距离(Python)

题目描述 小华和小薇一起通过玩积木游戏学习数学。 他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同。 小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数字相同且所处位置最远的2块积木块,计算他们的距离,小薇请你帮忙替她解决这个问题。 输入描…...

关于对于springcloud中的注册中心和consume消费者和provier服务者之间的关系理解

关于对于springcloud中的注册中心和consume消费者和provier服务者之间的关系理解 pringCloud provider&#xff08;服务提供方&#xff09; consumer&#xff08;服务调用方&#xff09; server&#xff08;注册中心&#xff09; 运行原理 Provider 第一步 provider注册到se…...

AI 辅助 CAPL 脚本编写实战

专栏&#xff1a;《AI 汽车电子测试实战》第 6 篇 作者&#xff1a;一线汽车电子测试工程师 适合人群&#xff1a;CANoe 测试工程师、想学习 CAPL 的新手、想提升脚本效率的测试人员开篇&#xff1a;CAPL 脚本的痛点 CAPL&#xff08;Communication Access Programming Languag…...

RVC 虚拟环境管理实战指南:解决三类核心运维问题

RVC 虚拟环境管理实战指南&#xff1a;解决三类核心运维问题 【免费下载链接】rvc RVC is a Linux console UI for vSphere, built on the RbVmomi bindings to the vSphere API. 项目地址: https://gitcode.com/gh_mirrors/rvc/rvc RVC&#xff08;Ruby vSphere Consol…...

STM32与W25Q64:构建自定义上位机字库烧录系统的实践指南

1. 为什么需要自定义字库烧录系统 在嵌入式显示项目中&#xff0c;中文字库的处理一直是个头疼的问题。我去年接手一个工业HMI项目&#xff0c;客户要求设备能显示繁简体中文、日文和部分特殊符号。最初尝试用SD卡加载字库&#xff0c;结果现场有30%的设备因为SD卡接触不良导致…...

java毕业设计基于springboot+vue的自贡恐龙博物馆门户系统

前言 该系统采用前后端分离 的架构模式&#xff0c;后端使用Spring Boot框架构建&#xff0c;前端则使用Vue.js等框架来构建友好的用户界面。这种架构模式使得开发团队可以独立进行前后端的开发与维护&#xff0c;从而提高开发效率。一、项目介绍 开发语言&#xff1a;Java 框架…...

步进电机发热严重?4相5线电机停转保护的3个关键细节

步进电机发热严重&#xff1f;4相5线电机停转保护的3个关键细节 最近在调试一个自动化设备时&#xff0c;遇到了4相5线步进电机异常发热的问题。电机在运行半小时后表面温度竟达到60℃以上&#xff0c;这不仅影响设备寿命&#xff0c;还可能导致驱动芯片损坏。经过反复测试和排…...

【笔试真题】- 小红书-2026.03.25-第二套

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围在线刷题 bishipass.com 小红书-2026.03.25-第二套 题目一:A先生的用户数据整理 把每条记录的三个字段按类型识别出来即可:带小数点的是经验值,全小写字符串是用户名,剩下的整数就…...

【day63】

以前有个孩子&#xff0c;他分分钟都在碎碎念。不过&#xff0c;他的念头之间是有因果关系的。他会在本子里记录每一个念头&#xff0c;并用箭头画出这个念头的来源于之前的哪一个念头。翻开这个本子&#xff0c;你一定会被互相穿梭的箭头给搅晕&#xff0c;现在他希望你用程序…...

玩大型游戏用什么主板好:2026年市场格局与技术趋势解析

2026年第一季度&#xff0c;全球游戏级电脑主板市场正经历一场深刻的价值重塑。据行业研究机构数据显示&#xff0c;2026年全球游戏级主板市场规模预计将达到127.5亿美元&#xff0c;年复合增长率保持在8.30%的稳健水平。在这一轮增长周期中&#xff0c;单纯依靠硬件堆砌的时代…...

nli-distilroberta-base保姆级教学:从镜像拉取→端口映射→API测试全流程

nli-distilroberta-base保姆级教学&#xff1a;从镜像拉取→端口映射→API测试全流程 1. 项目概述 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)Web服务&#xff0c;专门用于判断两个句子之间的逻辑关系。这个轻量级模型能够快速准确地分析句子对&…...

LobeChat效果对比:开源框架与官方ChatGPT的对话体验

LobeChat效果对比&#xff1a;开源框架与官方ChatGPT的对话体验 1. 引言&#xff1a;为什么需要对比开源与官方方案&#xff1f; 在AI聊天机器人领域&#xff0c;开发者常常面临一个关键选择&#xff1a;使用官方提供的ChatGPT服务&#xff0c;还是部署开源框架自行搭建&…...