K8S安全认证
一。用户认证的基本框架
在K8S集群中,客户端通常有两类:
1.User Account:一般独立于K8S之外的其他服务管理的用过户账号
2.Service Account:K8S管理的账号,用于为Pod中的服务进程在访问K8S提供身份标识
ApiServer是访问及管理资源对象的唯一入口,任何一个请求访问ApiServer,都要经过以下三个过程
1.authentication(认证):身份鉴别,只有正确的账号才能通过认证
2.authorization(授权):判断用户是否有权限对访问的资源执行特定的动作
3.admission control(准入控制):用于补充授权机制以实现更精细的控制访问控制功能
二。认证管理:
K8S集群安全的关键在于如何识别并认证客户端的身份,他提供了客户端3种认证方式:
1.HTTP bash认证:通过用户名+密码的认证方式
2.HTTP Token认证:通过一个Token来识别合法用户
3.HTTPS证书认证:基于CA根证书签名的双向数字认证的认证方式
注释:K8S配置了多种认证方式,只要其中一种通过即可
三。授权管理:
授权发生在认证成功之后,通过了认证就可以知道请求用户是谁,然后K8S会根据事先定义的授权的授权策略来决定用户是否具有访问权限:
API Server目前常见的授权策略:
1.AlwaysDeny:表示拒绝所有请求,一般用户测试
2.AlwaysAllow:允许接受所有请求,相当于集群不需要授权流程
3.ABAC:基于属性的访问控制,表示使用用户配置的授权配置的授权规则对用户请求匹配和控制
4.Webhook:通过调用外部REST服务进行授权
5.Node:是一种专用的模式,用于对K8S发出的请求进行访问控制
6.RBAC:基于角色的访问控制
其中涉及了以下概念:
对象:User,Group,ServiceAccount
角色:代表着一组定义的资源上的课操作的动作集合
绑定:将定义好的角色和用户绑定到一起
四。操作方式:
使用apiserver证书去签署:
1.cd /etc/kubernetes/pki:进入目录
2.(umask 077;openssl genrsa -out devman.key 2048)
genrsa
是 openssl
的一个子命令,用于生成 RSA 私钥。-out devman.key
指定将生成的私钥保存到 devman.key
文件中,2048
表示私钥的长度为 2048 位
3.openssl req -new -key devman.key -out devman.csr -subj "/CN=devman/O=devgroup"
对于证书devman.csr提供私钥,subj "/CN=devman/O=devgroup"
:-subj
选项用于指定 CSR 的主题信息。CN
表示通用名称(Common Name),这里设置为 devman
;O
表示组织(Organization),这里设置为 devgroup
。
4.openssl x509 -req -in devman.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out devman.csr -days 365
penssl x509
:x509
子命令用于处理 X.509 证书,-req
:表示输入是一个 CSR,-in devman.csr
:指定输入的 CSR 文件为 devman.csr
,CA ca.crt
:指定使用的 CA(证书颁发机构)证书文件为 ca.crt,
-CAkey ca.key
:指定使用的 CA 私钥文件为 ca.key,
-CAcreateserial
:如果 CA 证书的序列号文件不存在,会自动创建一个-days 365
:指定生成的证书的有效期为 365 天。
5.kubectl config set-cluster kubernetes --embed-certs=true --certificate-authority=/etc/kubernetes/pki/ca.crt --server=https://192.168.142.133:6443
kubectl config set-credentials
:用于配置 Kubernetes 用户的认证信息,devman
:指定用户的名称为 devman,
--embed-certs=true
:同样表示将证书信息嵌入到 kubeconfig
文件中,-client-certificate=/etc/kubernetes/pki/devman.csr
:这里应该是 --client-certificate=/etc/kubernetes/pki/devman.crt
,因为客户端证书应该是经过 CA 签名后的证书文件(.crt
扩展名),而不是 CSR 文件。指定用于客户端认证的证书文件路径,--client-key=/etc/kubernetes/pki/devman.key
:指定用于客户端认证的私钥文件路径。
6.kubectl config set-credentials devman --embed-certs=true --client-certificate=/etc/kubernetes/pki/devman.csr --client-key=/etc/kubernetes/pki/devman.key
kubectl config set-context
:用于配置 Kubernetes 的上下文信息,上下文定义了集群、用户和命名空间的组合,devman@kubernetes
:指定上下文的名称为 devman@kubernetes,
--cluster=kubernetes
:指定该上下文使用的集群为之前配置的 kubernetes
集群,--user=devman
:指定该上下文使用的用户为之前配置的 devman
用户。
7.kubectl config set-context devman@kubernetes --cluster=kubernetes --user=devman
8.kubectl config use-context devman@kubernetes:切到devman的身份
注释:kubectl config use-context kubernetes-admin@kubernetes:切换回管理员
9.vi devman.yml
10.kubectl apply -f devman.yml
测试:切换回devman身份进行获取pod值
相关文章:

K8S安全认证
一。用户认证的基本框架 在K8S集群中,客户端通常有两类: 1.User Account:一般独立于K8S之外的其他服务管理的用过户账号 2.Service Account:K8S管理的账号,用于为Pod中的服务进程在访问K8S提供身份标识 ApiServer是…...

mybatis-plus里的com.baomidou.mybatisplus.core.override.MybatisMapperProxy 类的详细解析
以下是 com.baomidou.mybatisplus.core.override.MybatisMapperProxy 类的详细解析: 1. 类的作用 MybatisMapperProxy 是 MyBatis-Plus 框架中用于实现 Mapper 接口动态代理的核心类。它继承自 MyBatis 的 MapperProxy,并扩展了以下功能: …...

在java程序中,类,进程,线程他们之间的关系以及main方法与他们之间的关系
在 Java 程序里,类、进程、线程各自有着不同的概念,同时也存在着紧密的联系,下面来详细分析它们之间的关系以及 main 方法和它们的关系。 类 类是 Java 中最基础的编程单元,是一种自定义的数据类型,它定义了对象的属…...

[ACTF2020 新生赛]BackupFile题解
启动环境 进入后只有一段话,没有其他的说法。 解题方法 但是题目命名为backup file,应该是备份文件的意思,那么就用dirsearch工具来扫一下看看。 查看扫描结果 index.php.bak 下载下这个文件,查看文件内容。 进行php代码审计…...

如何修改npm的全局安装路径?
修改 npm 的全局安装路径可以通过以下步骤完成,确保全局包(使用 -g 安装的模块)和缓存文件存储到自定义路径。以下是详细步骤: 1. 创建自定义路径的目录 在目标路径下创建两个文件夹,分别用于存储全局模块和缓存文件…...

巧用 Element - UI 实现图片上传按钮的智能隐藏
引言 在前端开发中,使用 Element - UI 组件库来构建用户界面是非常常见的操作。其中图片上传功能更是在许多项目中频繁出现,比如用户头像上传、商品图片上传等场景。有时候,我们会有这样的需求:当上传图片达到一定数量后…...
Ubuntu18.04 升级最新版本Cmake
1.升级原因 ubuntu18.04默认安装的cmake版本为 3.10.2;在编译一些软件的时候,版本太低导致无法编译 2.从cmake官网下载二进制安装包 地址:https://cmake.org/download/ 包:cmake-4.0.1-linux-x86_64.tar.gz 3.上传下载好的安装包到ubuntu…...
关于mysql的事务和索引
1. 事务四大特性(ACID) 原子性:事务的操作要么全部成功,要么全部失败回滚,不可分割。 一致性:事务执行前后,数据必须满足业务规则(如账户总额不变)。 隔离性࿱…...

从“拼凑”到“构建”:大语言模型系统设计指南!
你有没有试过在没有说明书的情况下组装宜家家具?那种手忙脚乱却又充满期待的感觉,和设计大语言模型(LLM)系统时如出一辙。如果没有一个清晰的计划,很容易陷入混乱。我曾经也一头扎进去,满心期待却又手足无措,被网上那些复杂的架构图搞得晕头转向。于是,我坐下来,把它们…...
mybatis xml中特殊字符处理
1,CDATA区: 它的全称为character data,以"<![CDATA[ "开始,以" ]]>" 结束,在两者之间嵌入不想被解析程序解析的原始数据,解析器不对CDATA区中的内容进行解析,而是将这些数据原封…...

【数据结构与算法】从完全二叉树到堆再到优先队列
完全二叉树 CBT 设二叉树的深度为 h , 若非最底层的其他各层的节点数都达到最大个数 , 最底层 h 的所有节点都连续集中在左侧的二叉树叫做 完全二叉树 . 特点 对任意节点 , 其右分支下的叶子节点的最底层为 L , 则其左分支下的叶子节点的最低层一定是 L 或 L 1 .完全二叉树…...
【linux】SSH 连接 WSL2 本地环境的完整步骤
SSH 连接 WSL2 本地环境的完整步骤 要在 Windows 的 WSL2 环境中启用 SSH 服务,并允许本地或局域网设备连接,需完成以下步骤: 1. 安装 openssh-server sudo apt update sudo apt install openssh-server -y2. 配置 sshd 修改配置文件 sud…...
vue项目前后端分离设计
在Vue前端架构中,通过分层结构和模块化设计实现高效的前后端分离,需要系统性规划各层职责、接口管理和数据流控制。以下是结合业界最佳实践的完整方案: 一、分层架构设计 1. 分层结构(自上而下) 层级职责示例技术实现…...

【Linux网络】构建类似XShell功能的TCP服务器
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...

Spring Boot 配置源详解(完整版)
Spring Boot 配置源详解(完整版) 一、配置源加载顺序与优先级 配置源类型优先级顺序(从高到低)对应配置类/接口是否可覆盖典型文件/来源命令行参数(--keyvalue)1(最高)SimpleComman…...
JDK 17 与 Spring Cloud Gateway 新特性实践指南
一、环境要求与版本选择 1. JDK 17 的必要性 最低版本要求:Spring Boot 3.x 及更高版本(如 3.4)强制要求 JDK 17,以支持 Java 新特性(如密封类、模式匹配)和性能优化。JDK 17 核心特性: 密封类…...
异构迁移学习(无创脑机接口中的跨脑电帽迁移学习)
本文介绍BCI中的跨脑电帽的迁移学习最新算法。 (发表于2025 arxiv,应该属于投稿阶段,这个场景具有非常不错的研究意义和前景) 最新跨脑电帽异构算法github开源代码 SDDA算法原文 一、脑机接口绪论 脑机接口(BCI)指在人或动物大脑与外部设备之间创建的直接连接,通过脑…...

puppeteer注入浏览器指纹过CDP
一、背景 通过puppeteer爬取目标网站时,经常会被对方网站检测到,比如原生puppeteerCDP特征非常明显,另外指纹如果一直不变,也会引发风控 二、实现 通过以下几行代码即可轻松过大部分检测点,并且能够切换指纹&#x…...
1.8软考系统架构设计师:系统架构设计师概述 - 练习题附答案及超详细解析
系统架构设计师概述综合知识单选题 每道题均附有答案解析: 架构设计师的定义、职责和任务 1、系统架构设计师的核心职责是: A. 编写具体功能模块的代码 B. 制定系统整体架构和技术选型 C. 管理项目预算和进度 D. 直接对接客户进行销售支持 答案&#x…...

软件项目实施全流程及交付物清单
需求分析 -> 概要设计 -> 详细设计 -> 开发实现 -> 测试 -> 部署 -> 运维 一、确认项目目标、范围和团队成员 二、收集和分析客户需求,确定需求规格 三、制定详细的项目计划,包括时间表、资源计划、预算 四、系统架构设计…...

【2025计算机网络-面试常问】http和https区别是什么,http的内容有哪些,https用的是对称加密还是非对称加密,流程是怎么样的
HTTP与HTTPS全面对比及HTTPS加密流程详解 一、HTTP与HTTPS核心区别 特性HTTPHTTPS协议基础明文传输HTTP SSL/TLS加密层默认端口80443加密方式无加密混合加密(非对称对称)证书要求不需要需要CA颁发的数字证书安全性易被窃听、篡改、冒充防窃听、防篡改…...

从梯度消失到百层网络:ResNet 是如何改变深度学习成为经典的?
自AlexNet赢得2012年ImageNet竞赛以来,每个新的获胜架构通常都会增加更多层数以降低错误率。一段时间内,增加层数确实有效,但随着网络深度的增加,深度学习中一个常见的问题——梯度消失或梯度爆炸开始出现。 梯度消失问题会导致梯…...
2025.4.26总结
今天把马良老师的《职场十二法则》看完后,感触极大,这们课程就是一场职场启蒙课。 虽然看过不少关于职场的书籍,但大多数是关于职场进阶,方法方面的。并没有解答“面对未来二三十年的职场生涯,我该怎么去看待自己的工…...

Uni-App 多端电子合同开源项目介绍
项目概述 本项目是一款基于 uni-app框架开发的多端电子合同管理平台,旨在为企业及个人用户提供高效、安全、便捷的电子合同签署与管理服务。项目创新性地引入了 “证据链”与“非证据链”两种签署模式,满足不同场景下的签署需求,支持多种签署…...

多语言笔记系列:共享数据
在笔记中共享数据(变量) 使用 .NET 交互式内核,可以在单个笔记本中以多种语言编写代码。为了利用每种语言的不同优势,您会发现在它们之间共享数据很有用。即一种语言的变量,可以在其它语言中使用。 默认情况下,.NET Interactive …...

如何使用SeedProd创建无缝的WordPress维护页面
不管您刚接触 WordPress ,还是经验丰富的站长,SeedProd 都是创建网站维护页面的得力助手。通过SeedProd,您可以轻松创建一个与网站风格一致、功能齐全的维护页面,让您的用户在网站维护期间也能感受到您的专业与关怀。本文将为您提…...

使用Python设置excel单元格的字体(font值)
一、前言 通过使用Python的openpyxl库,来操作excel单元格,设置单元格的字体,也就是font值。 把学习的过程分享给大家。大佬勿喷! 二、程序展示 1、新建excel import openpyxl from openpyxl.styles import Font wb openpyxl.…...
【PCB工艺】推挽电路及交越失真
推挽电路(Push-Pull Circuit) 推挽电路(Push-Pull Circuit) 是一种常用于功率放大、电机驱动、音频放大等场合的电路结构,具有输出对称、效率高、失真小等优点。 什么是推挽电路? 推挽是指:由两种极性相反的器件(如 NPN 和 PNP、NMOS 和 PMOS)交替导通,一个“推”电…...
告别手动映射:在 Spring Boot 3 中优雅集成 MapStruct
在日常的后端开发中,我们经常需要在不同的对象之间进行数据转换,例如将数据库实体(Entity)转换为数据传输对象(DTO)发送给前端,或者将接收到的 DTO 转换为实体进行业务处理或持久化。手动进行这…...
uv run 都做了什么?
uv run 都做了什么? uv run <命令> [参数...] 的主要作用是:在一个由 uv 管理或发现的 Python 虚拟环境中,执行你指定的 <命令>。它会临时配置一个子进程的环境,使其表现得如同该虚拟环境已经被激活一样。这意味着&am…...