【Kubernetes】身份认证与鉴权

devtools/2024/10/19 15:39:52/

一,认证

所有 Kubernetes 集群有两类用户:由Kubernetes管理的ServiceAccounts(服务账户)和(Users Accounts)普通账户。

两种账户的区别:

  • 普通帐户是针对(人)用户的,服务账户针对Pod进程
  • 普通帐户是全局性。在集群所有namespaces中,名称具有唯一性。
  • 通常,群集的普通帐户可以与企业数据库同步,新的普通帐户创建需要特殊权限。服务账户创建目的是更轻量化,允许集群用户为特定任务创建服务账户
  • 普通帐户和服务账户的审核注意事项不同。
  • 对于复杂系统的配置包,可以包括对该系统的各种组件的服务账户的定义。

1,User Accounts

普通账户是假定被外部或独立服务管理的,由管理员分配 keys用户像使用 Keystone 或 google 账号一样,被存储在包含Usernames和Passwords的list 的文件里.

需要注意:在Kubernetes 中不能通过API调用将普通用户添加到焦群中。

2,Service Accounts

# 获取Service Accounts
kubectl get serviceaccount 或者 [sa]

自动化的三种控制器:

2.1 Service Account Admission Controller

通过 Admission Controller 插件来实现对 pod 修改,它是apiserver 的一部分。创建或更新 pod 时会同步进行修改 pod。当插件处于激活状态(在大多数发行版中都默认情况)创建或修改 pod 时,会按以下操作执行:

  • 如果 pod 没有设置 serviceAccount,则将 ServiceAccount设置为 default。
  • 确保 pod 引用的 ServiceAccount 存在,否则将会拒绝请求。
  • 如果 pod 不包含任何 ImagePullsecrets,则将ServiceAccount的 lmagePullsecrets 会添加到 pod 中。
  • 为包含 API访问的 Token 的 pod 添加了一个 volume。
  • 把 volumesource 添加到安装在 pod 的每个容器中,挂载在/var/run/secrets/kubernetes.io/serviceaccount.
2.2 Token Controller
2.3 Service Account Controller

Service Account Controller 在namespaces 里管理ServiceAccount,并确保每个有效的 namespaces 中都存在一个名为"default" 的ServiceAccount。

二,授权(RBAC)

角色:Role

代表一个角色,会包会一组权限,没有拒绝规则,只是附加允许。它是 Namespace 级别的资源,只能作用与Namespace之内。

#查春已有的角色信息
kubectl get role -n ingress-nginx -o yaml

在这里插入图片描述

集群角色:ClusterRole

功能与 Role 一样,区别是资源类型为集群类型,而 Role 只在Namespace

# 查看某个集群角色的详细信息
kubectl get clusterrole [集群名] -o yaml

角色绑定:RoleBinding

Role 或 ClusterRole 只是用于制定权限集合,具体作用与什么对象上,需要使用 RoleBinding 来进行绑走。

作用于 Namespace 内,可以将 Role 或 ClusterRole 绑定到User、Group、service Account 上.

#查看 rolebinding 信息
kubectl get rolebinding --all-namespaces
或
kubectl get rolebinding -A#查看指定 rolebinding 的配置信息
kubectl get rolebinding <role_binding_name> --all-namespaces -oyaml
或
kubectl get rolebinding <role_binding_name> -A -oyaml

在这里插入图片描述

集群角色绑定:ClusterRoleBinding

相关内容同角色绑定!
在这里插入图片描述


http://www.ppmy.cn/devtools/95050.html

相关文章

力扣题/二叉树/二叉树中的最大路径和

二叉树中的最大路径和 力扣原题 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树…

Qt:exit,quit,close的用法及区别

前言 虽然能从单词的字面意思大致理解这些函数的意思&#xff0c;但是总感觉不出来它们的区别以及用法&#xff0c;特地去研究一下 正文 在 Qt 中&#xff0c;quit、exit 和 close 都是用于终止程序或关闭窗口的方法 1. QApplication::quit() 注意&#xff1a;注意quit() …

【6大设计原则】依赖倒置原则:构建灵活软件架构的基石 - 通过代码实例深入解析

1.引言 1.1为什么要学习依赖倒置原则 在软件开发过程中&#xff0c;我们经常需要对代码进行修改和扩展。如果代码之间的耦合度过高&#xff0c;那么在进行修改或扩展时&#xff0c;可能会对其他部分的代码产生影响&#xff0c;甚至引发错误。这就要求我们在编写代码时&#xf…

Java-自定义注解操作日志记录处理(@Pointcut注解不是必须的)

在Java中,使用自定义注解结合Spring AOP来实现操作日志记录是一种常见的做法。这种方式可 以帮助你轻松地在不修改业务代码的情况下增加日志记录的功能。 下面我将详细介绍如何定义一个自定义注解,并结合Spring AOP来实现操作日志记录的功能。 1. 定义自定义注解 首先,我…

【后端记录】修复MySql的错误修改的数据记录【binlog修复】

前言 今天入门后端的时候&#xff0c;不小心改了非预期的数据&#xff0c;因为还没学到事务&#xff0c;所以恢复数据还比较麻烦&#xff0c;站在巨人的肩膀上还是解决了&#xff0c;原文连接在下面 https://blog.csdn.net/qq_42874315/article/details/140480570 解决办法 原…

Docker Compose与私有仓库

Docker Compose与私有仓库 docker-compose -v 查看版本信息 Docker Compose的应用 创建APACHE容器 vim docker-compose.yaml yaml文件缩进严格&#xff1b;冒号后有内容需要加空格&#xff0c;冒号后无内容一般不加空格 冒号后的内容中若包含路径‘/’或‘&#xff1a;’时…

我的第一个CUDA程序

MatAdd算法 实现两个矩阵对应元素相加 #include <stdio.h> #include <stdlib.h>// 矩阵加法函数 void MatAdd(int height, int width) {// 在主机内存中为 A、B 和 C 分配内存float* A (float*)malloc(height * width * sizeof(float));float* B (float*)malloc…

Hive3:常用查询语句整理

一、数据准备 建库 CREATE DATABASE itheima; USE itheima;订单表 CREATE TABLE itheima.orders (orderId bigint COMMENT 订单id,orderNo string COMMENT 订单编号,shopId bigint COMMENT 门店id,userId bigint COMMENT 用户id,orderStatus tinyint COMMENT 订单状态 -3:用…