Kubernetes集群安全(八)

news/2025/2/5 9:48:27/文章来源:https://www.cnblogs.com/ArMinLi/p/18698800

机制说明:Kubernetes 作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。API Server 是集群内部各个组件通信的中介,也是外部控制的入口。所以 Kubernetes 的安全机制基本就是围绕保护 API Server 来设计的。Kubernetes 使用了认证(Authentication)、鉴权(Authorization)、准入控制(AdmissionControl)三步来保证API Server的安全。

1、集群认证

Authentication

  • HTTP Token 认证:通过一个 Token 来识别合法用户
    • HTTP Token 的认证是用一个很长的特殊编码方式的并且难以被模仿的字符串 - Token 来表达客户的一种方式。Token 是一个很长的很复杂的字符串,每一个 Token 对应一个用户名存储在 API Server 能访问的文件中。当客户端发起 API 调用请求时,需要在 HTTP Header 里放入 Token。
  • HTTP Base 认证:通过用户名+密码的方式认证
    • 用户名+:+密码用 BASE64 算法进行编码后的字符串放在 HTTP Request 中的 HeatherAuthorization 域里发送给服务端,服务端收到后进行编码,获取用户名及密码
  • 最严格的 HTTPS 证书认证:基于 CA 根证书签名的客户端身份认证方式

HTTPS 证书认证

需要认证的节点

两种类型

  • 两种类型Kubenetes 组件对 API Server 的访问:kubectl、Controller Manager、Scheduler、kubelet、kube-proxy
  • Kubernetes 管理的 Pod 对容器的访问:Pod(dashborad 也是以 Pod 形式运行)

安全性说明

  • Controller Manager、Scheduler 与 API Server 在同一台机器,所以直接使用 API Server 的非安全端口访问,--insecure-bind-address=127.0.0.1
  • kubectl、kubelet、kube-proxy 访问 API Server 就都需要证书进行 HTTPS 双向认证

证书颁发

  • 手动签发:通过 k8s 集群的跟 ca 进行签发 HTTPS 证书
  • 自动签发:kubelet 首次访问 API Server 时,使用 token 做认证,通过后,Controller Manager 会为kubelet 生成一个证书,以后的访问都是用证书做认证了

kubeconfig

kubeconfig 文件包含集群参数(CA证书、API Server地址),客户端参数(上面生成的证书和私钥),集群context 信息(集群名称、用户名)。Kubenetes 组件通过启动时指定不同的 kubeconfig 文件可以切换到不同的集群。

ServiceAccount

Pod中的容器访问API Server。因为Pod的创建、销毁是动态的,所以要为它手动生成证书就不可行了。Kubenetes使用了Service Account解决Pod 访问API Server的认证问题。

Secret 与 SA 的关系

Kubernetes 设计了一种资源对象叫做 Secret,分为两类,一种是用于 ServiceAccount 的 service-account-token,另一种是用于保存用户自定义保密信息的 Opaque。ServiceAccount 中用到包含三个部分:Token、ca.crt、namespace。

  • oken是使用 API Server 私钥签名的 JWT。用于访问API Server时,Server端认证
  • ca.crt,根证书。用于Client端验证API Server发送的证书
  • namespace, 标识这个service-account-token的作用域名空间
kubectl get secret --all-namespaces
kubectl describe secret default-token-5gm9r --namespace=kube-system

默认情况下,每个 namespace 都会有一个 ServiceAccount,如果 Pod 在创建时没有指定 ServiceAccount,就会使用 Pod 所属的 namespace 的 ServiceAccount。

总结

2、集群鉴权

3、准入控制

准入控制是API Server的插件集合,通过添加不同的插件,实现额外的准入控制规则。甚至于API Server的一些主要的功能都需要通过 Admission Controllers 实现,比如 ServiceAccount。

官方文档上有一份针对不同版本的准入控制器推荐列表,其中最新的 1.14 的推荐列表是:

NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota

列举几个插件的功能:

  • NamespaceLifecycle:防止在不存在的 namespace 上创建对象,防止删除系统预置 namespace,删除namespace 时,连带删除它的所有资源对象。
  • LimitRanger:确保请求的资源不会超过资源所在 Namespace 的 LimitRange 的限制。
  • ServiceAccount:实现了自动化添加 ServiceAccount。
  • ResourceQuota:确保请求的资源不会超过资源的 ResourceQuota 限制。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修改Linux环境下Springboot项目读取配置文件路径

Springboot项目,修改Linux读取配置文件路径1、在“src/main/resources/META-INF/spring.factories”增加文件路径: org.springframework.boot.env.EnvironmentPostProcessor=\com.code.config.ConfigEnvironmentPostProcessor 2、在指定路径下创建文件:ConfigEnvironmentPos…

离职注意事项

离职前,有几个文件夹是必须删除的: 1.个人文件夹 在离职前,一定要清除个人文件夹里的所这有文件。这些文件可能包括个人照片、简历、工作笔记、项目文件等。这些文件包含了你的个人信息以及公司的商业机密,如果不及时删除,可能会给公司带来潜在的风险。 2. 邮件文件夹 如果…

使用国内镜像源

export HF_ENDPOINT=https://hf-mirror.compip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

AI 工程必读好书:10 本关于 AI 科学与工程的深刻见解

AI 工程的必读书籍 —— 以及《Brave New Words》(图片为作者原创作品) 几年前,我推荐了 《数据科学必读好书》 和 《数据科学必读好书 2》 中的 21 本书。自那以后,很多事情发生了变化。虽然数据科学家和机器学习工程师仍然是大型公司的必要岗位,但 “AI 工程师” 这一特定…

manacher(马拉车)

// Luogu P3805 【模板】manacher 算法 include include include using namespace std; const int N=3e7; char a[N],s[N]; int d[N]; //回文半径函数 void get_d(char*s,int n){ d[1]=1; for(int i=2,l,r=1;i<=n;i++){ if(i<=r)d[i]=min(d[r-i+l],r-i+1); while(s[i-…

字符串1最小表示法

include <bits/stdc++.h>//洛谷1368 using namespace std; const int N = 7e5; int n; int s[N]; int get_min(){ for(int i=1;i<=n;i++) s[n+i]=s[i]; int i = 1, j = 2, k = 0; while(i<=n && j<=n){ for(k=0; k<n&&s[i+k]s[j+k]; k++); s…

Python uncompyle6不支持高版本

前言全局说明Python uncompyle6不支持高版本一、说明 1.1 环境: Windows 11 家庭版 23H2 22631.3737二、修改源码版本限定 系统是windows11,python版本为3.10.1,安装uncompyle6后报错不支持python3.9及以上版本。 网上搜索说在限定版本的元组中添加版本三、按报错信息修改免责…

Python打包exe反编译还原成源码

前言全局说明打包好的exe文件还在,但是Python源文件不知什么时候被误删了。现在想改动一下功能,重写Python脚本工程量也太大了,怎么办?只能反编译还原源码。一、说明 1.1 环境: Windows 11 家庭版 23H2 22631.3737 Python 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:4…

2025年1月文章一览

2025年1月编程人总共更新了27篇文章: 1.2024年12月文章一览 2.《计算机组成及汇编语言原理》阅读笔记:p177-p177 3.《计算机组成及汇编语言原理》阅读笔记:p178-p199 4.《计算机组成及汇编语言原理》阅读笔记:p200-p240 5.《计算机组成及汇编语言原理》读后感 6.《CPython …

SQL2016 英文环境下的日期格式。

SELECT PARSE(03 11 2024 11:03PM AS DATETIME USING en-US)

读算法简史:从美索不达米亚到人工智能时代07计算复杂度

旅行商问题是确定一系列城市间最短旅行路线,属NP困难问题,穷举搜索很慢,最快算法也只能找到近似解,其决策问题是NP完全问题。1. 旅行商问题 1.1. the Travelling Salesman Problem1.1.1. 旅行商问题最早的记录出现于19世纪1.1.2. 这个问题被威廉汉密尔顿(William Hamilton)…

[Tools] Vite环境变量

https://cn.vitejs.dev/guide/env-and-mode#env-variables-and-modes添加额外的环境变量 .env #标题 VITE_APP_TITLE=Vite App #端口 VITE_PORT=5173 #是否自动打开浏览器 VITE_OPEN=true .env.development #开发环境端口 VITE_PORT=8848 #是否删除console打印日志 VITE_DROP_C…