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

简介: 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
相关文章
|
Docker 容器
使用阿里云 docker 镜像加速
1.创建docker daemon.json 2.添加docker镜像加速地址 3.重启守护进程
2357 1
|
Kubernetes 算法 调度
【赵渝强老师】Kubernetes中Pod的调度策略
Kubernetes中Pod的调度是指将Pod分配到最合适的Node节点上运行。默认情况下,调度器根据资源需求和均衡策略自动选择节点。在特殊场景下,用户可通过nodeName和nodeSelector字段指定调度约束。本文详细介绍了Pod的创建过程及调度机制,并通过示例演示了如何使用nodeName和nodeSelector实现自定义调度策略。
495 1
|
12月前
|
安全 关系型数据库 Linux
手把手教你用 Docker 部署 Red Hat UBI8 镜像
Red Hat UBI8是官方维护的免费容器基础镜像,轻量安全,兼容性强,适用于各类应用部署。支持Docker快速拉取与运行,提供持久化挂载、Compose编排等企业级方案,是构建容器化应用的理想“地基”。
738 2
|
6月前
|
机器学习/深度学习 人工智能 算法
工业织物缺陷目标检测数据集分享(适用于YOLO系列深度学习分类检测任务)
本数据集面向工业织物弱纹理场景,含1000+张768×512 RGB图像,精准标注4类缺陷(洞、异物、油斑、织线错误),采用标准YOLO格式,适配YOLOv5/v8等系列模型,助力智能制造质检研究与落地。(239字)
520 1
|
7月前
|
人工智能 安全 定位技术
数据安全分类分级如何落地
以一体化数据安全平台为建设思路,开展数据安全分类分级工作
|
存储 分布式计算 大数据
【赵渝强老师】阿里云大数据存储计算服务:MaxCompute
阿里云MaxCompute是快速、全托管的TB/PB级数据仓库解决方案,提供海量数据存储与计算服务。支持多种计算模型,适用于大规模离线数据分析,具备高安全性、低成本、易用性强等特点,助力企业高效处理大数据。
710 0
|
12月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
871 2
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
1469 4
|
存储 Kubernetes 调度
【赵渝强老师】什么是Kubernetes的Pod
Pod 是 Kubernetes 中的基本逻辑单位,代表集群上的一个应用实例。它可以由一个或多个容器组成,并包含数据存储和网络配置等资源。Pod 支持多种容器执行环境,如 Docker。Kubernetes 使用 Pod 管理容器,具有简化部署、方便扩展和调度管理等优点。视频讲解和图示详细介绍了 Pod 的组成结构和使用方式。
559 1
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。