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

ops/2025/1/12 15:34:26/

文章目录

  • 概述
        • **用户(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.ppmy.cn/ops/149487.html

相关文章

【AIGC-ChatGPT进阶提示词指令】命运之轮:一个融合神秘与智慧的对话系统设计

引言 在人工智能与用户交互的发展历程中,如何创造一个既能提供实质性帮助,又能带来独特体验的对话系统,一直是一个充满挑战的课题。本文将介绍一个别具一格的对话系统设计——“命运之轮”,它通过将传统的塔罗牌占卜元素与现代技…

js策略模式

定义一组算法,将每个算法封装成一个独立的类,并使它们可以互相替换。策略模式使得算法的变化不会影响到使用算法的客户。 const priceProcessor {pre(originPrice) {if (originPrice > 100) {return originPrice - 20;}return originPrice * 0.9;}…

Linux 环境下编译安装 OpenCV 4.8.x

在 Linux 环境下编译安装 OpenCV 4.8.x 需要安装一系列依赖库。以下是详细的步骤说明,并附上每个依赖库的作用解释。 1. 环境准备 操作系统 推荐使用 Ubuntu 20.04/22.04 或其他基于 Debian 的 Linux 发行版。 编译器 GCC 9 或更高版本(默认已安装&a…

基于ADAS 与关键点特征金字塔网络融合的3D LiDAR目标检测原理与算法实现

一、概述 3D LiDAR目标检测是一种在三维空间中识别和定位感兴趣目标的技术。在自动驾驶系统和先进的空间分析中,目标检测方法的不断演进至关重要。3D LiDAR目标检测作为一种变革性的技术,在环境感知方面提供了前所未有的准确性和深度信息. 在这里&…

【spark源码修改】hive3.1.3 spark3.5.4编译,需要修改源码,最终编译成功

【spark源码修改】hive3.1.3 spark3.5.4编译,需要修改源码,最终编译成功 1. 准备安装包与maven编译环境1.1 安装环境准备1.2 修改pom1.3 打包命令2. 编译与问题解决2.1 开始编译 失败, 缺包pentaho-aggdesigner-algorithm:pom:5.1.5-jhyde2.2 Hive Spark Remote Client 模块…

IOS界面传值-OC

1、页面跳转 由 ViewController 页面跳转至 NextViewController 页面 &#xff08;1&#xff09;ViewController ViewController.h #import <UIKit/UIKit.h>interface ViewController : UIViewControllerend ViewController.m #import "ViewController.h" …

Navicat Premium 16.0.90 for Mac 安装与free使用

步骤 1.打开下好的 dmg 文件 (这个界面不要关闭&#xff09; 2.将Navicat Premium 拖动至 Applications 这时出现 点击取消。 3.点开系统设置(系统偏好设置) -> 隐私与安全 -> 安全性 -> 允许以下来源的应用程序 可以看到只有 App Store 和 App Store与已知开发者…

本地服务器Docker搭建个人云音乐平台Splayer并实现远程访问告别烦人广告

前言 大家好&#xff01;今天我要给大家分享的是如何在Ubuntu上用Docker快速搭建高颜值无广告的某抑云音乐播放器Splayer的详细流程&#xff0c;并且结合cpolar内网穿透工具实现远程访问。如果你是音乐爱好者&#xff0c;经常需要在外办公或旅行&#xff0c;这个教程绝对能让你…