首页 > 其他分享 >[CKS] K8S Dockerfile和yaml文件安全检测

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

时间:2024-11-11 11:18:09浏览次数:5  
标签:sunnydale yaml CSDN CKS pod K8S Dockerfile

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

​ 专栏其他文章:

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进行删除即可

标签:sunnydale,yaml,CSDN,CKS,pod,K8S,Dockerfile
From: https://blog.csdn.net/agjllxchjy/article/details/143663381

相关文章

  • ansible playbook yaml 实例
    ansibleplaybookyaml实例-hosts:iplistremote_user:tomcatgather_facts:falsetasks:-name:enter/optdirectoryshell:cd/opt-name:createtomcatdirectoryfile:dest=/opt/tomcatmode=755state=directory#-name:touchafile#shell:cd/opt/tom......
  • [CKS] K8S ServiceAccount Set Up
    最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于Rolebinding的题目。Question1ThebuffyPodinthesunnydalenamespacehasabuffy-saServiceAccountwithpermissionsthePoddoesn’tneed.ModifytheattachedRolesothatitonlyhasthea......
  • openEuler搭建k8s(1.28.2版本)
    目录k8s搭建(1.28.2版本)1.安装containerd1.1下载tar包1.2编写服务单元文件2.安装runc3.安装cni插件3.1下载文件3.2设置crictl运行端点4.配置containerd5.主机配置5.1编辑hosts文件(可选)5.2开启流量转发5.3关闭防火墙以及selinux5.4关闭swap6.搭建k8s6.1配置yum源......
  • [Tricks-00002]CF2026F 操作建树&维护带删deque信息的经典套路
    这怎么是*2700???我大受震撼了好吧。简要题意:有一个初始长度是\(cnt=1\)的序列\(S\),序列每个位置都是若干个二元组\((p,t)\)组成的可重集,初始时\(S_1\)为空集。\(q\)组操作(为修改或询问),有如下四种操作:1x:把\(S_x\)复制到一个新加的点\(S_{++cnt}\)上。2xpt:将\((p......
  • 【模块一】kubernetes容器编排进阶实战之k8s基础概念
    kubernetes基本介绍kubernetes组件简介   -master:       主人,并不部署服务,而是管理salve节点。      后期更名为:controllplane,控制面板。         etcd:      2379(客户端通信)、2380(集群内部通信)         ......
  • 【K8s安全】K8s污点横向渗透
    原创Al1ex七芒星实验室污点是K8s高级调度的特性,用于限制哪些Pod可以被调度到某一个节点,一般主节点包含一个污点,这个污点是阻止Pod调度到主节点上面,除非有Pod能容忍这个污点,而通常容忍这个污点的Pod都是系统级别的Pod,例如:kube-system基本原理攻击者在获取到node节点的权限......
  • 【k8s安全】etcd未授权到控制k8s集群
    免责声明本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号团队不为此承担任何责任。在安装完K8s后,默认会安装etcd组件,etcd是一个高可用的key-value数据库,它为k8s集群提供底层数据存储,保存了......
  • 【K8S问题系列】Kubernetes Pod节点CrashLoopBackOff 状态【已解决】
    在Kubernetes中,Pod的状态为CrashLoopBackOff表示某个容器在启动后崩溃,Kubernetes尝试重启该容器,但由于持续崩溃,重启的间隔时间逐渐增加。下面将详细介绍CrashLoopBackOff状态的原因、解决方案及相关命令的输出解释。一、CrashLoopBackOff状态的详细介绍描述C......
  • ansible中 yaml 判断返回值
    ansible中yaml判断返回值 ps-ef|grep-vgrep|grepjava1>/dev/null&&echo"running"||echo"stopped"ansible-playbook-v-i/data/ld_fabu/ansible_cfg/hosts/data/ld_fabu/env_online/ansible_yaml/svn/ldgame_StopStatic.yaml--ext......
  • 【人脸伪造检测后门攻击】 Exploring Frequency Adversarial Attacks for Face Forger
    一、研究动机​ 现有的后门攻击方法生成的对抗样本容易被识别,只是在空间域增加了扰动。为此,作者提出了一种频率对抗性攻击的方法,在频域中增加了对抗性的扰动DCT,接着利用融合模块对不同频段的能量进行微调,有效的避免了在空间范围攻击的冗余噪声:FGSM,PGD,最终通过逆变换生成对抗样......