[CKS] K8S Dockerfile和yaml文件安全检测

news2024/11/14 18:27:28

最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于Dockerfile和yaml文件安全检测的题目。

​ 专栏其他文章:

  • [CKS] Create/Read/Mount a Secret in K8S-CSDN博客
  • [CKS] Audit Log Policy-CSDN博客
    -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客
  • [CKS] K8S NetworkPolicy Set Up-CSDN博客
  • [CKS] K8S AppArmor Set Up-CSDN博客
  • [CKS] 利用Trivy对image进行扫描-CSDN博客
  • [CKS] kube-batch修复不安全项-CSDN博客
  • [CKS] K8S ServiceAccount Set Up-CSDN博客
  • [CKS] K8S Admission Set Up-CSDN博客
  • [CKS] K8S Dockerfile和yaml文件安全检测-CSDN博客
  • CKS真题
  • CKA真题

Question 1

  • Check the Dockerfile located at /home/cloud_user/Dockerfile on the CLI server. This Dockerfile is based upon alpine:3.13.5.
  • Correct the two security issues within the file.

Note: If you need an OS user, you can use the user nobody with id 65534.

这个题目是要求你检查Dockerfile,并修改在Dockerfile中存在的两个问题,这个题目中给我们了一个提示就是,如果没有指定系统用户,就使用id为65534的nobody用户。

Practice

首先,我们查看这个Dockerfile文件可以发现内容如下:

FROM alpine:latest

USER root
COPY sunnydale.sh .

USER root
CMD ["./sunnydale.sh"]

我们从Dockerfile中可以看到问题如下:

  • 基础镜像在题目中指明的是alpine:3.13.5,而在提供的Dockerfile中为alpine:latest
  • 没有指定系统用户,就使用id为65534的nobody用户,而在Dockerfile中使用的root user,这也是不安全的,所以需要对Dockerfile修改成以下内容:
    在这里插入图片描述

Question 2

  • Check the YAML file located at /home/cloud_user/scooby-gang-deploy.yml on the CLI server.
  • Correct the two security issues within the file.

这个题目是要求我们对yaml文件进行分析,纠正其中存在的两个系统问题。

Practice

首先,我们查看这个yaml文件可以发现内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: scooby-gang
  namespace: sunnydale
spec:
  replicas: 3
  selector:
    matchLabels:
      app: scooby
  template:
    metadata:
      labels:
        app: scooby
    spec:
      containers:
      - name: scoobygang
        image: scoobygang:1.4.0
        securityContext:
          privileged: true
          runAsUser: 0

我们从yaml中可以看到问题如下:

  • privileged: true这将会使得容器在运行时,运行用户拥有container的全部权限,这样是不安全的
  • runAsUser: 0同样的,这将会使得容器运行过程中会拥有root权限

所以我们需要对yaml文件作出以下更改

  • 设置privileged: false
  • 设置runAsUser: 65534

Question 3

Check all of the Pods in the sunnydale namespace and determine whether their containers are static and immutable.

Note: In this scenario, static/immutable means that:

  • The container does not have access to any elevated privileges.
  • The container process cannot write to the container file system.
  • Delete any Pods in the namespace that are not static and immutable.

这个题目比较麻烦就是需要一个个的对每个pod进行分析,分析出哪些pod是not static 和 immutable的,这里也对not static 和 immutable做出了定义:

  • 容器无法访问特权权限。
  • 容器进程无法写入容器文件系统。

Practice

首先我们需要查看在sunnydale下的所有的pod,然后一一对pod的yaml文件进行检查。

  1. 查看sunnydale下面的所有的pod
kubectl get pods -n sunnydale

在这里包含了以下的pod: buffy,cordelia,willow,xander

  1. 然后依次对每个pod的yaml文件进行检查,检查内容如下
  • allowPrivilegeEscalation设置必须是false ,或者没有进行设置
  • runAsUser不能设置为0,最好是65534,或者没有进行设置
  • readOnlyRootFilesystem需要设置为true,或者没有进行设置

通过kubectl get pod -n sunnydale xxx -o yaml进行检查即可,对于不满足上述条件的pod,使用kubectl delete pod -n sunnydale进行删除即可

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第552题学生出勤记录II

题目: 题解: const mod int 1e9 7type matrix [6][6]intfunc (a matrix) mul(b matrix) matrix {c : matrix{}for i, row : range a {for j : range b[0] {for k, v : range row {c[i][j] (c[i][j] v*b[k][j]) % mod}}}return c }func (a matrix) p…

(Go语言)初上手Go?本篇文章帮拿捏Go的数据类型!

1. bool 类型 布尔类型:只有 true 和 false 两种值 在Go中,整数 0 不代表 false 值,1也不代表 true 值 即数字无法代替布尔值进行逻辑判断,两者是完全不同的类型 布尔类型占用 1 字节 2. int 整型 Go中为不同位数的整数分配…

用 Python 从零开始创建神经网络(四):激活函数(Activation Functions)

激活函数(Activation Functions) 引言1. 激活函数的种类a. 阶跃激活功能b. 线性激活函数c. Sigmoid激活函数d. ReLU 激活函数e. more 2. 为什么使用激活函数3. 隐藏层的线性激活4. 一对神经元的 ReLU 激活5. 在隐蔽层中激活 ReLU6. ReLU 激活函数代码7. …

【C++】—掌握STL string类:string的模拟实现

文章目录 💞1.浅拷贝💞2.深拷贝💞3. string类的模拟实现💞3.1 string的构造函数💞3.2 string的析构函数💞3.3 string的拷贝构造💞3.4 string的size💞3.5 string的operator[]&#x1…

元器件篇——自恢复保险丝(PPTC)

1 定义 保险丝(Fuse)也被称为电流保险丝。根据IEC127标准,将保险丝定义为熔断体。主要的作用就是起过载保护。电路中正确布置保险丝,当保险丝在电流异常升高到一定时,或者热度升高到一定时,自身熔断&#x…

多媒体信息检索

文章目录 一、绪论二、文本检索 (Text Retrieval)(一) 索引1.倒排索引2.TF-IDF (二) 信息检索模型 (IR模型,Information Retrieval)1.布尔模型 (Boolean模型)(1)扩展的布尔模型 (两个词)(2)P-Norm模型 (多个词) 2.向量空间模型 (Vector Space Model,VSM)…

Node.js——fs模块-文件夹操作

1、借助Node.js的能力,我们可以对文件夹进行创建、读取、删除等操作 2、方法 方法 说明 mkdir/mkdirSync 创建文件夹 readdir/readdirSync 读取文件夹 rmdir/rmdirSync 删除文件夹 3、语法 其余的方法语法类似 本文的分享到此结束,欢迎大家评论区…

ABAP:SET CURSOR FIELD设置鼠标焦点

SET CURSOR FIELD <字段名>&#xff1a;设置鼠标焦点到该字段 SET CURSOR 设置到鼠标焦点列还是行 SET CURSOR LINE 设置鼠标焦点到行 GET CURSOR field <字段名> &#xff1a;这个相对应的获取鼠标焦点得到的字段

Gitlab-执行器为Kubetnetes时的注意事项,解决DNS解析问题

一、Gitlab-Runner 这里对于Runner的理解非常重要。 具体执行ci流水线的叫执行器。执行器可以部署是shell、docker、k8s的pod.执行完任务则生命周期结束。 管理执行器的叫Gitlab-Runner。Runner则是与Gitlab Server的Ci agent.(可以简单这么理解) 二、执行器为Kubetnetes时,DN…

双向链表(带头双向循环链表)巨详解!!!

概念 本文讲述的双向链表&#xff0c;全名叫做带头双向循环链表&#xff0c;我们学习的链表总共有八种 在前文讲述单链表时所讲到的单链表&#xff0c;其实就叫做不带头单向不循环链表&#xff0c;这里的带头、不带头才是真正的头结点&#xff0c;前文中的头结点其实叫做首元素…

时序预测 | Python基于CNN-transformer时间序列预测

时序预测 | Python基于CNN-transformer时间序列预测 目录 时序预测 | Python基于CNN-transformer时间序列预测预测效果基本介绍参考资料 预测效果 基本介绍 时序预测 | Python基于CNN-transformer时间序列预测 Cnn-transformer-自适应稀疏自注意力ASSA-对比归一化contranorm预…

网站架构知识之Ansible进阶(day022)

1.handler触发器 应用场景&#xff1a;一般用于分发配置文件时候&#xff0c;如果配置文件有变化&#xff0c;则重启服务&#xff0c;如果没有变化&#xff0c;则不重启服务 案列01&#xff1a;分发nfs配置文件&#xff0c;若文件发生改变则重启服务 2.when判断 用于给ans运…

Yolo11改进策略:上采样改进|CARAFE,轻量级上采样|即插即用|附改进方法+代码

论文介绍 CARAFE模块概述&#xff1a;本文介绍了一种名为CARAFE&#xff08;Content-Aware ReAssembly of FEatures&#xff09;的模块&#xff0c;它是一种用于特征上采样的新方法。应用场景&#xff1a;CARAFE模块旨在改进图像处理和计算机视觉任务中的上采样过程&#xff0…

常用的c++特性-->day02

c11新特性 可调用对象案例分析 可调用对象包装器语法案例可调用对象包装器作为函数参数补充&#xff1a;类型转换运算符案例 可调用对象绑定器语法格式绑定非类成员函数/变量案例1案例2案例3案例4 绑定类成员函数/变量 lambda表达式捕获列表案例1返回值案例2 --> 包装器绑定…

锐捷技能大赛—L2TP隧道与L2TP Over IPSec嵌套,并在隧道内运行OSPF

目录 总部与分支站点之间建立隧道 基础配置 配置L2TP VPN ​编辑配置L2TP Over IPSec L2TP Over IPSec隧道内运行OSPF协议 总部与分支站点之间建立隧道 拓扑如下 基础配置 R1 int g0/1 ip add 10.1.1.1 30 int g0/0 ip add 192.168.10.254 24 exit ip route 0.0.0.0 0.0…

python可视化将多张图整合到一起(画布)

这周有点事忙着&#xff0c;没时间重温刚结束的Mathurcup数学建模&#xff0c;这两天也是再看了下&#xff0c;论文还是赶紧挺烂的&#xff0c;但比国赛又有进步&#xff08;说起国赛又不得不抱怨了&#xff0c;基本其余省份都发了&#xff0c;但江西......哎&#xff09;。哎&…

网络编程、UDP、TCP、三次握手、四次挥手

一、初识网络编程 网络编程的概念&#xff1a;在网络通信协议下&#xff0c;不同计算机上运行的程序&#xff0c;进行的数据传输。 应用场景&#xff1a;即时通信、网游对战、金融证券、国际贸易、邮件等等。 不管是什么场景&#xff0c;都是计算机和计算机之间通过网络进行…

在 Jupyter Notebook 中使用 Matplotlib 进行交互式可视化的教程

在 Jupyter Notebook 中使用 Matplotlib 进行交互式可视化的教程 引言 数据可视化是数据分析的重要组成部分&#xff0c;能够帮助我们更直观地理解数据。Matplotlib 是 Python 中最流行的绘图库之一&#xff0c;而 Jupyter Notebook 则是进行数据分析和可视化的理想环境。本文…

[单例模式]

[设计模式] 设计模式是软件工程中的一种常见做法, 它可以理解为"模板", 是针对一些常见的特定场景, 给出的一些比较好的固定的解决方案. 不同语言适用的设计模式是不一样的. 这里我们接下来要谈到的是java中典型的设计模式. 而且由于设计模式比较适合有一定编程经…

STM32软件开发 —— STM32CudeMX使用优点

目 录 STM32CudeMX使用思路步骤详细 STM32CudeMX 在图形化工具STM32CudeMX出现之前&#xff0c;开发者通常是参考库驱动文件中的例程来配置芯片的&#xff0c;进行拷贝和修改等&#xff0c;为了提高开发效率&#xff0c;ST公司开发了STM32CudeMX工具&#xff0c;通过它简化了芯…