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

Kubernetes# RBAC访问控制

目录

定义

配置对象

Role

ClusterRole

ServiceAccount

RoleBinding

ClusterRoleBinding

配置示例


定义

Kubernetes的运行是由多种类型的资源组合起来,每种资源各司其职完成整个集群的功能。那么自然也需要一套机制控制资源的访问权限,保证安全性,RBAC就是Kubernetes提供的资源访问控制机制。

RBAC:Role-Based Access Control(基于角色的访问控制)的缩写,基于角色(Role)的访问控制是一种基于组织中用户的角色来调节控制对计算机或网络资源的访问的方法。RBAC类似于我们平时做的系统功能权限设计,用户绑定角色,角色绑定策略,策略绑定资源,从而达到资源控制的目的。

配置对象

RBAC主要由5个对象组成,具体如下:

Role

访问角色,也是定义访问规则的位置,和我们平时系统里的功能权限设计不同,这里没有策略部分(定义规则的地方),直接就在Role里面定义访问规则,Role对象是基于命名空间进行配置,标明对某个命名空间下对象的访问,配置示例:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: default  //定义适用的命名空间name: limited-configmap-access
rules:
- apiGroups: [""]resources: ["configmaps"]  //访问的资源类型,也可以是services、configmapsresourceNames: ["configmap-allowed1", "configmap-allowed2"]  // 定义可以访问哪些configmap,如果不指定那就是可以访问default命名空间下所有的verbs: ["get", "list", "watch", "update"]  // 定义访问的权限

ClusterRole

ClusterRole也是一种访问角色配置,从命名能看出这是一种基于集群范围的配置,Role是对某个NameSpace生效,而ClusterRole配置是对整个集群生效,配置示例:

// 为整个集群内的pods创建访问权限apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: pod-manager
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "list", "create", "update", "delete"]

ServiceAccount

有了角色之后最终是要配置到账户上的,这样才好直接关联到具体的资源,ServiceAccount是Kubernetes内部提供的身份,用于Pod的自动关联,并通过RBAC控制访问。其实Role的绑定目标还有User和Group,这两个是集群的外部身份,不是Kubernetes的内部资源对象,所以这里列举上常用的资源对象,配置如下:

# serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:name: configmap-access-sanamespace: default

RoleBinding

角色绑定,有了角色和账户,现在就需要将两种资源绑定在一起,这样账户才有了Role对应的资源访问能力,配置如下:

# rolebinding-configmap-access.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: configmap-access-bindingnamespace: default
subjects:
- kind: ServiceAccountname: configmap-access-sanamespace: default
roleRef:kind: Rolename: limited-configmap-accessapiGroup: rbac.authorization.k8s.io

ClusterRoleBinding

同理ClusterRoleBinding用来绑定集群类型的Role,配置如下:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: bind-node-manager
subjects:
- kind: Groupname: admin-groupapiGroup: rbac.authorization.k8s.io
roleRef:kind: ClusterRolename: node-managerapiGroup: rbac.authorization.k8s.io

配置示例

上面已经介绍完了RBAC几个核心的配置资源对象,现在以一个具体的示例来做下配置,我们定义一个订单业务相关配置的configmap资源对象,只希望订单相关的业务pod进行查看和修改,而其他的业务pod只能查看。

定义configmap:

apiVersion: v1
kind: ConfigMap
metadata:name: order-configmap
data:app.properties: |price=100discount=0.5

定义查看查看和更新角色:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: defaultname: order-admin-access
rules:
- apiGroups: [""]resources: ["configmaps"]resourceNames: ["order-configmap"]verbs: ["get", "list", "watch", "update", "delete"] 

定义仅查看角色:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: defaultname: order-read-access
rules:
- apiGroups: [""]resources: ["configmaps"]resourceNames: ["order-configmap"]verbs: ["get", "list"] 

定义拥有全部权限的账户:

apiVersion: v1
kind: ServiceAccount
metadata:name: order-admin-sanamespace: default

定义只读权限的账户:

apiVersion: v1
kind: ServiceAccount
metadata:name: order-read-sanamespace: default

绑定角色:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: order-admin-binddingnamespace: default
subjects:
- kind: ServiceAccountname: order-admin-sanamespace: default
roleRef:kind: Rolename: order-admin-accessapiGroup: rbac.authorization.k8s.io
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: order-read-binddingnamespace: default
subjects:
- kind: ServiceAccountname: order-read-sanamespace: default
roleRef:kind: Rolename: order-read-accessapiGroup: rbac.authorization.k8s.io

订单业务pod:

apiVersion: v1
kind: Pod
metadata:name: order-podnamespace: default
spec:serviceAccountName: order-admin-sacontainers:- name: order-testimage: /test/order

其他业务pod:

apiVersion: v1
kind: Pod
metadata:name: other-podnamespace: default
spec:serviceAccountName: order-read-sacontainers:- name: other-testimage: /test/other

相关文章:

Kubernetes# RBAC访问控制

目录 定义 配置对象 Role ClusterRole ServiceAccount RoleBinding ClusterRoleBinding 配置示例 定义 Kubernetes的运行是由多种类型的资源组合起来,每种资源各司其职完成整个集群的功能。那么自然也需要一套机制控制资源的访问权限,保证安全性…...

如何实现后端返回excel文件,在前端下载功能

前言 简单记录一下,excel文件导出下载功能 一、后端接口返回excel文件 把自己生成的workbook 以文件流的方式,返回前台 Workbook workbook employeeConfirmationDefectService.exportPoorPolishExcel(budatBegin, budatEnd, queryWrapper);//传输到…...

编程:一场不设防的智慧江湖

在数字的汪洋中,有一片从未设置年龄禁区的领地——编程世界。许多人会问:35岁了,还能学编程吗?答案是:不仅能学,还能学得很精彩。 时光荏苒,科技浪潮汹涌澎湃。曾经,人们以为编程是…...

电脑游戏运行时常见问题解析:穿越火线提示“unityplayer.dll丢失”的修复指南

电脑游戏运行时常见问题解析:穿越火线提示“unityplayer.dll丢失”的修复指南 在探索电脑游戏的无限乐趣时,我们时常会遇到一些不期而遇的挑战。今天,我们将聚焦于一个常见的游戏运行错误——穿越火线(或其他使用Unity引擎的游戏…...

【C++】CUDA线程在全局索引中的计算方式

文章目录 1. 一维网格一维线程块2. 二维网格二维线程块3. 三维网格三维线程块4. 不同组合形式4.1 一维网格一维线程块4.2 一维网格二维线程块4.3 一维网格三维线程块4.4 二维网格一维线程块4.5 二维网格二维线程块4.6 二维网格三维线程块4.7 三维网格一维线程块4.8 三维网格二维…...

【笔记】C语言转C++

网课链接:【C语言 转 C 简单教程】 https://www.bilibili.com/video/BV1UE411j7Ti/?p27&share_sourcecopy_web&vd_source4abe1433c2a7ef632aeed6a3d5c0b22a 网课老师B站id:别喷我id 视频总时长:01:55:27 以下笔记是我通过此网课整理 建议先…...

锂电池SOH预测 | 基于BiGRU双向门控循环单元的锂电池SOH预测,附锂电池最新文章汇集

锂电池SOH预测 | 基于BiGRU双向门控循环单元的锂电池SOH预测,附锂电池最新文章汇集 目录 锂电池SOH预测 | 基于BiGRU双向门控循环单元的锂电池SOH预测,附锂电池最新文章汇集预测效果基本描述程序设计参考资料 预测效果 基本描述 锂电池SOH预测 | 基于Bi…...

半导体器件与物理篇5 1~4章课后习题

热平衡时的能带和载流子浓度 例 一硅晶掺入每立方厘米10^{16}个砷原子,求室温下(300K)的载流子浓度与费米能级。 需要用到的公式包括1.本征载流子浓度公式 2.从导带底算起的本征费米能级 2.从本征费米能级算起的费米能级 载流子输运现象 例1:计算在300K下&#x…...

Pytest-Bdd-Playwright 系列教程(16):标准化JSON报告Gherkin格式命令行报告

Pytest-Bdd-Playwright 系列教程(16):标准化JSON报告&Gherkin格式命令行报告 前言一、创建Feature文件二、创建步骤定义文件三、生成Cucumber格式的JSON报告四、使用Gherkin格式的命令行报告五、将BDD报告集成到Jenkins中总结 前言 在自动…...

机器学习之学习范式

机器学习的四种主要范式分别是:监督学习、非监督学习、强化学习和半监督学习。以下是每种范式的详细介绍: 1. 监督学习(Supervised Learning) 定义: 通过已标注的数据训练模型,以预测或分类未知数据。 目…...

PHPstudy中的数据库启动不了

法一 netstat -ano |findstr "3306" 查看占用该端口的进程号 taskkill /f /pid 6720 杀死进程 法二 sc delete mysql...

鸿蒙开发-ArkTS 创建自定义组件

在 ArkTS 中创建自定义组件是一个相对简单但功能强大的过程。以下是如何在 ArkTS 中创建和使用自定义组件的详细步骤: 一、定义自定义组件 使用Component注解:为了注册一个组件,使其能够在其他文件中被引用,你需要使用Component…...

记录学习《手动学习深度学习》这本书的笔记(五)

这一章是循环神经网络,太难了太难了,有很多卡壳的地方理解了好久,比如隐藏层和隐状态的区别、代码的含义(为此专门另写了一篇【笔记】记录对自主实现一个神经网络的步骤的理解)、梯度计算相关(【笔记】记录…...

【Qt】Qt+Visual Studio 2022环境开发

在使用Qt Creator的过程中,项目一大就会卡,所以我一般都是用VS开发Cmake开发, 在上一篇文章中,我已经安装了CMake,如果你没有安装就自己按一下。 记得配置Qt环境变量,不然CMake无法生成VS项目&#xff1a…...

云计算HCIP-OpenStack04

书接上回: 云计算HCIP-OpenStack03-CSDN博客 12.Nova计算管理 Nova作为OpenStack的核心服务,最重要的功能就是提供对于计算资源的管理。 计算资源的管理就包含了已封装的资源和未封装的资源。已封装的资源就包含了虚拟机、容器。未封装的资源就是物理机提…...

HCIA-Access V2.5_3_2_VLAN数据转发

802.1Q的转发原则--Access-Link 首先看一下Access,对于Access端口来说, 它只属于一个VLAN,它的VLANID等于PVID。 首先看一下接收方向,前面说过交换机内部一定要带标签转发,所以当交换机接收到一个不带tag的数据帧时,会给它打上端…...

transformer学习笔记-导航

本系列专栏,主要是对transformer的基本原理做简要笔记,目前也是主要针对个人比较感兴趣的部分,包括:神经网络基本原理、词嵌入embedding、自注意力机制、多头注意力、位置编码、RoPE旋转位置编码等部分。transformer涉及的知识体系…...

功能篇:JAVA后端实现跨域配置

在Java后端实现跨域配置(CORS,Cross-Origin Resource Sharing)有多种方法,具体取决于你使用的框架。如果你使用的是Spring Boot或Spring MVC,可以通过以下几种方式来配置CORS。 ### 方法一:全局配置 对于所…...

防火墙内局域网特殊的Nginx基于stream模块进行四层协议转发模块的监听443 端口并将所有接收转发到目标服务器

在一些特殊场合下, 公司内部网络防火墙限制, 不能做端口映射, 此时可以使用nginx的做从四层协议转发, 只走tcp/ip协议, 而不走http方式, 可以做waf设置, 就可以做443, 或其它端口, 从而达到被直接转发到远程服务器效果 机房只映射了一个IP:22280, 而需求是这个SDK只能通过…...

【Hive】-- hive 3.1.3 伪分布式部署(单节点)

1、环境准备 1.1、版本选择 apache hive 3.1.3 apache hadoop 3.1.0 oracle jdk 1.8 mysql 8.0.15 操作系统:Mac os 10.151.2、软件下载 https://archive.apache.org/dist/hive/ https://archive.apache.org/dist/hadoop/ 1.3、解压 tar -zxvf apache-hive-4.0.0-bin.tar…...

三体问题详解

从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性&#xf…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...