OpenShift 4 - DevSecOps (2) - 修复 RHACS 发现的安全隐患(附视频)

89 篇文章 3 订阅
76 篇文章 6 订阅

OpenShift 4.x HOL教程汇总
说明:本文已经在 OpenShift 4.14 环境中验证

调整在 Pipeline 中 Task 使用的镜像源

由于无法从国内直接访问谷歌 gcr.io 网站的镜像,因此需要进入上一步安装在 cicd 项目 “管道”中的 “任务”,然后修改以下 2 个任务中使用的镜像:

  1. dependency-report 任务
    gcr.io/cloud-builders/mvn:3.5.0-jdk-8 改为 docker.io/library/maven:3.5.0-jdk-8

  2. maven 任务
    gcr.io/cloud-builders/mvn 改为 docker.io/library/maven:latest

  3. git-update-deployment 任务
    k8s.gcr.io/kustomize/kustomize:v3.8.7 改为 quay.io/dawnskyliu/kustomize:v3.8.7

用 RHACS 在 CICD 中发现安全违规项目

  1. 在 OpenShift 控制台进入 Pipelines 菜单,然后运行 cicd 项目中的 petclinic-build-dev。
    在这里插入图片描述
  2. 在 Start Pipeline 弹出窗口中按照以下内容为设置 workspace 和 maven-settings 的参数。
    workspace
    ——> PVC: petclinic-build-workspace
    maven-settings
    ——> Config Map: maven-settings
    在这里插入图片描述
  3. 确认运行的 Pipeline 在 image-check 任务提示出错。
    在这里插入图片描述
  4. 可查看 image-check 任务,确认提示有以下 2 类违规问题。其中 “Fixable Severity at least Important” 严重程度为 HIGH,所以没有通过镜像检查。另外还通过 “Red Hat Package Manager in Image” 策略检查出构建好的应用镜像中包含 yum、rpm 等程序,认为有级别为 Low的安全风险。
    注意:由于可能有新的安全漏洞会被发现,因此发现的违规项目可能会更多。
    在这里插入图片描述
  5. 在 RHACS 中的 Violations 中也可找到名为 spring-petclinic 的 Deployment 中的 Fixable Severity at least Important 违规项目。在这里插入图片描述
  6. 进入上图 Fixable Severity at least Important 链接,可以看到违规项目说明。
    在这里插入图片描述

修复安全问题

修复 “Fixable Severity at least Important” 类问题

在 cicd 项目中找到名为 gogs 的路由,然后用浏览器访问路由地址。用 gogs/gogs 登录后编辑修改 spring-petclinic 仓库中的 pom.xml 文件,将 <version> 中的内容改为下图的 “2.2.13.RELEASE”,最后提交保存更改。
在这里插入图片描述
注意:因为有些新发现的安全漏洞不一定立即就有修复方法,如果发现还提示有其它 “Fixable Severity at least Important”,为了能让 CI/CD Pipeline 运行完,可以先在 RHACS 中修改 Fixable Severity at least Important 策略的 Response method,从 Inform and enforce 改为 Inform 即可。
在这里插入图片描述

修复 “Red Hat Package Manager in Image” 类问题

  1. 以下提示在镜像中发现 rpm 和 yum 包管理器,存在一定风险。可以通过右侧的方法删除镜像中的包管理器。
    在这里插入图片描述
  2. 运行以下命令更新名为 s2i-java-11 的任务。
$ oc apply -f https://raw.githubusercontent.com/liuxiaoyu-git/SecurityDemos/master/2021Labs/OpenShiftSecurity/documentation/labs-artifacts/s2ijava-mgr.yaml -n cicd

或者找到名为 s2i-java-11 的任务,然后计加入以下 Step 内容。

    - args:
      - |-
        buildah from --storage-driver=vfs --tls-verify=$(params.TLSVERIFY) '$(params.IMAGE_NAME):$(params.IMAGE_TAG)' > imgname
        
        buildah run --user=root --storage-driver=vfs `cat imgname` -- sh -c 'rpm -e $(rpm -qa *dnf*) $(rpm -qa *libsolv*) $(rpm -qa *hawkey*) $(rpm -qa yum*) $(rpm -qa *dnf*) $(rpm -qa *subscription-manager*)'
        
        buildah run --user=root --storage-driver=vfs `cat imgname` -- sh -c 'rpm -e $(rpm -qa *rpm*)'
        
        buildah commit --storage-driver=vfs --tls-verify=$(params.TLSVERIFY) `cat imgname` '$(params.IMAGE_NAME):$(params.IMAGE_TAG)'
      command:
      - /bin/sh
      - -c
      image: registry.redhat.io/rhel8/buildah@sha256:180c4d9849b6ab0e5465d30d4f3a77765cf0d852ca1cb1efb59d6e8c9f90d467
      name: remove-package-mgr
      resources: {}
      volumeMounts:
      - mountPath: /var/lib/containers
        name: varlibcontainers
      - mountPath: /gen-source
        name: gen-source
      workingDir: /gen-source

在这里插入图片描述

验证修复结果

再次运行名为 petlinic-build-dev 的 Pipeline,确认已经修复好,并且 CI/CD Pipeline 可以成功运行完成。
在这里插入图片描述
在这里插入图片描述

演示视频

视频

参考

https://github.com/rcarrata/devsecops-demo
https://github.com/liuxiaoyu-git/DevSecOps-Demos/blob/master/2021Labs/OpenShiftSecurity/documentation/lab4.adoc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值