F5社区-F5技术交流中心

CKS学习笔记—5.供应链安全部分

2022-07-04 21:42:44

路瑞强

PHPWord

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

Login

手机号
验证码
© 2019 F5 Networks, Inc. 版权所有。京ICP备16013763号-1