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

相关推荐
恰薯条的屑海鸥12 分钟前
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
网络·学习·安全·web安全·渗透测试·csrf·网络安全学习
Bruce_Liuxiaowei22 分钟前
Web安全深度解析:源码泄漏与未授权访问漏洞全指南
安全·web安全
代码搬运媛1 小时前
React 中 HTML 插入的全场景实践与安全指南
安全·react.js·html
珹洺3 小时前
数据库系统概论(十七)超详细讲解数据库规范化与五大范式(从函数依赖到多值依赖,再到五大范式,附带例题,表格,知识图谱对比带你一步步掌握)
java·数据库·sql·安全·oracle
恰薯条的屑海鸥4 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十期-Over Permission 模块)
学习·安全·web安全·渗透测试·网络安全学习
Web极客码14 小时前
如何轻松、安全地管理密码(新手指南)
计算机网络·安全·web安全·网络安全
安全系统学习15 小时前
【网络安全】Qt免杀样本分析
java·网络·安全·web安全·系统安全
Bruce_Liuxiaowei16 小时前
文件上传漏洞深度解析:检测与绕过技术矩阵
安全·矩阵·文件上传漏洞
CYRUS STUDIO16 小时前
FART 脱壳某大厂 App + CodeItem 修复 dex + 反编译还原源码
android·安全·逆向·app加固·fart·脱壳
SilentCodeY18 小时前
Ubuntu 系统通过防火墙管控 Docker 容器
linux·安全·ubuntu·系统防火墙