【k8s】用户和服务账户联系(user、serviceaccount、sa)

文章目录

  • 概述
        • **用户(User)**
        • **服务账户(ServiceAccount)**
        • **用户与服务账户的区别**
        • **Pod 的身份来源:用户 vs 服务账户**
  • 总结

相关文章:
【k8s】serviceAccount、role、RoleBinding入门示例
【k8s】pod和serviceaccount关系
【k8s】用户和服务账户联系(user、serviceaccount、sa)
【k8s】–as=system:serviceaccount:demo-rbac:demo-user模拟某组件的某sa

概述

在 Kubernetes 和 OpenShift 中,用户和服务账户是两种不同的概念,用于控制权限和访问资源:

用户(User)
  1. 定义:
    用户是集群外部的实体,代表人或应用程序,通过 API 或命令行与 Kubernetes 集群进行交互。

  2. 来源:
    用户由集群管理员创建,可以是一个真实用户(如开发人员)或一个外部系统(如 CI/CD 工具)。它们是集群外部的身份,没有自动与 Pod 关联。

  3. 使用场景:

    • 用户通过工具(如 kubectloc)或 API 调用创建、管理资源(如 Pod、Deployment)。
    • 用户需要认证才能访问集群,通常通过以下方式认证:
      • 证书(x509 证书)
      • OAuth Token(在 OpenShift 中常用)
      • 服务提供的身份认证(如 OIDC 或 LDAP)
    • 用户权限通过 RoleClusterRoleRoleBindingClusterRoleBinding 授予。
  4. 与 Pod 的关系:
    用户本身不会直接运行 Pod,但可以通过创建资源(如 Deployment、Pod、Job 等)间接控制 Pod 的行为。Pod 的权限最终由 ServiceAccount 决定,而不是用户。


服务账户(ServiceAccount)
  1. 定义:
    服务账户是 Kubernetes 内部的一种身份,用于 Pod 和其他控制器(如 Deployment、Job)与 Kubernetes API 交互。

  2. 来源:
    每个 Pod 都必须关联一个服务账户:

    • 如果未显式指定服务账户,系统会自动使用命名空间中的默认服务账户(default)。
    • 你也可以创建自定义服务账户并为其分配特定权限。
  3. 作用:

    • 服务账户是 Kubernetes 集群内部的身份,用于 Pod 或控制器与 API 交互(例如获取 ConfigMap、Secret 或更新资源状态)。
    • 每个服务账户都有一个关联的令牌,挂载到 Pod 中,供应用程序访问 Kubernetes API。
  4. 与 Pod 的关系:

    • 服务账户直接与 Pod 绑定。
    • Pod 的运行时权限和安全上下文由绑定的服务账户和分配的 SCC 决定。

用户与服务账户的区别
属性用户(User)服务账户(ServiceAccount)
作用范围外部用户与 Kubernetes 交互Pod 或控制器内部与 Kubernetes 交互
身份来源通过认证系统(如证书、Token、OIDC 等)Kubernetes 内部自动创建或手动创建
使用对象人类用户、外部应用程序Pod 或控制器(如 Deployment、CronJob)
权限管理通过 Role/ClusterRole 授予权限通过 Role/ClusterRole 和 SCC 授予权限
与 Pod 的关系间接关系,通过 API 操作 Pod直接关系,服务账户是 Pod 的运行身份


Pod 的身份来源:用户 vs 服务账户

1. 用户创建 Pod:

  • 用户通过 CLI 或 API 创建 Pod:

    oc create -f pod.yaml
    
  • 用户需要被授予 create pods 的权限(通过 Role/ClusterRole)。
    系统会检查用户是否有权限执行此操作

2.服务账户运行 Pod:

  • 当 Pod 被创建后,它会使用指定的 serviceAccountName。
  • 如果未指定,则使用默认的 default 服务账户。
  • 该服务账户决定了 Pod 在运行时的权限和安全上下文(指的是scc)。

总结

  • 用户是集群外部的实体,创建和管理 Kubernetes 资源。
  • 服务账户是 Kubernetes 内部的实体,用于 Pod 与集群 API 的交互。
  • SCC 是绑定到用户或服务账户的,控制用户是否可以创建特定类型的 Pod,以及 Pod 运行时是否满足安全约束。
  • Pod 的权限最终由服务账户决定,而不是直接由用户决定。

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

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

相关文章

浅谈云计算03 | 云计算的技术支撑(云使能技术)

云计算的技术支撑 一、定义与内涵1.1 定义与内涵 二、云计算使能技术架构2.1 宽带网络和 Internet 架构2.2 数据中心技术2.3 虚拟化技术2.4 Web 技术2.5 多租户技术2.6 服务技术 一、定义与内涵 1.1 定义与内涵 云计算技术包含一些基础的关键技术,这里称为使能技术…

Open FPV VTX开源之betaflight配置

Open FPV VTX开源之betaflight配置 1. 源由2. 配置3. 总结4. 参考资料5. 补充 - 飞控固件版本 1. 源由 飞控嵌入式OSD - ardupilot配置使用betaflight配套OSD图片。 Choose correct font depending on Flight Controller SW. ──> /usr/share/fonts/├──> font_btfl…

【数字化】华为-用变革的方法确保规划落地

导读:华为在数字化转型过程中,深刻认识到变革的必要性,并采用了一系列有效的方法确保转型规划的有效落地。华为认为,数字化转型不仅仅是技术层面的革新,更是企业运作模式、流程、组织、文化等深层次的变革。数字化转型…

Vue2+OpenLayers给标点Feature添加信息窗体(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、代码实现 3.1、信息窗体DOM元素 3.2、创建Overlay 3.3、创建一个点 3.4、给点初始化点击事件 3.5、完整代码 四、Gitee源码 一、案例截图 二、安装OpenLayers库 npm install ol 三、代码实现 初始化变量: d…

CRMEB多商户商城系统JAVA版 B2B2C商家入驻平台系统独立版全开源

系统框架 基于Java vueuni-app开发,并采用业界主流开发框架SpringBoot; 前端开发中,Web PC管理端使用vue element山,移动端使用uni-app框架,前后端分离开发;

【Linux】进程状态

一、概念 我们需要知道进程的不同状态。一个进程可以有几个状态(在Linux内核里,进程有时候也叫做任务) 在操作系统原理中:运行状态分为以下三种:运行状态(执行)、阻塞状态、就绪状态 1. 运行状…

UE材质节点Fresnel

Fresnel节点 ExponentIn 控制边缘透明度 BaseReflectFractionIn 控制中心透明度

LeetCode100之搜索二维矩阵(46)--Java

1.问题描述 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回…

“AI 自动化效能评估系统:开启企业高效发展新征程

在当今数字化飞速发展的时代,企业面临着日益激烈的市场竞争,如何提升效率、降低成本成为了企业生存与发展的关键。AI 自动化效能评估系统应运而生,它如同一把智能钥匙,为企业开启了高效发展的新征程。 AI 自动化效能评估系统&…

primitive 编写着色器材质

import { nextTick, onMounted, ref } from vue import * as Cesium from cesium import gsap from gsaponMounted(() > { ... })// 1、创建矩形几何体,Cesium.RectangleGeometry:几何体,Rectangle:矩形 let rectGeometry new…

提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息

网络和IP地址计算器 https://www.sojson.com/convert/subnetmask.html提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息。 子网掩码转换 子网掩码 /26 的含义二进制表示:/26 表示前 26 位是网络部分,剩下的 6 位是主机部分。对应的子网掩码为 255…

Linux 服务器挖矿木马防护实战:快速切断、清理与加固20250114

Linux 服务器挖矿木马防护实战:快速切断、清理与加固 引言 挖矿木马作为一种常见的恶意软件,对服务器资源和安全构成严重威胁。据安全机构统计,2023 年全球约 45%的 Linux 服务器遭受过挖矿木马攻击,平均每台被感染服务器每月造…

6.1 MySQL数字函数和条件函数

以前我们在课程中使用过一些mysql的内置函数,比如说四舍五入的round函数,做日期计算的data, datediff函数等等。那么本次课程咱们就来系统的学习一下mysql的这些内置函数,我们使用编程语言写程序的时候,通常会把某一项业务功能封装…

【如何从0到1设计测试用例使用Fiddler完成弱网测试】

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 ⭐⭐⭐测试用…

Oracle EBS GL定期盘存WIP日记账无法过账数据修复

系统环境 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题症状 用户反映来源为“定期盘存”和类别为“WIP”的日记账无法过账,标准日记账的界面上的过账按钮灰色不可用。但是,在超级用户职责下,该日记账又可以过账,细心检查发现该业务实体下有二个公司段值15100和…

【Axure视频教程】中继器表格——拖动排序

今天教大家在Axure用中继器制作拖动排序效果的原型模板,我们可以通过拖动的方式,将对应的行摆放到任意位置,效果如下图所示: 这个原型模板是用中继器制作的,所以使用也很简单,只需要在中继器表格里填写对应…

python学opencv|读取图像(三十一)缩放图像的三种方法

【1】引言 前序学习进程中,我们至少掌握了两种方法,可以实现对图像实现缩放。 第一种方法是调用cv2.resize()函数实现,相关学习链接为: python学opencv|读取图像(三)放大和缩小图像_python opencv 读取图…

Elasticsearch:使用全文搜索在 ES|QL 中进行过滤 - 8.17

8.17 在 ES|QL 中引入了 match 和 qstr 函数,可用于执行全文过滤。本文介绍了它们的作用、使用方法、与现有文本过滤方法的区别、当前的限制以及未来的改进。 ES|QL 现在包含全文函数,可用于使用文本查询过滤数据。我们将回顾可用的文本过滤方法&#xf…

Java 0114学习总结

1.如何解决线程安全问题 当多个线程共享一个资源时,则可能出现线程安全问题。java中解决线程安全的方式有三种: ①同步代码快 ②同步方法 ③Lock锁 1.1同步代码块 synchronized(锁对象){ 需要同步的代码。 } ①synchronized 同步的意思; ②锁…

【Unity-Animator】通过 StateMachineBehaviour 实现回调

StateMachineBehaviour 简介 StateMachineBehaviour是一个基类,所有状态脚本都派生自该类。它可以在状态机进入、退出或更新状态时执行代码,而无需编写自己的逻辑来测试和检测状态的变化。这使得开发者可以更方便地处理状态转换时的逻辑,例…