当前位置: 首页 > news >正文

【Kubernetes】身份认证与鉴权

一,认证

所有 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.lryc.cn/news/425595.html

相关文章:

  • 数据集与数据库:有什么区别?
  • BurpSuite
  • NetApp数据恢复—NetApp存储误删除文件如何恢复数据?
  • 基于springboot的医药管理系统
  • Android中的EventBus的用法
  • 梧桐数据库(WuTongDB):数据库在数据处理中是如何利用缓存机制的
  • C语言-数据类型
  • 左值引用、右值引用、移动构造
  • tekton通过ceph挂载node_modules的时候报错failed to execute command: copying dir: symlink
  • Xil_DCacheFlushRange的用法
  • k8s使用subpathexpr和hostpath分pod名字持久化日志
  • FChen的408学习日记--三次握手和四次握手
  • Unity技巧:轻松实现鼠标悬停文本时的动态变色效果
  • 谷歌账号活动异常,或者申诉回来以后需要手机验证的原因,以及验证手机号的错误操作和正确操作
  • System V IPC奥秘:解锁共享内存、消息队列与信号量的高效通信之路
  • 怎么将pdf转为ppt文件?pdf转ppt的8个方法
  • 【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向笔记 Task03 大咖项目分享 人话八股文Bakwaan_Buddy项目开发尝试
  • 如何在wordpress当中使用插件WP Coder(将html、css、javascript应用到wordpress上)
  • ActiveMQ、RabbitMQ、Kafka、RocketMQ在消息回溯、消息堆积+持久化、消息追踪、消息过滤的区别
  • 使用ITextRenderer导出PDF后无法打开问题,提示‘无法打开此文件‘
  • STL必须掌握的几大常见算法
  • HAproxy 七层负载均衡调度器详解及配置
  • Python学习笔记--私有属性、构造方法、析构方法、常用内置方法
  • 4章8节:用R做数据重塑,行列命名和数据类型转换
  • 浏览器发出请求到响应的过程
  • eNSP 华为划分VLAN
  • 公用事业公司签署大规模电力供应协议
  • C语言 | Leetcode C语言题解之第341题扁平化嵌套列表迭代器
  • 冷知识:编程第一人是位伟大的女性
  • Python爬虫使用实例