【赵渝强老师】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来启用。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
算法 安全 PHP
密码学系列之二:密码学基本概念
密码学系列之二:密码学基本概念
密码学系列之二:密码学基本概念
|
安全 数据安全/隐私保护
密码学系列之一:密码学的前世今生
密码学系列之一:密码学的前世今生
|
关系型数据库 MySQL 数据库
MySQL忘记root密码、远程无法连接的解决方法
MySQL忘记root密码、远程无法连接的解决方法
|
机器学习/深度学习 算法 安全
密码学系列之五:MD5、SHA1——一文搞懂哈希函数
密码学系列之五:MD5、SHA1——一文搞懂哈希函数
7755 0
|
5月前
|
机器学习/深度学习 自然语言处理 算法
《深度解析:全连接层—卷积神经网络中的关键纽带》
全连接层在卷积神经网络(CNN)中起着桥梁作用,将卷积层和池化层提取的局部特征整合为全局特征,实现分类或回归任务。每个神经元与前一层所有神经元相连,通过权重和偏置进行特征转换,并引入激活函数以增强非线性建模能力。尽管参数量大易导致过拟合,但可通过正则化、Dropout和批标准化等技术有效应对,从而提升模型性能。
355 8
|
5月前
|
机器学习/深度学习
YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
409 8
YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
|
1月前
|
存储 数据可视化 数据安全/隐私保护
【赵渝强老师】Docker的图形化管理工具
本文介绍了三种主流的Docker图形化管理工具:Docker UI、Portainer和Shipyard。Docker UI(现名UI for Docker)适合初学者,支持容器管理并可显示容器关系图;Portainer轻量级且功能全面,支持单机与集群管理;Shipyard专注于多主机集群管理,提供镜像、容器及节点管理功能,并包含engine和rethinkdb两个核心组件。文中还通过图文结合的方式展示了各工具的安装与使用方法。
106 4
【赵渝强老师】Docker的图形化管理工具
|
1月前
|
运维 监控 测试技术
【赵渝强老师】使用obd快速体验OceanBase
OceanBase Deployer (obd) 是 OceanBase 数据库的安装部署工具,支持命令行与白屏界面两种方式。通过标准化复杂配置流程,降低集群部署难度。命令行适合深度用户,白屏界面便于快速体验。obd 还提供包管理、压测、集群管理等运维功能。文中详细介绍了使用 obd 部署 OceanBase 数据库集群的步骤,包括执行命令、连接数据库、查看信息及监控页面访问等内容,并附有视频讲解和示例输出。
|
2月前
|
存储 关系型数据库 分布式数据库
【赵渝强老师】HBase的物理存储结构
本文介绍了HBase的存储结构,包括逻辑与物理存储结构。物理存储主要涉及StoreFile、HFile和HLog日志。HFile是HBase数据存储的核心格式,包含Data块、Meta块、File Info块等六部分,支持压缩以优化存储。HLog(预写日志)记录数据变更,确保数据可靠性,并在Region Server故障时用于恢复。最后,文章详细描述了HBase的写数据流程:先写入WAL日志,再写入MemStore,最终通过Flush操作将数据持久化到HFile中。
203 2
|
3月前
|
SQL 关系型数据库 数据库
【赵渝强老师】创建PostgreSQL的数据库
本文介绍了在PostgreSQL中通过SQL命令“create database”创建数据库的方法。首先查询系统目录pg_database以查看现有数据库集合,然后使用“create database”命令创建新数据库,并了解其在$PDATA/base目录下对应的文件夹生成。最后重新查询数据库集合确认创建结果,附带视频讲解便于理解操作步骤及注意事项。