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:命名空间的配置限制 |

相关推荐
用户9623779544817 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机20 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机20 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954481 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star1 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954481 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher3 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行6 天前
网络安全总结
安全·web安全
red1giant_star6 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全
ZeroNews内网穿透6 天前
谷歌封杀OpenClaw背后:本地部署或是出路
运维·服务器·数据库·安全