【容器】K8s RBAC介绍

认识RBAC

RBAC(基于角色的访问控制)是一种将权限分配给用户和服务的方法,基于他们的角色来确定他们可以访问和修改的资源。K8s使用RBAC作为来访请求鉴权的机制之一。

场景:访问K8s接口时的认证和鉴权

某些场景下,我们需要与K8s API Server交互,以获取或变更集群中资源的状态。我们知道,访问K8s API Server是需要认证,鉴权,准入控制,审计四个步骤的。
在这里插入图片描述

其中认证(password,Service account token,X509 客户端证书认证),鉴权(节点授权,RBAC,ABAC)的信息需要客户端在请求中携带。因此,为了请求K8s API,首先我们需要从K8s获取认证,鉴权信息。K8s为我们准备了这样一份信息: kubeconfig file。该文件在每一个可正常执行kubectl的K8s节点机的/root/.kube/config。获取这个文件后,我们可以使用如下样例代码列举K8s特定命名空间中的所有deployments:

from kubernetes import client, configdef list_deployments(namespace):# Load the kubeconfig fileconfig.load_kube_config('/root/.kube/config')# Create an instance of the API classapps_v1 = client.AppsV1Api()print(f"Listing deployments in namespace: {namespace}")# List deploymentsdeployments = apps_v1.list_namespaced_deployment(namespace)for deployment in deployments.items:print(deployment.metadata.name)# Replace 'your_namespace' with the desired namespace
list_deployments('your_namespace')

通过这种方式获取访问K8s所需的认证,鉴权信息方便有效。不过有安全隐患,在后面的章节我们会通过分析这个文件的内容,解析安全隐患在哪里。在此之前,需先了解K8s RBAC(Role Based Access Control)的基础知识。

RBAC中的resource和verb

RBAC中resource是可以被操作的资源对象,verbs是操作的动作。

#resource
pods,nodes,deployments,service
#verbs
create, delete, get, list, patch, watch

通过下面的命令可以查看K8s中的资源和对应的动作
kubectl api-resources -o wide
在这里插入图片描述

RBAC中的role

Role定义了对resource做什么verb。

# 删除Pods
Delete Pods
# 更新Service
patch Service

以下Role描述文件定义了该role能够对"deployments", “statefulsets"进行"get”, “watch”, “list”, “patch”, “update”

apiVersion: rbac.authorization.k8s.io/v1
## 这里也可以使用 Role
kind: ClusterRole
metadata:name: deploy-cluster-role
rules:
- apiGroups: ["apps"]resources: ["deployments", "statefulsets"]verbs: ["get", "watch", "list", "patch", "update"]

RBAC中的ServiceAccount

以下yaml创建一个ServiceAccount(testapp)。绑定该ServiceAccount的应用使用该身份与K8s集群进行交互。

apiVersion: v1
kind: ServiceAccount
metadata:name: testapp# change to desired namespacenamespace: default

RBAC中的RoleBinding

RoleBinding将ServiceAccount绑定到Role上。表示应用对资源的操作。
以下yaml把Role:deploy-cluster-role绑定到ServiceAccount:testApp上

apiVersion: rbac.authorization.k8s.io/v1
## 这里也可以使用 RoleBinding
kind: ClusterRoleBinding
metadata:name: deploy-role-binding
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: deploy-cluster-role
subjects:
- kind: ServiceAccountname: testappnamespace: default

小结

至此了解了RBAC的基本元素Resource,Verb,Role,ServiceAccount,RoleBinding。并了解了这些概念在K8s中的落地。下篇我们介绍具体的实践。

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

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

相关文章

面试算法98:路径的数目

题目 一个机器人从mn的格子的左上角出发,它每步要么向下要么向右,直到抵达格子的右下角。请计算机器人从左上角到达右下角的路径的数目。例如,如果格子的大小是33,那么机器人从左上角到达右下角有6条符合条件的不同路径。 分析…

rabbitmq延时队列相关配置

确保 RabbitMQ 的延时消息插件已经安装和启用。你可以通过执行以下命令来安装该插件: rabbitmq-plugins enable rabbitmq_delayed_message_exchange 如果提示未安装,以下是安装流程: 查看mq版本: 查看自己使用的 MQ(…

全网最全丨傻瓜式Fiddler教程大全丨从安装到抓包

前言 在我们做接口测试的时候,经常需要验证发送的消息是否正确,或者在出现问题的时候,查看手机客户端发送给server端的包内容是否正确,就需要用到抓包工具。 今天,给大家带来最常用的Fiddler的傻瓜式教程大全——从安…

九、综合实例:修改用户资料(Qt5 GUI系列)

目录 一、设计需求 二、实现代码 三、代码解析 四、总结 一、设计需求 设计一个修改用户资料功能的对话框&#xff0c;要求包含基本信息、联系方式、详细资料的编辑和修改。本实例只实现界面。 二、实现代码 导航页面&#xff1a; //添加的头文件 #include <QStacked…

深入理解Python中的二分查找与bisect模块

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

安装Cygwin的包管理器apt-cyg并安装tree命令

文章目录 一、从官网添加必要软件包1. 安装2. 检查 二、安装apt-cyg1. 下载安装2.修复 三、安装tree命令1. 安装2.检验 一、从官网添加必要软件包 1. 安装 因为第一次安装cygwin时走的都是默认选项&#xff0c;所以这里是二次添加额外包。 打开官网&#xff0c;下载安装程序。…

【导出与导入Virtualbox虚拟机和启动连接openGauss数据库】

【导出与导入Virtualbox虚拟机和启动连接openGauss数据库】 一、导出虚拟机二、导入虚拟机三、启动数据库四、使用Data Studio连接数据库 一、导出虚拟机 选择关机状态的虚拟机 -> 管理菜单 -> 导出虚拟电脑 点击完成后&#xff0c;需要等待一小段时间&#xff0c;如…

每日一道算法题day-three(备战蓝桥杯)

哈喽大家好&#xff0c;今天来给大家带来每日一道算法题系列第三天&#xff0c;让我们来看看今天的题目&#xff0c;一起备战蓝桥杯 题目&#xff1a; 小 Y的桌子上放着 n 个苹果从左到右排成一列&#xff0c;编号为从 11 到 n。 小苞是小 Y 的好朋友&#xff0c;每天她都会…

Java JDK8到21演升特性汇总

Java JDK 8 到 19 演升特性汇总 文章目录 Java JDK 8 到 19 演升特性汇总一、版本roadmap图二、版本与特性JDK8 [2014-03-18]JDK11[2018-09-25]JDK17【2021-09-14】JDK21 [2023-09-19] 一、版本roadmap图 官方地址 JDK8,JDK11,JDK17,JDK21是长期维护的版本。spring boot3最低支…

D-Link DES-108 交换机

D-Link DES-108 交换机 1. 百兆交换机 8 口References ​ D-Link Corporation is a Taiwanese multinational networking equipment manufacturing corporation headquartered in Taipei, Taiwan. Taiwanese&#xff1a;adj. 台湾的 n. 台湾人 headquarter [hedkwɔ:tə]&#…

汽车电子学习总结

国内的主要有比亚迪、联合汽车电子&#xff08;联电&#xff09;、麦格米特、上海电驱动&#xff1b;国外的主要有欧美系的博世、麦格纳、大陆、博格华纳&#xff1b;日系的电装、电产等公司。

AIOps探索 | 基于大模型构建高效的运维知识及智能问答平台(2)案例分享

原作者&#xff1a;擎创科技产品专家 布博士 案例分享 所需要的软件列表 本次案例的实现&#xff0c;全部采用开源或SAAS的产品来提供&#xff0c;并不涉及到私有化部署的软件产品。软件列表如下所示&#xff0c;如何申请apikey请自行研究&#xff0c;在这里不再详细说明&…

VIT用于图像分类 学习笔记(附代码)

论文地址&#xff1a;https://arxiv.org/abs/2010.11929 代码地址&#xff1a;https://github.com/bubbliiiing/classification-pytorch 1.是什么&#xff1f; Vision Transformer&#xff08;VIT&#xff09;是一种基于Transformer架构的图像分类模型。它将图像分割成一系列…

如何实现安卓端与苹果端互通

在移动应用开发中&#xff0c;如何实现安卓端和苹果端的互通是一个重要的问题。二者缺少一个都会有损失&#xff0c;那如何实现安卓端跟苹果端互通&#xff0c;下面简单的介绍几点方法来帮助你再不同的平台上实现数据交互和功能互通。 基于Web技术 使用Web技术是一种常见并且…

数字孪生与大数据和分析技术的结合

数字孪生与大数据和分析技术的结合可以为系统提供更深入的见解、支持实时决策&#xff0c;并优化模型的性能。以下是数字孪生在大数据和分析技术中的一些应用&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流…

美年大健康黄伟:从选型到迁移,一个月升级核心数据库

核心生产系统的数据库&#xff0c;从接到替换需求到完成分布式升级&#xff0c;需要多久&#xff1f;一个月&#xff0c;这是美年大健康的回答。一个月集中调配各种资源&#xff0c;美年大健康完成了应用程序基本零改造的平滑迁移&#xff0c;新数据库在成本更低的前提下&#…

2023-RunwayML-Gen-2 AI视频生成功能发展历程

RunwayML是一个人工智能工具&#xff0c;它为设计师、艺术家和创意人士提供了一种简单的方式来探索和应用机器学习技术。 RunwayML官方网页地址&#xff1a;Runway - Advancing creativity with artificial intelligence. RunwayML专区RunwayML-喜好儿aigcRunwayML 是一种先进…

P1192 台阶问题————C++

目录 台阶问题题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 解题思路Code运行结果 台阶问题 题目描述 有 N N N 级台阶&#xff0c;你一开始在底部&#xff0c;每次可以向上迈 1 ∼ K 1\sim K 1∼K 级台阶&#xff0c;问到达第 N N N 级台阶有多少种不同方…

电商平台低价品牌要如何处理

低价会影响品牌渠道的长期发展&#xff0c;同时还会衍生很多问题&#xff0c;如为了追求低价而导致的店铺窜货、商品假货等&#xff0c;对于渠道来说&#xff0c;都是要及时解决的问题&#xff0c;否则渠道乱了&#xff0c;最终腐蚀的是品牌价值&#xff0c;同时还会影响经销商…

【LeetCode-剑指offer】--1.两数相除

1.两数相除 方法&#xff1a;使用减法实现除法 用“被减数”能减去几次“减数”来衡量最后的结果&#xff0c;这时候我们想到求x的幂次的快速解法&#xff0c;将x成倍成倍的求幂&#xff0c;这里将减数成倍成倍的增大&#xff0c;次数对应也是成倍成倍的增大&#xff0c;例如&…