Context

cluster 上设置了容器镜像扫描器,但尚未完全集成到cluster 的配置中。

完成后,容器镜像扫描器应扫描并拒绝易受攻击的镜像的使用。

Task

注意:你必须在 cluster 的 master 节点上完成整个考题,所有服务和文件都已被准备好并放置在该节点上。

给定一个目录 /etc/kubernetes/epconfig中不完整的配置,

以及具有 HTTPS 端点 https://acme.local:8082/image_policy 的功能性容器镜像扫描器:

1. 启用必要的插件来创建镜像策略

2. 校验控制配置并将其更改为隐式拒绝(implicit deny)

3. 编辑配置以正确指向提供的 HTTPS 端点

最后,通过尝试部署易受攻击的资源 /cks/img/web1.yaml 来测试配置是否有效。

你可以在 /var/log/imagepolicy/roadrunner.log 找到容器镜像扫描仪的日志文件。

解答

切换集群

kubectl config use-contextKSSH00901
  1. 切换到master
ssh master01 && sudo -i
  1. 编辑 admission_configuration.json 修改 defaultAllow 为 false
vim /etc/kubernetes/epconfig/admission_configuration.json

......

"denyTTL": 50,

"retryBackoff": 500,

"defaultAllow": false # 将 true 改完 false

......
  1. 编辑 /etc/kubernetes/epconfig/kubeconfig.yml,添加 webhook server 地址:

操作前,先备份文件

mkdir bak14

cp /etc/kubernetes/opconfig/kubeconfig.yml bak14/

vim /etc/kubernetes/opconfig/kubeconfig.yml

修改内容如下:

......

certificate-authority: /etc/kubernetes/epconfig/server.crt

server: https://acme.local:8082/image_policy # 添加 webhook server 地址

......
 
  1. 编辑 kube-apiserver.yaml ,从官网中引用 imagePolicyWebhook 的配置信息:

先备份文件

cp /etc/kubernetes/manifests/kube-apiserver.yaml bak14/

vim /etc/kubernetes/manifests/kube-apiserver.yaml

在 command: 下添加如下内容

- --enable-admission-plugins=NodeRestriction,ImagePolicyWebhook

- --admission-control-config-file=/etc/kubernetes/epconfig/admission_configuration.json

在kube-apiserver.yaml 的 volumeMounts 增加

volumeMounts: # 在volumeMounts 下面增加

- mountPath: /etc/kubernetes/epconfig

name: epconfig

readOnly: true

在 kube-apiserver.yaml 的 volumes 增加

volumes: # 在 volumes 下面增加

- name: epconfig

hostPath:

path: /etc/kubernetes/epconfig

type: DirectoryOrCreate

注意:如果是目录,写 DirectoryOrCreate 如果是文件,则写File

  1. 重启 kubelet
systemctl restart kubelet

等待3分钟左右,等集群应用策略后,确保 kube-apiserver 是running 的

检查

CKS 考试题整理 (15)-镜像扫描ImagePolicyWebhook的更多相关文章

  1. Trivy 容器镜像扫描工具学习

    简介 官方地址:https://github.com/aquasecurity/trivy Trivy是aqua(专注云原生场景下的安全)公司的一款开源工具,之前历史文章也有对aqua的一些介绍. T ...

  2. linux基础:第三关课前考试题整理

    1.如何取得/etc/hosts 文件的权限对应的数字内容,如-rw-r--r-- 为 644, 要求使用命令取得644 这样的数字. [root@server ~]# stat /etc/hosts ...

  3. 整理15款实用javascript富文本编辑器

    百度UEditor 官方网址:http://ueditor.baidu.com/website/ UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验 ...

  4. springboot秒杀课程学习整理1-5

    1)交易模型设计 交易模型(用户下单的交易模型)OrderModel id(String 交易单号使用String), userId,itemId,amount(数量),orderAmount(总金额 ...

  5. Vue知识整理15:组件注册

    采用局部注册组件: 将代码放在vue的一个实例中,而不是单列申明.

  6. kali Linux Web 渗透测试视频教程— 第六课 网络扫描-nmap与zmap

    Kali Linux Web 渗透测试视频教程— 第六课 网络扫描-nmap与zmap 文/玄魂 目录 Kali Linux Web 渗透测试视频教程— 第六课 网络扫描-nmap与zmap. 1 N ...

  7. android媒体文件扫描

    项目中可能有这样的需求:下载或导入.导出的图片.音乐等媒体文件,需要马上能在图库或本地视屏播放器中显示出来,或者要能在媒体数据库中查询到媒体文件的相关信息,这时我们就得主动通知系统扫描新的媒体文件了. ...

  8. 浅谈Linux容器和镜像签名

    导读 从根本上说,几乎所有的主要软件,即使是开源软件,都是在基于镜像的容器技术出现之前设计的.这意味着把软件放到容器中相当于是一次平台移植.这也意味着一些程序可以很容易就迁移,而另一些就更困难. 我大 ...

  9. 转:基于IOS上MDM技术相关资料整理及汇总

    一.MDM相关知识: MDM (Mobile Device Management ),即移动设备管理.在21世纪的今天,数据是企业宝贵的资产,安全问题更是重中之重,在移动互联网时代,员工个人的设备接入 ...

  10. Android扫描二维码 实现 登录网页

    工程代码:ScanQRcode.zip ------------------------------------------------------------------ 1. 扫描二维码登录的实现 ...

随机推荐

  1. flutter系列之:在flutter中使用相机拍摄照片

    目录 简介 使用相机前的准备工作 在flutter中使用camera 总结 简介 在app中使用相机肯定是再平常不过的一项事情了,相机肯定涉及到了底层原生代码的调用,那么在flutter中如何快速简单 ...

  2. 自己动手从零写桌面操作系统GrapeOS系列教程——1.2 GrapeOS真机演示

    学习操作系统原理最好的方法是自己写一个简单的操作系统. GrapeOS操作系统之前一直运行在模拟器和虚拟机中,今天我们来演示一下GrapeOS在真机上运行的情况. 一.物理机真机 今天演示用的真机是一 ...

  3. matplotlab可视化学习

    1 使用pip安装 使用 Python 包管理器 pip 来安装 Matplotlib 是一种最轻量级的方式.打开 CMD 命令提示符窗口,并输入以下命令: pip install matplotli ...

  4. .NET周报 【4月第2期 2023-04-08】

    国内文章 LRU缓存替换策略及C#实现 https://www.cnblogs.com/eventhorizon/p/17290125.html 这篇文章讲述了缓存替换策略,特别是LRU算法.LRU算 ...

  5. PHP大文件分割上传 PHP分片上传

    这篇文章主要为大家详细介绍了PHP大文件分割上传,PHP分片上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 服务端为什么不能直接传大文件?跟php.ini里面的几个配置有关 upload_ma ...

  6. 对象数组排序 和 类比JDK实现 sort()的方法

    1.定义自己的 MyComparable 接口 1 package Test.treeSetDemo; 2 3 public interface MyComparable <E>{ 4 i ...

  7. 设计模式之[构建者模式(Builder)]-C#

    说明:构建一个大对象时,可以分解成一个部分一个部分的构建,比如一台电脑由CUP.内存.主板.屏幕等,这些配件本身就是一个复杂的制造过程,一个一个构建后然后才组装成一台新的电脑. 步骤 1.定义要构建的 ...

  8. linux发行版中的i386/i686/x86-64/的区别

    在yum上找32位的i386找不到,看到i686以为是64位呢,原来它也是32位啊 i686 只是i386的一个子集,支持的cpu从Pentium 2 (686)开始,之前的型号不支持. 备注: 1. ...

  9. MySQL高频面试题

    什么是MySQL MySQL是一个关系型数据库,它采用表的形式来存储数据.你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列).行代表每一行数据,列代表该行中的每个值.列上的值是 ...

  10. ctfshow菜狗杯(一)

    CTFshow菜狗杯,web签到 传参. 需要注意的是传参的时候要对中文字符进行编码输出. 得到flag. 第二关 come-to_s1gn 打开页面源代码 这里好像给了一半的flag,另一半好像说在 ...