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

(八)k8s实战-身份认证与权限

一、认证

  1. User Accounts
  2. Service Accounts

Service Account 自动化:

  • Service Account Admission Controller
  • Token Controller
  • Service Account Controller

1、Service Account Admission Controller

通过 Admission Controller 插件来实现对 pod 修改,它是 apiserver 的一部分。创建或更新 pod 时会同步进行修改 pod。当插件处于激活状态(在大多数发行版中都默认情况)创建或修改 pod 时,会按以下操作执行:
1、如果 pod 没有设置 ServiceAccount,则将 ServiceAccount 设置为 default。
2、确保 pod 引用的 ServiceAccount 存在,否则将会拒绝请求。
3、如果 pod 不包含任何 ImagePullSecrets,则将ServiceAccount 的 ImagePullSecrets 会添加到 pod 中。
4、为包含 API 访问的 Token 的 pod 添加了一个 volume。
5、把 volumeSource 添加到安装在 pod 的每个容器中,挂载在 /var/run/secrets/kubernetes.io/serviceaccount。

2、Token Controller

TokenController 作为 controller-manager 的一部分运行。异步行为:

  • 观察 serviceAccount 的创建,并创建一个相应的 Secret 来允许 API 访问。
  • 观察 serviceAccount 的删除,并删除所有相应的ServiceAccountToken Secret
  • 观察 secret 添加,并确保关联的 ServiceAccount 存在,并在需要时向 secret 中添加一个 Token。
  • 观察 secret 删除,并在需要时对应 ServiceAccount 的关联

3、Service Account Controller

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

二、授权(RBAC)

类别:

  1. Role
  2. ClusterRole
  3. RoleBinding
  4. ClusterRoleBinding

1、Role

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

# 查看已有的角色信息
kubectl get role -n ingress-nginx -oyaml

配置文件

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:labels:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxname: nginx-ingressnamespace: ingress-nginx
roles:
- apiGroups:- ""resources:- configmaps- pods- secrets- namespacesverbs:- get
- apiGroups:- ""resourceNames:- ingress-controller-label-nginxresources:- configmapsverbs:- get- update
- apiGroups:- ""resources:- configmapsverbs:- create

2、ClusterRole

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

# 查看某个集群角色的信息
kubectl get clusterrole view -oyaml

3、RoleBinding

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

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

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

配置文件

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:......
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename nginx-ingress-role
subjects:
- kind: ServiceAccountname: nginx-ingress-serviceaccountnamespace: ingress-nginx

4、ClusterRoleBinding

与 RoleBinding 相同,但是作用于集群之上,可以绑定到该集群下的任意 User、Group 或 Service Account

http://www.lryc.cn/news/147737.html

相关文章:

  • 数学建模:TOPSIS分析
  • 【Qt学习】10 利用QSharedMemory实现单例运行
  • FPGA应用于图像处理
  • vscode python 无法引入上层目录解决
  • [开发|java] java list 取某个属性最大的项
  • 关闭浏览器的跨域校验
  • USRP 简介,对于NI软件无线电你所需要了解的一切
  • RTE_Driver驱动框架和Keil下开发需要支持的xxx_DFP软件包分析
  • ImportError: Cannot load dynamic library. Did you compile LSD?
  • 音频应用编程
  • 软件测试/测试开发丨Python 学习笔记 之 链表
  • Matlab 使用经验分享(常用函数介绍;矩阵常见计算)
  • 软件工程(十七) 行为型设计模式(三)
  • 在抖音中使用语聚AI,实现自动回复用户视频评论、私信问答
  • pyqt5-快捷键QShortcut
  • 匿名函数( lambda 表达式)
  • 基于SSM的汽车维修管理系统——LW模板
  • Ceph的纠删码特性 EC(Erasure Code)代码流程
  • 盘点那些国际知名黑客(上篇)
  • 机器学习基础12-Pipeline实现自动化流程处理(基于印第安糖尿病Pima 数据集)
  • Ansible学习笔记15
  • 圆圈加数字的css
  • YOLOV5/YOLOV7/YOLOV8改进:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv
  • Docker数据管理(数据卷与数据卷容器)
  • 大量TCP连接滞留TIME_WAIT、SYN_SENT、CLOSE_WAIT状态的分析
  • kotlin怎么定义类
  • 如何查看数据集下载后保存的绝对路径?
  • 使用php实现微信登录其实并不难,可以简单地分为三步进行
  • 【LeetCode-中等题】24. 两两交换链表中的节点
  • 5.10 汇编语言:汇编过程与结构