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

news2024/11/17 21:51:15

目录

什么是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: v1
 kind: ServiceAccount
 metadata:
  name: nginx-sa
 spec: 
  automountServiceAccountToken: false

然后应用它。

Shell 
 $ kubectl apply -f nginx-sa.yaml
 serviceaccount/nginx-sa created

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

YAML 
 kind: Deployment
 metadata:
  name: nginx1
 labels:
  app: nginx1
 spec:
  replicas: 2
  selector:
  matchLabels:
  app: nginx1
 template:
  metadata:
  labels:
  app: nginx1
  spec:
  serviceAccountName: nginx-sa
  containers:
  - name: nginx1
  image: nginx
  ports:
  - containerPort: 80

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

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

2.角色和集群角色

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

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

YAML 
 apiVersion: rbac.authorization.k8s.io/v1
 kind: Role
 metadata:
  name: read-only
  namespace: dev-namespace
 rules:
 - apiGroups:
 - ""
  resources: ["*"]
 verbs:
 - get
  - list
 - watch

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

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

YAML 
 apiVersion: rbac.authorization.k8s.io/v1
 kind: ClusterRole
 metadata:
 name: chief-role
 rules:
 - 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/v1beta1
 kind: RoleBinding
 metadata:
 name: Role-binding-dev
 roleRef:
  kind: Role
 name: read-only #The role name you defined in the Role configuration
  apiGroup: rbac.authorization.k8s.io
 subjects:
 - kind: User
  name: Roy #The name of the user to give the role to
 apiGroup: rbac.authorization.k8s.io
 - kind: ServiceAccount
  name: nginx-sa#The name of the ServiceAccount to give the role to
 apiGroup: rbac.authorization.k8s.io

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

YAML 
 apiVersion: rbac.authorization.k8s.io/v1beta1
 kind: ClusterRoleBinding
 metadata:
  name: superuser-binding
 roleRef:
  kind: ClusterRole
 name: superuser
 apiGroup: rbac.authorization.k8s.io
 subjects:
 - kind: User
 name: Aditi
 apiGroup: 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.coloradmin.cn/o/1180861.html

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

相关文章

英国最值得参观的十大博物馆介绍

目前,到英国从事访问交流及博士后研究的学者越来越多,而英国一向以厚重的历史人文以及精彩绝伦的艺术著称,在这样一个有着浓厚历史沉淀的国家,自然最不缺的就是博物馆了,在学习工作的闲暇,可以去参观体验一…

C语言求解有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

完整代码: /*有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月 又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析: 兔子的规律为数列1,1,2,3,5,8…

AI智能公文写作助手“文山会海“

公文写作痛点 没思路,公文写作无从下手公文类型繁多,一时难以全面掌握公文内容组织难度大,不易清晰、有逻辑的进行表达时间紧任务急,往往需要在有限的时间内完成大量写作工作反复修改优化,需满足更多新要求&#xff0…

WordPress 企业一号wp主题企业建站模板V1.2.2开心版

模板简介: 企业一号是一款由主题巴巴团队原创设计开发的WordPress企业主题。这款主题配备了强大的可视化、模块化的页面设计功能(页面构建器),让您通过添加不同的设计模块和配置模块选项就可以设计出各种丰富多彩的页面。主题还集…

信号发送与处理-上

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

③【操作表数据】MySQL添加数据、修改数据、删除数据

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ MySQL添加数据、修改数据、删除数据 &#x1f…

渗透测试学习day2

文章目录 连接靶机靶机:Fawn 解题过程Task 1Task 2Task 3Task 4Task 5Task 6Task 7Task 8Task 9Task 10Task 11Task 12 总结 连接靶机 详细过程可参考day1 靶机:Fawn 难度:very easy (ftp服务的靶机) 解题过程 T…

单链表(1)

前面的顺序表是顺序存储(类似于数组),下面的链表是链式存储。物理是否相邻就看其存储地址(格子)是否相邻挨在一起。逻辑是否相邻看其前驱后继。 例如上面3个数据 如果存在顺序表中,那就是100的后继是200,2…

网络测试工具—— iperf2 安卓APK 下载 及简单使用

网络测试工具—— iperf2 安卓APK 下载 及简单使用 前言一、iperf2是什么?二、使用步骤附上help中命令截图翻译总结 前言 项目上有一款安卓车机加载局域网图片加载非常慢,所以需要测试一个安卓车机设备的带宽,经过调研后使用到了iperf2。 一…

【Android】Debug时禁用主线程ANR限制

ANR全称Application Not Response,指主线程超过5s无响应,应用会自动退出 由于这个线程,如果我们给主线程加了断点,就会触发ANR,导致调试时应用退出 这样调试起来会非常麻烦,其实对于Debug应用&#xff0c…

解决springboot整合websocket、redis、openfeign,redisTemplate,openfeign的类无法注入的问题

在部分业务中,我们需要使用长连接,我们可以使用http长连接或者websocket,在springboot作为后端的框架中, 可以借用的技术是(netty,websocket) 版本如下 软件版本号jdk21springboot 3.1.5 spri…

企业微信开启接收消息+验证URL有效性

企业微信开启接收消息验证URL有效性 📔 千寻简笔记介绍 千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes,包含笔记源文件.md,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对…

[极客大挑战 2019]Upload 1

题目环境&#xff1a; 根据题目和环境可知此题目是一道文件上传漏洞 编写一句话木马脚本<?php eval($_POST[shell]);?>将脚本文件更改为jpg图片文件我这里是flag.jpg上传文件并burpsuite抓包Repeater重放 报错一句话木马里面有<?字符 换一种一句话木马继续编写木马…

iOS实现代码混淆

​ 目录 前言 ipaguard界面概览 ipaguard启动界面 ipaguard代码混淆界面 资源文件混淆界面 重签名界面 前言 本文章向大家介绍iOS实现代码混淆&#xff0c;主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项&#xff0c;具有一定的参考价值&#xff0c;需…

高德地图设置电子围栏

高德地图设置电子围栏 需求效果图代码实现 需求 给地图上人员锚点设置围栏区域&#xff0c;如果在此区域内则是在线状态&#xff0c;不在此区域内则是离线状态 效果图 双击可编辑或清除当前围栏 代码实现 前端实现区域框选&#xff1a; //引入高德地图sdk"amap/amap…

Python语言高级实战-内置函数super()的使用之类的多继承(附源码和实现效果)

实现功能 super()函数的调用顺序是按照方法解析顺序&#xff08;Method Resolution Order, MRO&#xff09;来确定的。MRO 是一个确定继承顺序的算法&#xff0c;它使用 C3 线性化算法来避免潜在的方法冲突。Python会根据继承顺序自动计算 MRO&#xff0c;我们只需要使用 supe…

人人都会的 Blazor —— 1.3 项目结构

项目结构 使用 Visual Studio 2022 创建 Blazor 项目。 在搜索框中输入【blazor】关键字,将列出以下已经存在的项目模板: Blazor Server App:基于 Blazor Server 托管模型的项目,并建立一些示例代码和组件;Blazor WebAssembly App:基于 Blazor WebAssembly 托管模型的项…

CSS 外边距、填充、分组嵌套、尺寸

一、CSS 外边距&#xff1a; CSS margin&#xff08;外边距&#xff09;属性定义元素周期的空间。margin清除周围的&#xff08;外边框&#xff09;元素区域。margin没有背景颜色&#xff0c;是完全透明的。margin可以单独改变元素的上、下、左、右边距&#xff0c;也可以一次改…

响应式招标投标网站模板源码带后台

模板信息&#xff1a; 模板编号&#xff1a;29165 模板编码&#xff1a;UTF8 模板分类&#xff1a;博客、文章、资讯、其他 适合行业&#xff1a;招标类企业 模板介绍&#xff1a; 本模板自带eyoucms内核&#xff0c;无需再下载eyou系统&#xff0c;原创设计、手工书写DIVCSS&a…

Python基础入门(5)----Python中的变量和表达式:变量的定义、赋值和数据类型转换

文章目录 Python中的变量和表达式:变量的定义、赋值和数据类型转换变量的定义变量的赋值数据类型转换注意事项表达式总结Python中的变量和表达式:变量的定义、赋值和数据类型转换 Python是一种高级编程语言,以其简洁明了的语法和强大的功能而闻名。在Python编程中,变量和表…