k8s的安全机制

k8s是分布式集群管理工具,k8s作用是容器编排

1、安全机制核心:API server。API server作为整个集群内部通信的中介,也是外部控制的入口,所有的安全机制都是围绕api sserver来进行设计的。请求api server资源要满足3个条件:认证、鉴权、准入机制。三个条件都通过才能在k8s中创建资源

2、认证anthentcation方式

(1)http token:通过token识别合法用户。token是一个很长、很复杂的字符串,字符串是用来表达客户的一种方式,每一个token对应一个用户名,用户名存储在api server能够访问的文件中,客户端发起请求时,http header中包含token,token对应到api server,api server对应到用户名存储文件,解码查看是否对应用户名,验证通过可访问集群

(2)http base:用户名+密码的验证方式。用户名和密码都是通过base64进行加密,加密完成的字符串存储在http request的header Atuthorization中,发送给服务端。服务端收到加密字符串,解码后获取用户名和密码,验证通过,登录成功

(3)https证书:这是最严格、最严谨的方式。基于CA根证书签名的客户端身份进行验证

3、认证的访问类型

(1)k8s组件对api server的访问(kubelet、kube-proxy)

(2)pod对api server的访问(pod、coredns、dashborad)

4、安全性说明

(1)controller namnger、scheduler与api server在一台服务器,可以直接使用api server的非安全端口进行访问

(2)kubectl、kubelet、kube-proxy都是通过api server的https证书进行双向验证,都是用6443端口进行验证

5、签发证书的方式

(1)手动签发(二进制部署是手动签发证书。CA签发:把证书匹配到每个对应组件,然后访问6443即可)

(2)自动签发(kubeadm是自动签发证书。kubelet第一次访问api server使用token,一旦token通过后,controller manager会为kubelet生成一个证书,以后都是通过证书访问)

6、kubeconfig

此文件包含集群的参数,比如CA证书、API server地址、客户端的参数(客户端的证书和私钥、集群的名称和用户名)等。k8s组件都是通过启动时指定访问不同的kubeconfig文件,可以访问不同的集群,再到api server,再到namespace,再到资源对象,再到pod,再到容器。简而言之,kubeconfig既是集群的描述文件,也是集群信息的保存文件,包含了集群的访问方式和认证信息

./kube/config保存的是kubectl的访问认证信息

7、Service Account

pod中的容器访问api server依靠serviceaccount。由于动态的pod动作(增删改查),为每个pod手动生成一个证书太麻烦,于是k8s使用service account来进行循环认证,service account里包含了统一的认证信息,通过service account直接进行api server访问

8、Secret与SA 的关系

Kubernetes 设计了一种资源对象叫做 Secret,分为两类:

①用于保存 ServiceAccount 的 service-account-token

②用于保存用户自定义保密信息的 Opaque

Service Account 中包含三个部分:

①Token:是使用 API Server 私钥签名的 Token 字符串序列号,用于访问 API Server 时,Server 端认证

②ca.crt:ca 根证书,用于 Client 端验证 API Server 发送来的证书

③namespace:标识这个 service-account-token 的作用域名空间

默认情况下,每个 namespace 都会有一个 Service Account,如果 pod 在创建时没有指定 Service Account,就会使用 pod 所属namespace 的 Service Account。每个 pod 在创建后都会自动设置spec.serviceAccount 为 default(除非指定了其他 Service Accout)

9鉴权

之前的认证方式只确认双方都是可信的,可以相互通信,鉴权是为了确定请求方的访问权限

AlwaysDeny

拒绝所有(用于测试)

AlwaysAllow

允许所有(用于测试)

ABAC

attribute-based access control基于属性的访问控制

webhook

外部访问集群内部的鉴权方式

RBAC

role-base access control基于角色的访问控制。k8s的默认规则机制(常用)

①角色role——绑定角色到指定的命名空间rolebinding

指定命名空间的资源控制权限

②集群clusterrole——绑定集群clusterrolebinding

可以授权所有命名空间的资源控制权限

kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user kubernetes-admin

5、准入控制

准入控制是api server的一个准入控制器的插件列表,不同的插件可以实现不同的准入控制机制。一般情况下建议使用官方默认的准入控制器,比如limitranger命名空间的配额限制、serviceAccount、resourceQuota命名空间的配额限制

不同用户管理自己的命名空间实验

1、创建用户lucky,命名空间lucky-cloud

2、认证

①上传证书

②生成根证书

cd /etc/kubernetes/pki/

cfssl gencert -ca=ca.crt -ca-key=ca.key -profile=kubernetes /opt/lucky/lucky-csr.json | cfssljson -bare lucky

3、鉴权

kubeconfig保存token、鉴权信息等

使用上下文参数生成 lucky.kubeconfig 文件,查看证书

kubectl config use-context kubernetes --kubeconfig=lucky.kubeconfig4、准入机制

5、切换用户,测试操作权限

①第一次测试用户权限

lucky用户只能在lucky-cloud命名空间中查看pod的情况,其他的这个用户没有权限

若想lucky用户有这些权限,在rbac文件中加入这些权限

②第二次测试用户权限resources里一般给这两个权限,其他的权限可以加,但要和别的条件关联,较复杂

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Garbage First收集器(简称G1)

概述:Garbage First(简称G1)收集器是垃圾收集器技术发展历史上的里程碑式的成果,它开创了收集器面向局部收集的设计思路和基于Region的内存布局形式。 G1开创的基于Region的堆内存布局是它能够实现这个目标的关键。虽然G1也仍是遵…

开始学习Vue(路由)

一、什么是路由 SPA 指的是一个 web 网站只有唯一的一个 HTML 页面,所有组 件的展示与切换都在这唯一的一个页面内完成。 此时,不同组件之间的切换需要通过前端路由来实现。 结论:在 SPA 项目中,不同功能之间的切换&#xff0…

无人机航迹规划(六):七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划(提供MATLAB代码)

一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

LP-AM243x EtherNet/IP 连接施耐德 M241 EIP主站测试

硬件环境:LP-AM243x 开发板 施耐德 Modicon M241 软件环境: INDUSTRIAL-COMMUNICATIONS-SDK-AM243X MCU-PLUS-SDK-AM243X — MCU SDK for AM243x 调试过程: 首先,让AM243x能够运行 Null Boot, Starting NULL Boo…

力扣hot100 除自身以外数组的乘积 前后缀积

Problem: 238. 除自身以外数组的乘积 文章目录 思路前后缀积 思路 前后缀积 ⏰ 时间复杂度: O ( n ) O(n) O(n) 🌎 空间复杂度: O ( n ) O(n) O(n) class Solution {public int[] productExceptSelf(int[] nums){int n nums.length;int[] p new int[n];//除…

Obsidian - 使用小记(Typora切换过来)

文章目录 关于 Obsidian打开已有的 文件夹将图片改为 Typora 的保存文件夹 关于 Obsidian 官网 https://obsidian.md/github : https://github.com/obsidianmd 个人版免费 一直习惯用 Typora 编写markdown git 记录笔记,多次被安利 Obsidian 后,今天尝…

解决TortoiseGit软件Git Show log时显示Too many files to display的问题

1 问题描述 有时代码提交修改的文件比较多,当查看log时无法显示出来修改的文件列表,如下所示: 2 解决方法 将LogTooManyItemsThreshold尽可能配置得大一些。 三 参考资料 https://gitlab.com/tortoisegit/tortoisegit/-/issues/3878

session反序列化

据陈腾师傅所说: 1.漏洞产生原因:写入格式和读取格式不一样。 下面是三种常见的存储格式: 处理器 对应的存储格式 php键名竖线经过serialize()函数序列化处理的值php_serialize(php>5.54)经…

vue3+Element plus实现登录功能

一、想要实现的效果 二、搭建登录静态 1、实现左边背景和右边登录栏的总体布局布局&#xff1a; <el-row class"content"><!--el-col 列&#xff1a; --><el-col :span"16" :xs"0" class"content-left"></el-c…

司铭宇老师:电话销售心态培训:电话销售被拒绝怎么调整心态

电话销售心态培训&#xff1a;电话销售被拒绝怎么调整心态 在电话销售这个行业中&#xff0c;遭遇拒绝是家常便饭。无论你如何努力&#xff0c;总有那么些时候&#xff0c;客户会对你的产品或服务说“不”。然而&#xff0c;这并不意味着你的努力白费。关键在于如何调整心态&am…

洗内裤的小洗衣机买啥牌子的?四款家用小洗衣机推荐

随着内衣洗衣机的流行&#xff0c;很多小伙伴在纠结该不该入手一款内衣洗衣机&#xff0c;专门来洗一些贴身衣物&#xff0c;答案是非常有必要的&#xff0c;因为我们现在市面上的大型洗衣机只能做清洁&#xff0c;无法对我们的贴身衣物进行一个高强度的清洁&#xff0c;而小小…

Java|IDEA 运行和打包报错解决

IDEA 运行和打包报错解决 java.lang.NoSuchFieldError&#xff1a;com.sun.tools.javac.tree.JCTree$JCImport 报错信息 环境&#xff1a;JDK 21 java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field com.sun.t…

Messari发布重磅研报,波场TRON 2023 Q4期间实现多项突破

近日,顶级加密数据研究机构Messari发布了波场TRON 2023 Q4调研报告,报告从网络数据、生态、稳定币和RWA等多个方面对波场TRON进行了细致研究,并给与了波场TRON极大的肯定。这份调研报告帮助投资者和社区更好地了解波场TRON的发展前景和竞争优势。同时,这些数据和见解可以提高投…

嵌入式学习五

使用circuit JS模拟器讲解 一&#xff1a;欧姆定律 演示电压电阻的关系 欧姆定律 二&#xff1a;电阻 计算电阻串并联的阻值 电阻 电阻越串越大&#xff0c;越并越小 并联电路增加通路 三&#xff1a;电容器 观察电容的充放电 电容器 电容就是一个临时存储电量的容器 当电…

Unity_使用Image和脚本生成虚线段

生成如图样式的虚线段 原理&#xff1a;使用Image做一条线段&#xff0c;这个方法的原理就是给固定的片元长度&#xff0c;对Image进行分割&#xff0c;把片元添加到一个列表中&#xff0c;然后循环对列表中的偶数位进行隐藏&#xff0c;也可以调整线段的宽度 缺陷&#xff1…

力扣hot100 LRU 缓存 有序Map

Problem: 146. LRU 缓存 文章目录 思路&#x1f496; Code 思路 &#x1f468;‍&#x1f3eb; 参考题解 &#x1f469;‍&#x1f3eb; 参考图解 &#x1f496; Code ⏰ 两操作 时间复杂度: O ( 1 ) O(1) O(1) class LRUCache {int cap;LinkedHashMap<Integer, In…

【并发】什么是 AQS

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 AQS的主要特征和方法包括&#xff1a; 状态管理&#xff1a; 等待队列&#xff1a; 独占模式&#xff1a; 共享模式&#xff1…

提高塑料制品的塑料透光率测量仪

塑料透光率检测仪是一种用于测量塑料材料透光率的仪器。透光率是指光线通过材料后&#xff0c;被吸收、反射和散射的量与总光线量的比例。塑料透光率检测仪在塑料制品的研发、生产和质量控制等方面具有广泛的应用。 塑料透光率检测仪的原理是使用光束通过待测塑料样品&#xff…

PageHelper学习使用

基于mybatis源码和PageHelper源码进行的测试 版本 mybatis3.5.0&#xff0c;pageHelper6.0.0 测试用例 依赖 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.15</version> &…

STM 32 SPI 调试的问题

问题&#xff1a;STM32G0 系列 SPI单线与AD7694通信采集数据&#xff0c;使用stm32cube 生成的HAL库编写 刚开始HAL_SPI_Receive&#xff0c;执行到这句时&#xff0c;一直卡在这里不在往下执行。 最终发现&#xff0c;我使用正点原子的 sysytick 延时函数delay_us, 与这里用…