Kubernetes:Seccomp、AppArmor、SELinux Pod 安全性标准和准入

在云原生环境中,为确保容器化应用的安全运行,Kubernetes 利用了 Linux 内核的三大安全机制:SeccompAppArmorSELinux,并引入了 Pod 安全性标准与准入控制来增强 Pod 的安全性。

Seccomp、AppArmor、SELinux 简介

SeccompAppArmorSELinux 是 Linux 内核提供的三种安全机制:

  • Seccomp(Secure Computing):限制程序的系统调用(syscall)。
  • AppArmor:限制程序对特定资源的访问。
  • SELinux(Security-Enhanced Linux):使用标签和策略限制对资源的访问。

Seccomp

在 Kubernetes 中,Seccomp 通过 Pod 或 Container 的 securityContext.seccompProfile 字段进行配置,有三种类型:

  • Unconfined:无限制。
  • RuntimeDefault:使用容器运行时(如 containerd / CRI-O)的默认配置。
  • Localhost:使用节点本地的配置文件。

示例:

AppArmor

AppArmor 在 v1.30 之前是通过注解的方式,现在则是通过配置 Pod 或 Container 的 securityContext.appArmorProfile 字段,同样是三种类型:

  • Unconfined:无任何限制。
  • RuntimeDefault:使用容器运行时(如 containerd / CRI-O)的默认配置。
  • Localhost:使用节点上的配置文件。

示例:

上图右侧 AppArmor 的配置文件有自己特定的规则,所以看上去有点奇怪。

SELinux

SELinux 的安全上下文格式为 user:role:type:level(用户、角色、类型、范围),在 k8s 中对应 Pod 或 Container 的 securityContext.seLinuxOptions

...
securityContext:
  seLinuxOptions:
    user: unconfined_u
    role: system_r
    type: container_t
    level: "s0:c123,c456"

以上就是 SeccompAppArmorSELinux 的基本作用以及在 Kubernetes 中的使用方法。

Pod 安全性标准和准入控制

Pod 安全性标准

Kubernetes 制定了 Pod 安全性标准(Pod Security Standard),并划分了三个不同的安全级别:

  • Privileged:特权级,几乎无限制。
  • Baseline:基准级,弱限制:
    • 禁止使用宿主机 hostNetwork、hostPID、hostIPC、hostPath、hostPort。
    • 禁止使用特权容器,只允许部分 capabilities 权能。
    • SeccompAppArmorSELinux 有要求。
  • Restricted:限制级,强限制:
    • 包括 Baseline 的全部要求。
    • 只允许特定的 volumes 卷类型。
    • 容器必须以非 root 用户运行,并进一步限制 capabilities 权能。

不同安全级别对应的具体 spec 规则清单请参考官方文档。

Pod 安全性准入控制

Kubernetes 提供了一个内置的 Pod 安全准入控制器来执行 Pod 安全性标准。

用户可以在不同的命名空间设置不同的安全策略(通过配置标签),例如:

apiVersion: v1
kind: Namespace
metadata:
  name: my-baseline-namespace
  labels:
    pod-security.kubernetes.io/enforce: baseline
    pod-security.kubernetes.io/enforce-version: v1.31
    pod-security.kubernetes.io/audit: restricted
    pod-security.kubernetes.io/audit-version: v1.31
    pod-security.kubernetes.io/warn: restricted
    pod-security.kubernetes.io/warn-version: v1.31

其中,标签的格式统一为:

# MODE 必须是 `enforce`、`audit`、`warn` 其中之一
# LEVEL 对应三个安全性标准,必须是 `privileged`、baseline`、`restricted` 其中之一
pod-security.kubernetes.io/<MODE>: <LEVEL>

# VERSION 必须是一个合法的 Kubernetes 小版本号或者 `latest`
pod-security.kubernetes.io/<MODE>-version: <VERSION>

当 MODE 是:

  • enforce:不满足安全性标准规则的 Pod 会被拒绝。
  • audit:接受 Pod,但会记录审计日志。
  • warn:接受 Pod,但会显示警告信息。

用户也可以在准入控制器配置中设置 exemptions 豁免规则,从而绕过安全性标准的检查,例如:

apiVersion: apiserver.config.k8s.io/v1
kind: AdmissionConfiguration
plugins:
- name: PodSecurity
  configuration:
    apiVersion: pod-security.admission.config.k8s.io/v1
    kind: PodSecurityConfiguration
    defaults:
      enforce: "privileged"
      enforce-version: "latest"
      audit: "privileged"
      audit-version: "latest"
      warn: "privileged"
      warn-version: "latest"
    exemptions:
      # 要豁免的已认证用户名列表
      usernames: []
      # 要豁免的运行时类名称列表
      runtimeClasses: []
      # 要豁免的名字空间列表
      namespaces: []

注意,这个配置需要通过 ——admission-control-config-file 应用于 kube-apiserver。

总结

Kubernetes 使用 Linux 内核的 SeccompAppArmorSELinux 安全机制,通过限制系统调用和资源访问来提升容器的安全性。

Pod 安全性标准则进一步为集群管理员提供了预定义的安全策略,用于限制不同 Pod 的权限和行为。结合 Pod 安全性准入控制器,管理员可以有效地管理集群中的 Pod 安全性,确保工作负载在云原生环境中安全运行。

(关注我,无广告,专注于技术,不煽动情绪)


参考资料:

  • https://kubernetes.io/zh-cn/docs/concepts/security/linux-kernel-security-constraints/
  • https://kubernetes.io/docs/reference/node/seccomp/
  • https://kubernetes.io/docs/tutorials/security/apparmor/
  • https://kubernetes.io/zh-cn/docs/concepts/security/pod-security-standards/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/889811.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端vue的样式

sass/scss 语法说明 less sass stylus 都是 css 预处理器&#xff0c;语法上稍有差异&#xff0c;作用一样 都是让 css&#xff0c;增强能力&#xff0c;具备变量&#xff0c;函数.. 的能力 sass的语法两种语法 .sass 和 .scss .sass 和 .stylus 语法很像 (了解)要求省略 {} …

php的echo和print输出语句⑥

在 PHP 中有两个基本的输出方式&#xff1a; echo 和 print。 echo 和 print 区别: echo : 可以输出一个或多个字符串 print : 只允许输出一个字符串。 提示&#xff1a;echo 输出的速度比 print 快&#xff0c; echo 没有返回值&#xff0c;print有返回值1。 <?php …

java包和内部类1-cnblog

java包和内部类1 1 类名冲突 没有包的存在&#xff0c;管理类是一个很麻烦的问题&#xff0c;这个时候需要类包处理 2 完整类路径 在平时经常使用的String&#xff0c;并不是它的完整名称 一个完整的类名需要包名和类名的组合&#xff0c;每个类都属于一个类包&#xff0c…

02复写零

复写零 我们先进行异地复写&#xff1a;代码如下 public class Test {public static void main(String[] args) {int []array {1,0,2,3,0,4};duplicateZeros(array);}public static void duplicateZeros(int[] arr) {int [] elemnew int[arr.length];for(int cur0,dest0;des…

【动手学电机驱动】 TI InstaSPIN-FOC(1)电机驱动和控制测试平台

【动手学电机驱动】 TI InstaSPIN-FOC&#xff08;1&#xff09;电机驱动和控制测试平台 1. 本系列的资源需求1.1 电机驱动控制概况1.2 InstaSPIN-FOC 电机控制方案1.3 资源需求 2. 软件安装2.1 安装 CCS2.2 安装 MotorWare2.3 安装 ControlSUITE&#xff08;可选&#xff09; …

neo4j部署保姆级教程

由于公司是基于大数据架构的&#xff0c;让部署neo4j数据库&#xff0c;之前没有接触过&#xff0c;然后紧急学了一下&#xff0c;并且从网上找了一些教程&#xff0c;决定还是记录下来&#xff0c;后续有时间了会在出一篇使用教程 环境准备&#xff08;root用户&#xff09; …

Spring Boot课程问答:技术难题专家解答

摘要 随着信息互联网信息的飞速发展&#xff0c;无纸化作业变成了一种趋势&#xff0c;针对这个问题开发一个专门适应师生交流形式的网站。本文介绍了课程答疑系统的开发全过程。通过分析企业对于课程答疑系统的需求&#xff0c;创建了一个计算机管理课程答疑系统的方案。文章介…

Windows docker 部署MiGPT+ 本地Ollama

1. 下载 MiGPT https://github.com/idootop/mi-gpt https://github.com/idootop/mi-gpt/releases/tag/v4.2.0 2. 运行 Ollama qwen模型 3.配置Mi GPT .env .migpt.js 运行docker 运行 需要上网 docker run -d --env-file D:\LLM\mi-gpt-4.2.0\.env -v D:\LLM\mi-gpt-4.2.0…

Oracle登录报错-ORA-01017: invalid username/password;logon denied

接上文&#xff1a;Oracle创建用户报错-ORA-65096: invalid common user or role name 我以为 按照上文在PDB里创建了用户&#xff0c;我以为就可以用PLSQL远程连接了&#xff0c;远程服务器上也安装了对应版本的Oracle客户端&#xff0c;但是我想多了&#xff0c;客户只是新建…

保姆级教程 | VMD输出局部结构及利用TkConsole实现旋转

背景 由于课题需要,现需要展示lammps模拟轨迹中的局部结构(主要是想可视化这里的结果:保姆级教程 | 输出分子动力学轨迹文件输出特定原子范围内的化学环境),因为ovito效果有点笨笨的,所以我这里选用VMD软件为例进行操作,效果图(超级好看夸夸): (说明:主要的分子构…

2024最新分别用sklearn和NumPy设计k-近邻法对鸢尾花数据集进行分类(包含详细注解与可视化结果)

本文章代码实现以下功能&#xff1a; 利用sklearn设计实现k-近邻法。 利用NumPy设计实现k-近邻法。 将设计的k-近邻法对鸢尾花数据集进行分类&#xff0c;通过准确率来验证所设计算法的正确性&#xff0c;并将分类结果可视化。 评估k取不同值时算法的精度&#xff0c;并通过…

HarmonyOS第一课 04 应用程序框架基础-习题分析

判断题 1.在基于Stage模型开发的应用项目中都存在一个app.json5配置文件、以及一个或多个module.json5配置文件。T 正确(True) 错误(False) 这个答案是T - AppScope > app.json5&#xff1a;app.json5配置文件&#xff0c;用于声明应用的全局配置信息&#xff0c;比如应用…

【红外传感器】STM32C8T6标准库使用红外对管

好好学习&#xff0c;天天向上 前言一、了解红外二、标准库的代码1.infrared.c2.infrared.h3.main.c4 现象 总结 前言 红外线&#xff1a;频率介于微波与可见光之间的电磁波。 参考如下 【STM32】标准库与HAL库对照学习教程外设篇–红外避障传感器 光电红外传感器详解&#…

SpringCloud Alibaba-01 入门简介

1.Spring Cloud Alibaba 是由阿里巴巴结合自身丰富的微服务实践而推出的微服务开发的一站式解决方案。它是 Spring Cloud 生态中的第二代实现&#xff0c;提供了包括服务注册与发现、分布式配置管理、服务限流降级、消息驱动能力、阿里云对象存储、分布式任务调度等在内的多种功…

C语言-数据结构 折半查找

在折半查找中&#xff0c;刚开始学可能会在下标处产生困惑&#xff0c;例如奇数个长度的数组怎么处理&#xff0c;偶数个长度的数组怎么处理&#xff0c;不需要修改代码吗&#xff1f;并且下标我从1开始算和0开始算影响代码吗&#xff1f;其实都可以用一样的代码&#xff0c;产…

Java项目-----图形验证码登陆实现

原理: 验证码在前端显示,但是是在后端生成, 将生成的验证码存入redis,待登录时,前端提交验证码,与后端生成的验证码比较. 详细解释: 图形验证码的原理(如下图代码).前端发起获取验证码的请求后, 1 后端接收请求,生成一个键key(随机的键) 然后生成一个验证码作为map的valu…

蒙特卡罗方法 - 不同的峰值之间的混合挑战篇

序言 蒙特卡罗方法&#xff0c;也称为统计模拟法或统计试验法&#xff0c;是一种以概率统计理论为基础的数值模拟方法。自 20 20 20世纪 40 40 40年代中期提出以来&#xff0c;它因能灵活处理复杂计算问题而广泛应用于多个领域&#xff0c;如金融工程学、宏观经济学和计算物理…

Transformer 模型和 BERT 模型:概述

语言模型发展历程Language modeling history 多年来&#xff0c;语言建模一直在不断发展。过去十年的最新突破&#xff0c;包括使用神经网络来表示文本&#xff0c;比如2013年的Word2vec和N元语法&#xff0c;2014年开发的序列到序列模型&#xff0c;如RNN和LSTM帮助提高机器学…

(C语言贪吃蛇)16.贪吃蛇食物位置随机(完结撒花)

目录 前言 修改方向 修改内容 效果展示 两个新的问题&#x1f64b; 1.问题1 2.问题2 代码如下&#xff1a; 前言 我们上一节实现了贪吃蛇吃食物身体节点变长&#xff0c;但是食物的刷新位置不是随机的&#xff0c;并且初始化几次后食物就刷不见了&#xff0c;本节我们就来…

[AWS云]kafka调用和创建

背景:因为因为公司的项目需要使用AWS的kafka&#xff0c;但是在创建和使用过程中都遇到了一些报错和麻烦&#xff0c;毕竟老外的东西&#xff0c;和阿里云、华为使用起来还是不一样。 一、创建&#xff08;创建的配置过程就略了&#xff0c;就是配置一下可用区、型号&#xff0…