什么是Kubernetes RBAC?为什么需要它?

目录

什么是Kubernetes RBAC?

如何启用Kubernetes RBAC

1.服务帐户

2.角色和集群角色

3.角色绑定和集群角色绑定

Kubernetes RBAC的好处

1.适当的授权

2.职责分离

3.100%遵守法规

Kubernetes RBAC的缺点

企业软件开发工具

什么是Kubernetes RBAC?

当组织开始走上Kubernetes之旅时,在通常情况下,他们希望实现最低权限角色和适当的授权来保护他们的基础设施。这就是实现Kubernetes RBAC以保护Kubernete资源的地方,例如敏感数据,包括部署细节、持久存储设置和机密。Kubernetes RBAC提供了控制谁能够以何种访问方式访问每个API资源的能力。组织可以为人类用户(个人或组)和非人类用户(服务帐户)使用RBAC来定义他们对各种Kubernetes资源的访问类型。

例如,有Dev、Staging和Production三个不同的环境,必须向团队(例如开发人员、DevOps人员、SRE、应用程序所有者和产品经理)提供访问权限。

在开始之前需要强调一下,从抽象的角度来看,将把用户和服务帐户视为相同的——每个请求,无论是来自用户还是服务帐户,最终都是HTTP请求。人们知道Kubernetes中的用户和服务帐户(针对非人类用户)本质上是不同的。

如何启用Kubernetes RBAC

可以在Kubernetes中启用RBAC,这种方法是启动带有授权模式标志的API服务器。用于向用户应用RBAC的Kubernetes资源有:

  • 角色(Role)
  • 集群角色(ClusterRole)
  • 角色绑定(RoleBinding)
  • 集群角色绑定(ClusterRoleBinding)
1.服务帐户

为了管理用户,Kubernetes提供了一种身份验证机制,但通常建议将Kubernetes与企业用户身份管理(如Active Directory或LDAP)集成在一起。当涉及到Kubernetes集群中的非人类用户(或机器或服务)时,就出现了服务帐户的概念。

例如,Kubernetes资源需要由Spinnaker或Argo等持续交付(CD)应用程序访问才能部署应用程序,或者服务A的一个pod需要与服务B的另一个pod对话。在这种情况下,服务帐户用于创建非人类用户的帐户并指定所需授权(使用角色绑定或集群角色绑定)。

可以通过创建如下所示的yaml来创建一个服务帐户:

YAML apiVersion: v1kind: ServiceAccountmetadata:name: nginx-saspec: automountServiceAccountToken: false

然后应用它。

Shell $ kubectl apply -f nginx-sa.yamlserviceaccount/nginx-sa created

现在,必须为部署资源中的pod提供服务帐户。

YAML kind: Deploymentmetadata:name: nginx1labels:app: nginx1spec:replicas: 2selector:matchLabels:app: nginx1template:metadata:labels:app: nginx1spec:serviceAccountName: nginx-sacontainers:- name: nginx1image: nginxports:- containerPort: 80

如果没有在部署资源中指定服务帐户名称(serviceAccountName),那么pod将属于默认的服务帐户。需要注意的是,每个命名空间都有一个默认的服务帐户,集群也有一个默认的服务帐户。默认服务帐户的所有默认授权策略将应用于未提及服务帐户信息的pod。

以下可以看到如何使用角色绑定和集群角色绑定为服务帐户分配各种权限。

2.角色和集群角色

角色(Role)和集群角色(ClusterRole)是Kubernetes资源分别用于定义用户可以在命名空间或集群中执行的操作列表。

在Kubernetes中,参与者(如用户、组或服务帐户)被称为主题。主体的动作,如创建、读取、写入、更新和删除,称为操作。

YAML apiVersion: rbac.authorization.k8s.io/v1kind: Rolemetadata:name: read-onlynamespace: dev-namespacerules:- apiGroups:- ""resources: ["*"]verbs:- get- list- watch

在上面的角色资源中,指定了只读角色仅适用于deb-ns命名空间和命名空间内的所有资源。任何绑定到只读角色的服务帐户或用户都可以执行这些操作——获取、列出和监视。

类似地,集群角色(资源将允许创建与集群相关的角色)。下面是一个例子:

YAML apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata:name: chief-rolerules:- apiGroups:- ""resources: ["*"]verbs:- get- list- watch- create- update- patch- delete

任何绑定到chief-role的用户/组/服务帐户都可以在集群中执行任何操作。

在下一节中,将看到如何使用角色绑定和集群角色绑定向主题授予角色。

另外,Kubernetes允许使用角色资源配置自定义角色,或者使用默认的面向用户的角色,如下所示:

  • 集群管理员(Cluster-admin):对于集群管理员,Kubernetes提供了一个超级用户角色。集群管理员可以对集群中的任何资源执行任何操作。可以在集群角色绑定中使用超级用户来授予对集群(和所有命名空间)中的每个资源的完全控制权,也可以在角色绑定中使用超级用户来授予对各自命名空间中的每个资源的完全控制权。
  • 管理员(Admin):Kubernetes提供了一个管理员角色,允许对命名空间内的资源进行无限制的读/写访问。管理员角色可以在特定的命名空间内创建角色和角色绑定。它不允许对命名空间本身进行写访问。这可以在角色绑定的资源中使用。
  • 编辑(Edit):编辑角色在给定的Kubernetes命名空间内授予读/写访问权限。它无法查看或修改角色或角色绑定。
  • 视图(View):视图角色允许在给定的命名空间内进行只读访问。它不允许查看或修改角色或角色绑定。
3.角色绑定和集群角色绑定

要将角色应用于主题(用户/组/服务帐号),必须定义角色绑定。这将使用角色配置中定义的权限为用户提供对命名空间内所需资源的最低权限访问。

YAML apiVersion: rbac.authorization.k8s.io/v1beta1kind: RoleBindingmetadata:name: Role-binding-devroleRef:kind: Rolename: read-only #The role name you defined in the Role configurationapiGroup: rbac.authorization.k8s.iosubjects:- kind: Username: Roy #The name of the user to give the role toapiGroup: rbac.authorization.k8s.io- kind: ServiceAccountname: nginx-sa#The name of the ServiceAccount to give the role toapiGroup: rbac.authorization.k8s.io

类似地,可以创建集群角色绑定资源来定义用户的角色。需要注意的是,使用了Kubernetes提供的默认超级用户集群角色引用,而不是使用自定义角色。这可以应用于集群管理员。

YAML apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata:name: superuser-bindingroleRef:kind: ClusterRolename: superuserapiGroup: rbac.authorization.k8s.iosubjects:- kind: Username: AditiapiGroup: rbac.authorization.k8s.io

Kubernetes RBAC的好处

Kubernetes RBAC的优势在于它允许“原生”实现对集群中各种用户和机器的最小权限。主要的好处是:

1.适当的授权

通过对各种用户和服务帐户授予Kubernetes资源的最小权限,是DevOps和架构师可以实现零信任的主要支柱之一。组织可以减少数据泄露和数据泄露的风险,还可以避免内部员工意外删除或操纵任何关键资源。

2.职责分离

在Kubernetes资源上应用RBAC将始终有助于组织中用户(例如开发人员、DevOps、测试人员、SRE等)的职责分离。例如,为了在开发环境中创建/删除新资源,开发人员不应该依赖于管理员。同样,将新应用程序部署到测试服务器并在测试后删除pod不应该成为DevOps或测试人员的瓶颈。将授权和权限应用到用户(如开发人员和CI/CD部署代理)各自的工作空间(如命名空间或集群)将减少依赖并减少懈怠。

3.100%遵守法规

许多行业法规(例如HIPAA、GDPR、SOX等)都要求软件领域有严格的认证和授权机制。使用Kubernetes RBAC,DevOps和架构师可以快速地将RBAC实现到他们的Kubernetes集群中,并改进他们的设置以遵守这些标准。

Kubernetes RBAC的缺点

对于中小型企业来说,使用Kubernetes RBAC是合理的,但不建议使用Kubernetes RBAC,其原因如下:

  • 可能有许多用户和机器,并且应用Kubernetes RBAC可能难以实现和维护。
  • 很难看到谁执行了什么操作。例如,大型企业可能需要诸如违反RBAC权限或恶意尝试之类的信息。


企业软件开发工具

JNPF开发平台,很多人都用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。

原理是将开发过程中某些重复出现的场景、流程,具象化成一个个组件、api、数据库接口,避免了重复造轮子。因而极大的提高了程序员的生产效率。

官网:http://www.jnpfsoft.com/?csdn,如果你有闲暇时间,可以做个知识拓展。

这是一个基于Java Boot/.Net Core构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;集成了代码生成器,支持前后端业务代码生成,满足快速开发,提升工作效率;框架集成了表单、报表、图表、大屏等各种常用的Demo方便直接使用;后端框架支持Vue2、Vue3。平台即可私有化部署,也支持K8S部署。

为了支撑更高技术要求的应用开发,从数据库建模、Web API构建到页面设计,与传统软件开发几乎没有差异,只是通过低代码可视化模式,减少了构建“增删改查”功能的重复劳动。

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

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

相关文章

【原理篇】二、Bean加载控制

文章目录 1、编程式Bean加载控制2、注解式Bean加载控制3、Conditional派生注解4、Bean依赖的属性配置 Bean的加载控制指根据特定情况对bean进行选择性加载以达到适用于项目的目标 上篇Bean声明的方式中,后4种可以实现对Bean加载的控制,分别是&#xff1a…

AI创作系统ChatGPT商业运营系统源码+支持GPT4/支持ai绘画

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

陈海波:OpenHarmony技术领先,产学研深度协同,生态蓬勃发展

11月4日,以“技术筑生态,智联赢未来”为主题的第二届OpenHarmony技术大会在北京隆重举办。本次大会由OpenAtom OpenHarmony(简称“OpenHarmony")项目群技术指导委员会(TSC)主办,由华为技术…

智能网联汽车基础软件信息安全需求分析

目录 1.安全启动 2.安全升级 3.安全存储 4.安全通信 5.安全调试 6.安全诊断 7.小结 1.安全启动 对于MCU,安全启动主要是以安全岛BootROM为信任根,在MCU启动后,用户程序运行前,硬件加密模块采用逐级校验、并行校验或者混合校…

uniapp使用vue3和ts开发小程序自定义tab栏,实现自定义凸出tabbar效果

要实现自定义的tabbar效果,可以使用自定义tab覆盖主tab来实现,当程序启动或者从后台显示在前台时隐藏自带的tab来实现。自定义一个tab组件,然后在里面实现自定义的逻辑。 组件中所使用的组件api可以看:Tabbar 底部导航栏 | uView…

从0到1的Springcloud Alibaba项目,一篇入门!!!

1、新建项目 我们用maven管理项目 第一步:选择maven 第二步:项目命名,项目路径 第三步:进入项目,把src文件夹删掉(不删也没事,主要是用不到这个文件夹) 2、引入项目依赖 在父项目…

【广州华锐互动】智能楼宇3D数字化展示,实现对建筑物的实时监控和管理

随着科技的不断发展,人们对于生活品质的要求也在不断提高。在这个信息爆炸的时代,如何将复杂的数据以直观、生动的方式呈现给用户,已经成为了一个重要的课题。智能楼宇3D数字化展示作为一种新型的建筑科技,正逐渐成为行业的新宠&a…

【图像分类】【深度学习】【Pytorch版本】VggNet模型算法详解

【图像分类】【深度学习】【Pytorch版本】VggNet模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】VggNet模型算法详解前言VggNet讲解感受野感受野的计算公式3x3的卷积核的使用VggNet模型结构 VGGnet Pytorch代码完整代码总结 前言 Vgg(Visual Geometry Group)是…

养老院展示服务预约小程序的作用是什么

养老院无论在哪个城市都有很高需求度,不少银发人群会因为种种原因而前往,而养老院近些年来各种服务也比较完善,增加了客户信任度及接受度,但对院方来说,也存在着一些痛点: 1、品牌传播服务呈现难 养老院也…

网络运维Day01

文章目录 环境准备OSI七层参考模型什么是协议?协议数据单元(PDU)设备与层的对应关系什么是IP地址?IP地址分类IP的网络位和主机位IP地址默认网络位与主机位子网掩码默认子网掩码查看IP地址安装CISCO汉化CISCO(可选操作) CISCO之PC机器验证通信 CISCSO之交…

PMI-ACP(103:57- 103)

57/103 高绩效敏捷团队的特征 参与式指导有效的决策开放和清晰的沟通价值多样性相互信任管理冲突清楚目标明确定义角色 和 职责协调关系积极的氛围 58/103 创建授权团队 敏捷强调 具备授权和积极性 的自我管理团队,他们需要对项目成果充分负责,授权是…

软考 -- 计算机学习(3)

文章目录 一、软件测试基础1.1 基本概念1.2 软件测试模型1.3 软件测试的分类 二、基于规格说明的测试技术(黑盒)2.1 重要的测试方法1. 等价类划分法2. 边界值法3. 判定表法4. 因果图法 2.2 其他测试方法 三、基于结构的测试技术(白盒)3.1 静态测试3.2 动态测试 一、软件测试基础…

配置阿里云镜像加速器 -docker

1.百度aliyun 2.找到镜像服务ACR 3.搞一个个人版&#xff0c;身份验证一下就行了很简单 4.找到镜像加速器Centos 5.执行下面4条命令&#xff1a;4条命令直接从上面操作文档中粘贴&#xff0c;不容易出错 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<…

Win10 + VS017 编译SQLite3.12.2源码

参考&#xff1a; [1] WIN10 VS2019下编译GDAL3.0PROJ6SQLite_gdal 3 win10编译-CSDN博客 [2] 如何编译SQLite-How To Compile SQLite-CSDN博客 如何生成静态库&#xff1a; 参考&#xff1a; WIN10 VS2019下编译GDAL3.0PROJ6SQLite_gdal 3 win10编译-CSDN博客 如何生成exe:…

电动车展示预约小程序的作用如何

电动车可以说是现在出行常见的方法&#xff0c;覆盖年龄广几乎是每家必备&#xff0c;也有不小大小品牌和经销商&#xff0c;市场需求较高&#xff0c;但在实际经营中&#xff0c;对经销商来时也面临着一些痛点&#xff1a; 1、品牌传播产品展示难 不同品牌竞争很大&#xff…

Spark 基础知识点

Spark 基础 本文来自 B站 黑马程序员 - Spark教程 &#xff1a;原地址 什么是Spark 什么是Spark 1.1 定义&#xff1a;Apache Spark是用于大规模数据&#xff08;large-scala data&#xff09;处理的统一&#xff08;unified&#xff09;分析引擎 Spark最早源于一篇论文 Re…

viple入门(五)

&#xff08;1&#xff09;自定义活动 自定义活动&#xff0c;用来创建新的组件、服务、函数或者其他代码模块&#xff0c;使用最多的是创建函数。 函数是对一个功能的封装&#xff0c;在调用的时候执行&#xff0c;没有调用的时候则不执行。函数可能有参数&#xff0c;可能没…

信号发送与处理-上

问题 按下 Ctrl C 后&#xff0c;命令行中的前台进程会被终止。为什么&#xff1f;&#xff1f;&#xff1f; 什么是信号&#xff1f; 信号是一种 "软件中断"&#xff0c;用来处理异步事件 内核发送信号到某个进程&#xff0c;通知进程事件的发送事件可能来自硬件…

基于 golang 从零到一实现时间轮算法 (三)

引言 本文参考小徐先生的相关博客整理&#xff0c;项目地址为&#xff1a; https://github.com/xiaoxuxiansheng/timewheel/blob/main/redis_time_wheel.go。主要是完善流程以及记录个人学习笔记。 分布式版实现 本章我们讨论一下&#xff0c;如何基于 redis 实现分布式版本的…

RuntimeError: Distributed package doesn‘t have NCCL built in

因为windows不支持NCCL backend 已解决 import os os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] "gloo"