【赵渝强老师】Kubernetes的安全框架

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Kubernetes集群安全框架由认证、鉴权和准入控制三个核心阶段组成。认证阶段验证客户端身份,通过API Server配置的认证模块完成;鉴权阶段检查请求者操作权限,确保合法操作;准入控制阶段拦截并修改请求参数,通过插件实现特殊任务处理。每个阶段均可扩展自定义插件,增强安全性。文内附图与视频详解各阶段流程与实例。

b254.png

Kubernetes集群的安全框架主要由以下认证、鉴权和准入控制三个阶段组成。这三个阶段的关系如下图所示。

image.png


视频讲解如下:


认证(Authentication)


当客户端与Kubernetes集群建立HTTP通信时,首先HTTP请求会进入到认证阶段。由于API Server是操作集群资源的唯一入口,因此可以在API Server上配置一个或者多个认证模块。在这种情况下,API Server将逐个验证每一个认证模块,直到其中一个认证成功。如果认证失败,API Server将返回401的HTTP状态码给客户端,表示Kubernetes拒绝了客户端的连接请求。一般情况下认证模块只会检查HTTP的头部信息,因为这里包含了用户名、密码、客户端证书、令牌等信息,而不会检查整个HTTP请求。


鉴权(Authorization)


当客户端请求完成了认证阶段后,就会进入鉴权阶段。这个阶段会检查请求者是否拥有相应的权限来执行操作。因此,在鉴权阶段需要提供请求者的用户名、请求的权限或者行为以及操作的资源对象。如果请求者无权完成请求的操作,那么Kubernetes将拒绝该请求。


下面是Kubernetes鉴权的一个例子。

{  "apiVersion": "abac.authorization.kubernetes.io/v1beta1",
    "kind": "Policy",
    "spec": {
        "user": "Jerry",
        "namespace": "project-dev",
        "resource": "pods",
        "readonly": true
    }
}


通过这里的策略指定了Jerry能够在命名空间“project-dev”中读取Pod。隐藏Jerry执行下面的操作时,就可以正常被鉴权允许他读取 project-dev名称空间中的Pod对象。

{ "apiVersion": "authorization.k8s.io/v1beta1",
  "kind": "SubjectAccessReview",
  "spec": {
    "resourceAttributes": {
      "namespace": "project-dev",
      "verb": "get",
      "group": "dev.example.org",
      "resource": "pods"
    }
  }
}


提示:如果Jerry在命名空间project-dev中执行写操作,如create和update,则会被鉴权拒绝。另外,Jerry只对命名空间project-dev有读取Pod的权限,对于其他命名空间没有任何权限。


准入控制(Admission Control)


当客户端请求通过了认证阶段和鉴权阶段后,API Server此时还不会立即处理客户端的请求。因为这时候客户端请求还要通过最后一个阶段,即准入控制阶段。该阶段的本质其实是拦截客户端请求的一种方式,这样就可以修改客户端请求中的参数以完成一些特殊的任务。另外,Kubernetes为准入控制阶段维护了一个插件列表,发送给API Server的所有客户端请求都需要通过该列表中的每一个准入控制器插件的检查。如果某个准入控制插件拒绝了客户端请求,那么该请求将立即被拒绝,而不会继续检查后续的插件。


提示:Kubernetes允许用户自己开发每一个阶段的插件,并集成到相应的阶段中来实现用户的访问控制。每个插件都是通过APIServer来启用。


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
3月前
|
存储 数据可视化 数据安全/隐私保护
【赵渝强老师】Docker的图形化管理工具
本文介绍了三种主流的Docker图形化管理工具:Docker UI、Portainer和Shipyard。Docker UI(现名UI for Docker)适合初学者,支持容器管理并可显示容器关系图;Portainer轻量级且功能全面,支持单机与集群管理;Shipyard专注于多主机集群管理,提供镜像、容器及节点管理功能,并包含engine和rethinkdb两个核心组件。文中还通过图文结合的方式展示了各工具的安装与使用方法。
150 4
【赵渝强老师】Docker的图形化管理工具
|
网络协议 安全 Unix
centos7.9系统部署NFS详细流程—2023.04
centos7.9系统部署NFS详细流程—2023.04
1092 0
|
算法 安全 PHP
密码学系列之二:密码学基本概念
密码学系列之二:密码学基本概念
密码学系列之二:密码学基本概念
|
关系型数据库 MySQL 数据库
MySQL忘记root密码、远程无法连接的解决方法
MySQL忘记root密码、远程无法连接的解决方法
|
安全 数据安全/隐私保护
密码学系列之一:密码学的前世今生
密码学系列之一:密码学的前世今生
|
3月前
|
安全 Linux
安装EPEL Repository Centos 7.9
记住,行走在Linux的世界,把“学习”作为你不可或缺的随身宝典。今天你学会了如何将EPEL这座外来的宝库接入你的系统,明天,你或许就能在这座宝库中发现一款能领你走向Linux大师之路的神器。
148 5
|
7月前
|
机器学习/深度学习 自然语言处理 算法
《深度解析:全连接层—卷积神经网络中的关键纽带》
全连接层在卷积神经网络(CNN)中起着桥梁作用,将卷积层和池化层提取的局部特征整合为全局特征,实现分类或回归任务。每个神经元与前一层所有神经元相连,通过权重和偏置进行特征转换,并引入激活函数以增强非线性建模能力。尽管参数量大易导致过拟合,但可通过正则化、Dropout和批标准化等技术有效应对,从而提升模型性能。
445 8
|
7月前
|
机器学习/深度学习
YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
522 8
YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
|
6月前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
315 19
|
9月前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
270 2