CKS学习笔记—5.供应链安全部分
2022-07-04 21:42:44
路瑞强
CKS学习笔记—5.供应链安全部分
CKS学习笔记— 验证镜像签名
镜像签名:容器镜像可以通过hash产生唯一的签名
验证镜像:签名可以用于验证镜像是否篡改
apiVersion: v1
kind: Pod
metadata:
name: signed-image-pod
spec:
restartPolicy: Never
containers:
- name: busybox
image: busybox:1.33.1@sha256:9687821…b5
command: [‘sh’, ‘-c’, ‘echo “Hello world!”’]
CKS学习笔记— Analysis Dockerfile&YAML file
静态分析Dockerfile是一种通过查看源代码或配置来查找潜在安全问题的方法。
加强镜像的一种安全手段就是分析Dockerfile。
可能出现的常见问题:
使用root:如果在Dockerfile中使用了USER root,则容器进程就具有root权限。
:latest Tag:在FROM中如果使用该tag,镜像会要求一直使用最新版本,但最新版本中不知道有没有问题,建议使用某个确定的版本。
不必要的软件:确保Dockerfile中不安装不必要的软件和工具。
敏感数据:在Dockerfile中不要使用敏感数据,可以通过变量引用外部的数据。
静态分析源文件的方法中, YAML文件也是一种分析的对象。
YAML文件的常见问题:
Host Namespaces
Privileged Mode
:latest Tag
Run as Root
apiVersion: v1
kind: Pod
metadata:
name: signed-image-pod
spec:
restartPolicy: Never
containers:
- name: busybox
image: busybox:1.33.1@sha256:9687821…b5
command: [‘sh’, ‘-c’, ‘echo “Hello world!”’]
CKS学习笔记— 扫描镜像文件
威胁扫描是通过工具来检测软件的已知威胁。
在Kubernetes中,镜像扫描就是扫描容器镜像,用来确定该镜像是否存在威胁软件。
Trivy是一个工具,用来扫描容器镜像的威胁。
命令为:
trivy image nginx:1.14.1
trivy nginx:1.14.1
通过admission controllers实现镜像扫描
Admission controller可以中断并截获Kubernetes API,它可以同意、拒绝或修改请求
ImagePolicyWebhook控制器可以发送扫描请求到外部的webhook,扫描对象可以是正在使用的容器镜像。这个webhook可以批准或拒绝拉起基于该镜像的容器。
这个功能可以实现自动扫描镜像并阻断拉起有严重安全问题的容器。
实现这个功能,需要一个外部的应用来接收请求并进行扫描,然后返回结果。
这里使用trivy来实现。
vi /etc/kubernetes/admission-control/admission-control.conf
apiVersion: apiserver.config.k8s.io/v1
kind: AdmissionConfiguration
plugins:
- name: ImagePolicyWebhook
configuration:
imagePolicy:
kubeConfigFile: /etc/kubernetes/admission-control/imagepolicywebhook_backend.kubeconfig
allowTTL: 50
denyTTL: 50
retryBackoff: 500
defaultAllow: true
vi /etc/kubernetes/admission-control/imagepolicywebhook_backend.kubeconfig
apiVersion: v1
kind: Config
clusters:
- name: trivy-k8s-webhook
cluster:
certificate-authority: /etc/kubernetes/admission-control/imagepolicywebhook-ca.crt
server: https://acg.trivy.k8s.webhook:8090/scan
contexts:
- name: trivy-k8s-webhook
context:
cluster: trivy-k8s-webhook
user: api-server
current-context: trivy-k8s-webhook
preferences: {}
users:
- name: api-server
user:
client-certificate: /etc/kubernetes/admission-control/api-server-client.crt
client-key: /etc/kubernetes/admission-control/api-server-client.key
最后在api-server中启用参数,
vi /etc/kubernetes/manifests/kube-apiserver.yaml
在“--enable-admission-plugins”中增加“ImagePolicyWebhook”
增加“—admission-control-config-file=/etc/kubernetes/admission-control/admission-control.conf”
发布评论 加入社群
相关文章

CKS学习笔记--6.运行安全
路瑞强
2022-07-05 10:14:06 126

CKS学习笔记—4.容器安全部分
路瑞强
2022-07-04 21:36:54 246

CKS学习笔记—3.系统加固部分
路瑞强
2022-07-04 21:17:03 237

回复评论
发布评论