
Kubernetes 安全框架
Kubernetes(K8s)安全控制框架主要由以下三个阶段进行控制,每一个阶段都支持插件方式,通过API Server配置来启用插件:
Authentication(鉴权):验证用户或系统组件的身份。 Authorization(授权):确定已经鉴权的用户或系统组件是否有权限执行某个操作。 Admission Control(准入控制):在对象被持久化到etcd之前对其进行修改或拒绝。
这些步骤确保只有经过认证和授权的请求才能访问和操作Kubernetes资源。
详细流程
客户端访问API Server:客户想要访问K8s集群的API Server,一般需要证书、Token或用户名+密码。如果访问Pod,则需要ServiceAccount。
认证(Authentication):
API Server接收到请求后,首先通过插件进行身份验证。 例如,使用Token、证书或用户名+密码来验证。 授权(Authorization):
鉴权通过后,API Server会检查该用户是否有权限执行所请求的操作。 例如,用户是否有权限创建、删除或修改某个资源。 准入控制(Admission Control):
最后一步是准入控制插件,这些插件可以对即将持久化的资源进行检查、修改或拒绝。 例如,Pod的安全策略检查。 资源操作:
经过上述三步之后,请求才会被处理,对应的操作才会在集群中执行。
框架图解
kubectl, API, UI:这些是访问K8s API Server的工具。 /api/v1, apis, healthz, logs, swagger-ui, metrics:API Server提供的不同接口。 Authentication, Authorization, Admission Control:三个主要安全控制阶段。 Pod, Controllers, Service, Storage:实际的K8s资源。 Etcd Cluster:K8s的后台存储,用于持久化集群状态。
Kubernetes API Server提供的三种客户身份认证方式:
HTTPS 证书认证:
基于CA证书签名的数字证书认证(kubeconfig) 用于确保客户端与服务器之间的通信安全,并验证客户端的身份。 HTTP Token认证:
通过一个Token来识别用户(serviceaccount) 适用于自动化进程或应用程序与Kubernetes交互时的身份验证。 HTTP Base认证:
用户名+密码的方式认证(1.19版本弃用) 较为简单的认证方式,但安全性相对较低,已在Kubernetes 1.19版本后被弃用。
Kubernetes 安全框架:授权 (Authorization)
基于角色的访问控制(RBAC, Role-Based Access Control)在Kubernetes中的授权过程:
RBAC:
基于角色的访问控制,负责完成授权工作。 根据API请求属性,决定允许还是拒绝请求。 比较常见的授权维度:
user:用户名 group:用户分组 资源:例如pod, deployment等 资源操作方法:get, list, create, update, patch, watch, delete等 命名空间:资源所在的命名空间 API组:资源所属的API组
通过这些维度,RBAC系统可以精细地控制不同用户或组对集群资源的访问权限。
Kubernetes 安全框架:准入控制 (Admission Control)
准入控制(Admission Control)在Kubernetes中的作用和配置方法:
Admission Control:
实际上是一个准入控制器插件列表,发送到API Server的请求都需要经过这个列表中的每个准入控制器插件的检查。 如果检查不通过,则拒绝请求。 启用和关闭准入控制器:
启用一个准入控制器: kube-apiserver --enable-admission-plugins=NamespaceLifecycle,LimitRanger ...关闭一个准入控制器: kube-apiserver --disable-admission-plugins=PodNodeSelector,AlwaysDeny ...查看默认启用的准入控制器:
kubectl exec kube-apiserver-k8s-master -n kube-system -- kube-apiserver -h | grep enable-admission-plugins
通过配置和管理准入控制器,可以确保所有进入Kubernetes集群的请求都经过严格的审查和验证。
非常感谢您读到这里!如果您觉得这篇文章对您有帮助,请不要忘记关注公众号。关注后,您将第一时间获得最新的AI、云计算、运维(Linux、数据库,容器等)技术,以及更多实用的技能干货。
点击页面右上角的“关注”按钮,不错过任何精彩内容!

扫码获取联系方式



文章转载自周同学带您玩AI,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




