Kubernetes 中 RBAC、ServiceAccount 的区别和联系

Understanding-the-Kubernetes-RBAC-API

Author:rab


目录

    • 前言
    • 一、区别
    • 二、联系
    • 三、案例
    • 思考?


前言

首先,Kubernetes (K8s) RBAC (Role-Based Access Control) 和 ServiceAccount 都是 Kubernetes 中用于控制访问权限的两个重要概念,但是它们之间有一些区别和联系。

一、区别

1、RBAC

RBAC 是一种授权机制,用于定义和管理用户或组对 Kubernetes 资源的访问权限。它基于角色和角色绑定的概念,可以细粒度地控制用户对集群中的资源的操作权限。

2、ServiceAccount

ServiceAccount 是用于身份验证和授权的 Kubernetes 资源,它代表一个应用程序或服务在集群中的身份。每个 Pod 都会自动关联一个默认的 ServiceAccount,用于与 API 服务器进行通信。

二、联系

1、RBAC

RBAC 和 ServiceAccount 都是 Kubernetes 中的安全机制,用于确保集群中的资源只能被授权的实体访问。RBAC 提供了更细粒度的控制,而 ServiceAccount 则用于标识和认证应用程序或服务(如 Pod)。

2、ServiceAccount

ServiceAccount 是 RBAC 的一部分,RBAC 可以使用 ServiceAccount 来授权用户或组对资源的访问权限。通过为 ServiceAccount 分配适当的角色和角色绑定,可以限制应用程序或服务对资源的访问权限。

三、案例

接下来我们使用 RBAC 和 ServiceAccount 来控制对 Kubernetes 资源的访问权限。

1、创建 my-namespace 命名空间

进行资源隔离,形成一个好的习惯,要不然一堆资源集中在一起,乱七八糟的。

kubectl create namespace my-namespace

2、创建角色(Role)

vim role-test.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: my-role
  namespace: my-namespace
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list"]
kubectl apply -f role-test.yaml

3、角色绑定(RoleBinding)

vim role-bind.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: my-role-binding
  namespace: my-namespace
subjects:
- kind: ServiceAccount
  name: default
  namespace: my-namespace
roleRef:
  kind: Role
  name: my-role
  apiGroup: rbac.authorization.k8s.io
kubectl apply -f role-bind.yaml

案例分析:

该案例中,我们创建了一个角色 my-role,并将其绑定到 default ServiceAccount。这意味着 default ServiceAccount 在 my-namespace 命名空间中具有对 pods 资源的 get 和 list 权限。其他用户或组如果没有被授予相应的角色和角色绑定,则无法访问这些资源。

请注意!这只是一个简单的示例,实际使用中可能需要更复杂的 RBAC 规则和更多的 ServiceAccount 来满足实际需求。

思考?

问:如果我们没有显示地指定 Pod 的 ServiceAccount,那 Pod 被创建后所属的 ServiceAccount 是什么?

答:是 default。每个 Pod 都有一个唯一的 ServiceAccount,用于与 Kubernetes API 服务器进行身份验证和授权。这样可以确保每个 Pod 在访问集群中的资源时都有自己的身份。而且要搞清楚的是:每个命名空间都会自动创建一个名为 default 的 ServiceAccount,如果没有指定其他的 ServiceAccount,Pod 将会自动关联到该默认的 ServiceAccount。如下图就是 Kubernetes 集群中 default 名称空间中默认的 ServiceAccount(且名为 default)。

image-20231109180539765

但是,默认的 ServiceAccount 具有较低的权限,并且通常只能访问自己所在命名空间的资源。如果需要更细粒度的访问控制,可以创建自定义的 ServiceAccount,并为其分配适当的角色和角色绑定。

问:那我们如何在 Kubernetes 中创建自定义的 ServiceAccount 呢?

答:可通过以下两种方式来定义。

1、命令行方式

# 首先创建一个namespace
kubectl create namespace my-namespace

# 接着就开始创建ServiceAccount资源
kubectl create serviceaccount my-serviceaccount -n my-namespace

2、yaml 文件方式

# 首先创建一个namespace
kubectl create namespace my-namespace
# 接着就开始创建ServiceAccount资源
vim my-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-serviceaccount
  namespace: my-namespace
# 执行创建
kubectl apply -f my-serviceaccount.yaml

serviceaccount 创建完成之后,就可以创建角色并进行角色绑定应用了。

—END

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ES专题】Logstash与FileBeat详解以及ELK整合详解

目录 前言阅读对象阅读导航前置知识笔记正文一、ELK架构1.1 经典的ELK1.2 整合消息队列Nginx架构 二、LogStash介绍2.1 Logstash核心概念2.1.1 Pipeline2.1.2 Event2.1.3 Codec (Code / Decode)2.1.4 Queue 2.2 Logstash数据传输原理2.3 Logstash的安装(以windows为…

微信总提示空间不足怎么办?三个方法随心选!

微信显示空间不足会给用户带来很多困扰,比如影响手机的正常使用,占用大量存储空间,导致手机运行缓慢,没法分享图片和视频,影响我们的社交交流。下面提供了一些简单实用的方法。 方法一:清理微信缓存 1、打…

ElasticSearch的集群、节点、索引、分片和副本

Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解,我们将Elasticsearch里存储文档数据和关系型数据库MySQL存储数据的概念进行一个类比 ES里的Index可以看做一个库,而Types相当于表,Documents则相当…

AD9371 Crossbar

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 : AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射: AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 : AD9371 官方…

农产品展示预约小程序的内容是什么

农产品可以分为多个类目,对农场、农产品经销商家来说,除了线下开店外,线上也同样不能放松经营,面对线下多种困境,运用线上发展可以节约人力物力成本,提升整体经营效率。 1、品牌传播展示难 农产品种类较多…

PageHelper多表关联查询数量问题

PageHelper多表关联查询数量问题 通常我们会使用PageHelper进行分页查询,但是当分页查询被用到多个表的关联查询中时,就有可能导致查询出来的数据总数比我们想要的多得多。 首先在数据库中创建三个demo表:role、path、role_path role角色表…

C# 压缩PDF文件

PDF 文件可以包含文本、图片及各种媒体元素,但如果文件太大则会影响传输效果同时也会占用过多磁盘空间。通过压缩PDF文件,能够有效减小文件大小,从而提高传输效率并节省存储空间。想要通过C#代码快速有效地压缩 PDF 文件,下面是实…

Perl语言用多线程爬取商品信息并做可视化处理

首先,我们需要使用Perl的LWP::UserAgent模块来发送HTTP请求。然后,我们可以使用HTML::TreeBuilder模块来解析HTML文档。在这个例子中,我们将使用BeautifulSoup模块来解析HTML文档。 #!/usr/bin/perl use strict; use warnings; use LWP::User…

C语言数据结构-----单链表(无头单向不循环)

前言 本篇讲述了单链表的相关知识,以及单链表增删查改的代码实现。 文章目录 前言1.链表1.1 链表的结构和概念 2.(增删查改)单链表的实现2.1 打印链表2.2 尾插2.3 尾删2.4 头插2.5 头删2.6 查找2.7 在指定位置(pos)前插入2.8 在指定位置(pos)删除2.9 在指定位置(p…

梓航DIY无限建站-3.5.8(企业官网 应用首页 PC建站 14套模板切换,自由组合页面,无限多开)

梓航DIY无限建站是一款支持无限建站的公众号应用。 自定义网址 全局样式设置 极速建站 更灵活 更方便。 1、默认页面指定设置,更灵活、更方便; 2、全局样式设置,减少页面重复设置工作; 3、不限数量网站制作装修(想做…

台式电脑一键重装Win10系统详细教程

很多用户都在使用台式Win10电脑办公,如果电脑出现系统问题无法解决了,这时候就可以考虑给电脑重装系统哦,下面小编给大家详细介绍关于台式电脑一键重装Win10系统的步骤方法,安装后电脑就能恢复正常,也不会影响到用户的…

Kyligence Copilot 亮相第六届进博会,增添数智新活力

11月5日,第六届中国国际进口博览会(以下简称“进博会”)在上海国家会展中心盛大启幕,众多新科技、新成果、新展品亮相本届进博会。作为阿斯利康(AstraZeneca)合作伙伴,跬智信息(Kyli…

FastGPT | 3分钟构建属于自己的AI智能助手

这是一篇使用指南!!! FastGPT是什么? FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景&…

第22章_数据库的设计规范

文章目录 范式的概念三范式范式一范式二范式三 反范式总结 范式的概念 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库&#xff…

Zookeeper选举Leader源码剖析(上)

为什么要看源码: 1、 提升技术功底: 学习源码里的优秀设计思想,比如一些疑难问题的解决思路,还有一些优秀的设计模式,整体提升自己的技术功底 2、 深度掌握技术框架: 源码看多了,对于一个新技…

类EMD的“信号分解方法”及MATLAB实现(第九篇)——小波包变换(WPT)/小波包分解(WPD)

在上一篇我们讲到了离散小波变换DWT,在建立了小波分解的基本概念后,我们现在转向小波包分解——一种更精细的小波分析方法。小波包分解在多分辨率分析的基础上,提供了一种全面的频率分析工具,这在许多复杂信号处理场合中被证明是极…

uniapp 解决H5跨域的问题

uniapp 解决h5跨域问题 manifest.json manifest.json文件中,点击“源码视图”,在此对象的最后添加以下代码: "h5" : {"devServer" : {"port" : 8080, //端口号"disableHostCheck" : true,"proxy" :…

leetcode刷题日记:100.Same Tree(相同的树)和101.Symmetric Tree(对称二叉树)

100.Same Tree(相同的树) 题目给了我们两棵树要我们判断这两颗树是否相同,我首先想到的就是前序序列与中序序列可以唯一确定一棵树,如果我能分别确定这两棵树的前序序列与中序序列,然后再分别比较它们的前序序列与中序序列就能得到这两棵树是…

算法训练营第十三天 | 239. 滑动窗口最大值、347.前 K 个高频元素

文章目录 对应力扣的题目链接思路分析解决方案 问题一 、239. 滑动窗口最大值 题目链接 : 239. 滑动窗口最大值 - 力扣(LeetCode) 思路分析 : 1、可能首先想到的是暴力破解 ,每一个区间,遍历一遍&#xf…

Harmony OS—UIAbility的使用

概述 UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面。一个应用可以有一个UIAbility,也可以有多个UIAbility,类似于Android 的 Activity&#xff0c…