K8S安全机制

安全机制

|-----------------------------------------------------------------------------------------------------|
| k8s的安全机制,分布式集群管理工具,就是容器编排,安全机制的核心就是围绕API SERVER ,作为整个集群内部通信的中介,也是外部控制的入口,所有的安全机制都是围绕api server来进行设计 |

请求api资源需要过三关

|----------------------------------------|
| 1.认证 2.鉴权 3.准入机制 三个条件都通过,才可以在k8s集群当中创建 |

认证

|---------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Anthentcation | HTTP 通过token识别合法用户,token是一个很长,很复杂的一个字符串,字符串是用来表达客户的一种方式,而每一个token都对应一个用户名,用户名存储在apiserver能够访问的文件中,当客户端发起请求时,http headr包含token。 流程:客户端发起请求到-token-apiserver(用户存储文件)-解码-用户名-访问集群 |
| http base | 用户+密码的验证方式,用户名和密码都是通过base64进行加密,加密完成的字符串,http requset的header Atuthorization发送给服务端,服务端会收到加密的字符串,解码,之后获取用户名和密码 |
| https证书 | 最严格的方式,也是最严谨的方式,基于CA根证书签名的客户端身份进行验证 |

认证的访问类型

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| k8s的组件对api server的访问 如kubelet,kube-proxy pod对apiserver的访问 如pod coredns,dashborad都是pod,也需要访问api 客户端和kubectl |
| Kubelet kube-proxy: Controller manager sheduler 与api server在一台服务器,可以直接使用api server的非安全端口访问有可能是(8080) Kubectl和kubelet和kube-proxy都是通过api server的https证书进行双向验证,都是用6443端口进行验证 |

签发证书

|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 手动签发 | 二进制部署就是手动签发,CA签发就是把证书匹配到每个对应组件,然后访问6443即可 |
| 自动签发 | kubeadm,kubelet第一次要访问api server使用的是token,token通过之后,comtroller manager 会为kubelet生成一个证书,以后都是通过证书访问,kubeadm修改了证书的有效期,默认是1年 |
| Kubeconfig | 文件包含了集群的参数,CA证书,API server地址,客户端的参数(客户端的整数和私钥),以及集群的名称和用户名,k8s组件都是通过启动时制定访问不同的kubeconfig文件切换到不同的集群,再到api server--namespace再到资源对象,pod,容器,kubeconfig既是集群的描述文件,也是一个集群信息的保存文件,包含了集群的访问方式和他的认证信息,一般都在家目录下(隐藏文件).kube/config保存的是kubectl的访问认证信息 |
| ServiceAccount | 就是为了方便pod中的容器来访问API server,pod的动作(增删改查),动态的,每个pod手动生成一个证书就不现实了,于是k8s使用了service Account来循环认证,包含了统一的认证信息,直接进行api server访问 |
| Secret | 保存资源对象,aserviceAccount内部,保存的token service-account-token,secret保存的是自定义的保密信息 |
| ServiceAccount | 1.Token 2.Ca.crt 3.Namespace 都会被自动挂载到pod当中 |

鉴权

|-------------|--------------------------------------------------------|
| 鉴权 | 之前的认证过程,只是确认了双方都是可信的,可以互相通信的,鉴权是为了确定请求方的访问权限,能做哪些指定的操作 |
| AlwaysDeny | 拒绝所有,一般是测试 |
| AlwaysAllow | 允许所有,一般也是测试 |
| ABAC | attribute-based access control 基于属性的访问控制 |
| Webhook | 集群外部访问集群内部的鉴权方式 |
| RBAC | role-base access control 基于角色的访问控制,也是k8s现在默认的规则机制 |

角色

|--------------------|-------------------|
| | 角色 |
| role | 指定命名空间的资源控制权限 |
| rolebinding | 将角色绑定到指定的命名空间 |
| | 集群 |
| Clusterrole | 可以授权所有命名空间的资源控制权限 |
| clusterrolebinding | 将集群的角色绑定到命名空间 |

准入控制

|-------------------------------------------------------------------------------------------------------------------------------------|
| 准入控制是API server的一个准入控制器的插件列表,不同的插件可以实现不同的准入控制机制,一般情况下建议使用官方默认的准入控制器 Limitranger:配置命名空间的配额管理 ServiceACCount: ResourceQuota:命名空间的配置限制 |

相关推荐
DonciSacer2 小时前
TryHackMe 第6天 | Web Fundamentals (一)
安全
云卓科技5 小时前
无人机之数据提取篇
科技·安全·机器人·无人机·制造
山兔16 小时前
工控安全防护机制与技术
安全
HEX9CF7 小时前
【CTF Web】Pikachu xss之href输出 Writeup(GET请求+反射型XSS+javascript:伪协议绕过)
开发语言·前端·javascript·安全·网络安全·ecmascript·xss
小小工匠8 小时前
加密与安全_HOTP一次性密码生成算法
算法·安全·htop·一次性密码
Tandy12356_8 小时前
js逆向——webpack实战案例(一)
前端·javascript·安全·webpack
什么鬼昵称10 小时前
Pikachu-xxe-xxe漏洞
网络·安全·xxe
A 八方11 小时前
【漏洞复现】泛微OA E-Office do_excel.php 任意文件写入漏洞
开发语言·安全·php
x-cmd12 小时前
[241005] 14 款最佳免费开源图像处理库 | PostgreSQL 17 正式发布
数据库·图像处理·sql·安全·postgresql·开源·json