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

K8S学习之基础三十一:k8s中RBAC 的核心概念

Kubernetes (k8s) 中的 RBAC(Role-Based Access Control,基于角色的访问控制)是一种用于管理用户和服务账户对集群资源访问权限的机制。RBAC 允许管理员通过定义角色(Role)和角色绑定(RoleBinding)来精确控制谁可以在哪些资源上执行哪些操作。

RBAC 的核心概念

  1. Role:

    • 定义了一组权限,指定了可以对哪些资源执行哪些操作。

    • Role 是命名空间(Namespace)级别的,即它只适用于特定的命名空间。

      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:namespace: defaultname: pod-reader
      rules:
      - apiGroups: [""] # "" 表示核心 API 组resources: ["pods"]verbs: ["get", "watch", "list"]
      

      这个 Role 允许用户在 default 命名空间中获取、查看和列出 Pod。

  2. ClusterRole:

    • 类似于 Role,但它是集群级别的,适用于整个集群,而不仅仅是某个命名空间。

      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:name: cluster-admin
      rules:
      - apiGroups: [""]resources: ["*"]verbs: ["*"]
      

      这个 ClusterRole 允许用户对所有资源执行所有操作。

  3. RoleBinding:

    • 将 Role 或 ClusterRole 绑定到用户、组或服务账户(ServiceAccount)。

    • RoleBinding 是命名空间级别的,即它只适用于特定的命名空间。

      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:name: read-podsnamespace: default
      subjects:
      - kind: Username: aliceapiGroup: rbac.authorization.k8s.io
      roleRef:kind: Rolename: pod-readerapiGroup: rbac.authorization.k8s.io
      

      这个 RoleBinding 将 pod-reader Role 绑定到用户 alice,允许她在 default 命名空间中读取 Pod。

  4. ClusterRoleBinding:

    • 类似于 RoleBinding,但它是集群级别的,适用于整个集群。

      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:name: cluster-admin-binding
      subjects:
      - kind: Username: adminapiGroup: rbac.authorization.k8s.io
      roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io
      

      这个 ClusterRoleBinding 将 cluster-admin ClusterRole 绑定到用户 admin,允许她对整个集群中的所有资源执行所有操作。

RBAC 的常见操作

  • 创建 Role 和 RoleBinding:

    • 使用 kubectl create rolekubectl create rolebinding 命令可以快速创建 Role 和 RoleBinding。

      kubectl create role pod-reader --verb=get,list,watch --resource=pods
      kubectl create rolebinding read-pods --role=pod-reader --user=alice
      
  • 查看 Role 和 RoleBinding:

    • 使用 kubectl get rolekubectl get rolebinding 命令可以查看现有的 Role 和 RoleBinding。

      kubectl get role -n default
      kubectl get rolebinding -n default
      
  • 删除 Role 和 RoleBinding:

    • 使用 kubectl delete rolekubectl delete rolebinding 命令可以删除 Role 和 RoleBinding。

      kubectl delete role pod-reader -n default
      kubectl delete rolebinding read-pods -n default
      

RBAC 的最佳实践

  1. 最小权限原则:
    • 只授予用户或服务账户完成其任务所需的最小权限。
    • 避免使用过于宽泛的权限,如 cluster-admin,除非确实需要。
  2. 使用命名空间隔离:
    • 将不同的应用或团队分配到不同的命名空间,并使用 Role 和 RoleBinding 来控制权限。
  3. 定期审计权限:
    • 定期检查 Role 和 RoleBinding,确保没有不必要的权限被授予。
  4. 使用 ServiceAccount:
    • 为每个应用或服务创建专用的 ServiceAccount,并为其分配适当的权限,而不是使用默认的 ServiceAccount。

总结

RBAC 是 Kubernetes 中管理访问控制的重要机制,通过定义 Role、ClusterRole、RoleBinding 和 ClusterRoleBinding,管理员可以精确控制用户和服务账户对集群资源的访问权限。遵循最小权限原则和最佳实践,可以有效地提高集群的安全性。

相关文章:

K8S学习之基础三十一:k8s中RBAC 的核心概念

Kubernetes (k8s) 中的 RBAC(Role-Based Access Control,基于角色的访问控制)是一种用于管理用户和服务账户对集群资源访问权限的机制。RBAC 允许管理员通过定义角色(Role)和角色绑定(RoleBinding&#xff…...

二叉树算法题实战:从遍历到子树判断

目录 一、引言 二、判断两棵二叉树是否相同 思路 代码实现 注意点 三、二叉树的中序遍历 思路 代码实现 注意点 四、判断一棵树是否为另一棵树的子树 思路 代码实现 注意点 ​编辑 五、补充 一、引言 作者主页:共享家9527-CSDN博客 作者代码仓库&am…...

第8章 信息安全工程(一)

8.1 信息安全管理 8.1.1 保障要求 网络与信息安全保障体系中的安全管理建设,通常需要满足以下 5 项原则: (1)网络与信息安全管理要做到总体策划,确保安全的总体目标和所遵循的原则。 (2)建立相关组织机构,要明确责任部门&…...

学习threejs,使用MeshFaceMaterial面材质容器

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.MeshFaceMaterial 二…...

Git 实战指南:本地客户端连接 Gitee 全流程

本文将以 Gitee(码云)、系统Windows 11 为例,详细介绍从本地仓库初始化到远程协作的全流程操作 目录 1. 前期准备1.1 注册与配置 Gitee1.2 下载、安装、配置客户端1.3 配置公钥到 Gitee2. 本地仓库操作(PowerShell/Git Bash)2.1 初始化本地仓库2.2 关联 Gitee 远程仓库3. …...

Spring Cloud 中的服务注册与发现: Eureka详解

1. 背景 1.1 问题描述 我们如果通过 RestTamplate 进行远程调用时,URL 是写死的,例如: String url "http://127.0.0.1:9090/product/" orderInfo.getProductId(); 当机器更换或者新增机器时,这个 URL 就需要相应地变…...

通过 SVG 使用 AI 生成理想图片:技术实现与实践指南

文章目录 1. SVG 与 AI 的结合:技术价值2. 技术原理:AI 如何生成 SVG?3. 实现步骤:从需求到图形3.1 定义需求3.2 使用 AI 生成 SVG3.3 验证与调整 4. 代码解析:实现科技感的关键4.1 渐变背景4.2 网格线条4.3 发光六边形…...

【AI学习从零至壹】Pytorch神经⽹络

Pytorch神经⽹络 神经网络简介神经元激活函数 神经网络神经⽹络的⼯作过程前向传播(forward) 反向传播(backward)训练神经⽹络 Pytorch搭建并训练神经⽹络神经⽹络构建和训练过程数据预处理构建模型优化器&提取训练数据训练样本 神经网络简介 神经元 在深度学习中&#x…...

设计模式-对象创建

对象创建 前言1. Factory Method1.1 模式介绍1.2 模式代码1.2.1 问题代码1.2.2 重构代码 1.3 模式类图1.4 要点总结 2. Abstract Factory2.1 模式介绍2.2 模式代码2.2.1 问题代码2.2.2 重构代码 2.3 模式类图2.4 要点总结 3. Prototype3.1 模式介绍3.2 模式代码3.3 模式类图3.4…...

谈谈你对前端工程化的理解,它包含哪些方面

大白话谈谈你对前端工程化的理解,它包含哪些方面 前端工程化其实就是把前端开发变得更规范、更高效、更易于维护的一套方法和流程。就好比你盖房子,不能随便瞎盖,得有设计图纸、施工标准、分工合作,前端工程化也是类似的道理。 项…...

JSON数据格式介绍

2.5 JSON 2.5.1.JSON格式的用途 在开发中凡是涉及到『跨平台数据传输』,JSON格式一定是首选 2.5.2.JSON格式的说明 1.JSON数据两端要么是{},要么是[] {}定义JSON对象[]定义JSON数组 2.JSON对象的格式是:json {key:value,key:value,...,ke…...

java的WeakHashMap可以用来做缓存使用?强软弱虚四种引用对比

在 Java 中,引用(Reference)机制用于管理对象的生命周期和垃圾回收。Java 提供了四种类型的引用:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Refer…...

【AVRCP】Notification PDUs 深入解析与应用

目录 一、Notification PDUs 概述 二、GetPlayStatus:同步查询播放状态 2.1 命令功能与应用场景 2.2 请求格式(CT → TG) 2.3 响应格式(TG → CT) 2.4 注意事项 2.5 协议实现示例(伪代码) 三、RegisterNotification:异步事件订阅 3.1 命令概述 3.2 命令格式 …...

从过拟合到强化学习:机器学习核心知识全解析

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

【MySQL基础-9】深入理解MySQL中的聚合函数

在数据库操作中,聚合函数是一类非常重要的函数,它们用于对一组值执行计算并返回单个值。MySQL提供了多种聚合函数,如COUNT、SUM、AVG、MIN和MAX等。这些函数在数据分析和报表生成中扮演着关键角色。本文将深入探讨这些聚合函数的使用方法、注…...

Lora 中 怎么 实现 矩阵压缩

Lora 中 怎么 实现 矩阵压缩 1. 导入必要的库 import torch import re from datasets import Dataset from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer, \get_cosine_schedule_with_warmup, EarlyStoppingCallback from peft...

MATLAB 控制系统设计与仿真 - 27

状态空间的标准型 传递函数和状态空间可以相互转换,接下来会举例如何有传递函数转成状态空间标准型。 对角标准型 当 G(s)可以写成: 即: 根据上图可知: 约当标准型 当 G(s)可以写成: 即: 根据上图…...

linux 命令 cp

cp 是 Linux 中用于复制文件和目录的命令,基本功能是将源文件或目录复制到目标位置 基本语法 cp [选项] 源文件 目标文件 cp [选项] 源文件1 源文件2 ... 目标目录 常用选项 选项说明-i交互模式(覆盖前询问确认)-r 或 -R递归复制目录&#…...

从FFmpeg命令行到Rust:多场景实战指南

FFmpeg作为功能强大的多媒体处理工具,被广泛应用于视频编辑、格式转换等领域。然而,直接使用FFmpeg的命令行界面(CLI)可能会遇到以下挑战: 命令复杂度高:FFmpeg的命令行参数众多且复杂,初学者可…...

蓝桥杯高频考点——进制转换

进制转换 二进制转十进制代码演示 十六进制转十进制代码演示 十进制转K进制代码演示 任意进制之间的转换代码演示 二进制转十进制 代码演示 // 定义函数 calc,用于将字符转换为对应的数值 int calc(char c) {// 若字符 c 大于等于 9(注:此处…...

【算法百题】专题七_分治快排_专题八_分治归并

文章目录 前言分治快排题:043. [颜⾊分类(medium)](https://leetcode.cn/problems/sort-colors/description/)分析 044. [快速排序(medium)](https://leetcode.cn/problems/sort-an-array/description/)分析 045. [快速…...

DOM4J解析XML, 修改xml的值

1. 引入pom依赖 <dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</version> </dependency> 2. 解析xml, 修改xml节点的值 import org.apache.commons.io.IOUtils; import org.dom4…...

3.16[A]FPGA

FPGA的工作原理是通过配置存储器中的数据来控制可编程逻辑单元和互连资源&#xff0c;从而实现用户定义的逻辑功能。用户可以通过硬件描述语言&#xff08;HDL&#xff09;编写代码&#xff0c;然后通过综合、映射、布局布线等步骤生成配置数据&#xff0c;最后将这些数据加载到…...

ssh转发笔记

工作中又学到了&#xff0c;大脑转不过来 现有主机A&#xff0c;主机B&#xff0c;主机C A能访问B&#xff0c;B能访问C&#xff0c;A不能访问C C上80端口有个服务&#xff0c;现在A想访问这个服务&#xff0c;领导让用ssh转发&#xff0c;研究半天没找到理想的语句&#xf…...

使用OBS进行webRTC推流参考

参考腾讯云官方文档&#xff1a; 云直播 OBS WebRTC 推流_腾讯云 说明非常详细&#xff0c;分为通过WHIP和OBS插件的形式进行推流。 注意&#xff1a;通过OBS插件的形式进行推流需要使用较低的版本&#xff0c;文档里有说明&#xff0c;需要仔细阅读。...

(链表)面试题 02.07. 链表相交

给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结果后&#xff…...

Python----数据可视化(Pyecharts三:绘图二:涟漪散点图,K线图,漏斗图,雷达图,词云图,地图,柱状图折线图组合,时间线轮廓图)

1、涟漪特效散点图 from pyecharts.globals import SymbolType from pyecharts.charts import EffectScatter from pyecharts.faker import Faker from pyecharts import options as opts from pyecharts.globals import ThemeType # 绘制图表 es (EffectScatter(init_optsop…...

正则表达式:贪婪匹配与非贪婪匹配

正则表达式:贪婪匹配与非贪婪匹配 非贪婪匹配 .*?这三个字符的组合就是非贪婪匹配&#xff0c;意思是匹配任意字符直到遇到第一个后面指定的字符&#xff0c;比如.*?_就表示匹配任意字符直到碰到下划线&#xff0c;还可以组合^来表示从头匹配&#xff0c;比如^.*?_就是从头…...

IP风险度自检,互联网的安全“指南针”

IP地址就像我们的网络“身份证”&#xff0c;而IP风险度则是衡量这个“身份证”安全性的重要指标。它关乎着我们的隐私保护、账号安全以及网络体验&#xff0c;今天就让我们一起深入了解一下IP风险度。 什么是IP风险度 IP风险度是指一个IP地址可能暴露用户真实身份或被网络平台…...

数据结构与算法-图论-拓扑排序

前置芝士 概念 拓扑排序&#xff08;Topological Sorting&#xff09;是对有向无环图&#xff08;DAG&#xff0c;Directed Acyclic Graph&#xff09;的顶点进行排序的一种算法。它将图中的所有顶点排成一个线性序列&#xff0c;使得对于图中的任意一条有向边 (u, v)&#x…...