This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.5.14. 使用 oc-compliance 插件
虽然 Compliance Operator 为集群自动执行许多检查和补救,但将集群设置为合规的完整过程通常需要管理员与 Compliance Operator API 和其他组件交互。oc-compliance
插件使进程变得更加容易。
5.14.1. 安装 oc-compliance 插件 复制链接链接已复制到粘贴板!
流程
提取
oc-compliance
镜像以获取oc-compliance
二进制文件:podman run --rm -v ~/.local/bin:/mnt/out:Z registry.redhat.io/compliance/oc-compliance-rhel8:stable /bin/cp /usr/bin/oc-compliance /mnt/out/
$ podman run --rm -v ~/.local/bin:/mnt/out:Z registry.redhat.io/compliance/oc-compliance-rhel8:stable /bin/cp /usr/bin/oc-compliance /mnt/out/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
W0611 20:35:46.486903 11354 manifest.go:440] Chose linux/amd64 manifest from the manifest list.
W0611 20:35:46.486903 11354 manifest.go:440] Chose linux/amd64 manifest from the manifest list.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,您可以运行
oc-compliance
。
5.14.2. 获取原始结果 复制链接链接已复制到粘贴板!
当合规性扫描完成后,生成的 ComplianceCheckResult
自定义资源(CR)中会列出单个检查的结果。但是,管理员或审核员可能需要扫描的完整详情。OpenSCAP 工具创建带有详细结果的高级记录格式(ARF)格式的文件。这个 ARF 文件太大,无法存储在配置映射或其他标准 Kubernetes 资源中,因此会创建一个持久性卷(PV)来包含它。
流程
使用 Compliance Operator 从 PV 获取结果是一个包括四步的过程。但是,在
oc-compliance
插件中,您可以使用单个命令:oc compliance fetch-raw <object-type> <object-name> -o <output-path>
$ oc compliance fetch-raw <object-type> <object-name> -o <output-path>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<object-type>
可以是scansettingbinding
、compliancescan
或compliancesuite
,具体取决于扫描通过哪个对象启动。 <object-name>
是用于收集 ARF 文件的绑定、套件或扫描对象的名称,<output-path>
是放置结果的本地目录。例如:
oc compliance fetch-raw scansettingbindings my-binding -o /tmp/
$ oc compliance fetch-raw scansettingbindings my-binding -o /tmp/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
查看目录中的文件列表:
ls /tmp/ocp4-cis-node-master/
$ ls /tmp/ocp4-cis-node-master/
输出示例
ocp4-cis-node-master-ip-10-0-128-89.ec2.internal-pod.xml.bzip2 ocp4-cis-node-master-ip-10-0-150-5.ec2.internal-pod.xml.bzip2 ocp4-cis-node-master-ip-10-0-163-32.ec2.internal-pod.xml.bzip2
ocp4-cis-node-master-ip-10-0-128-89.ec2.internal-pod.xml.bzip2 ocp4-cis-node-master-ip-10-0-150-5.ec2.internal-pod.xml.bzip2 ocp4-cis-node-master-ip-10-0-163-32.ec2.internal-pod.xml.bzip2
提取结果:
bunzip2 -c resultsdir/worker-scan/worker-scan-stage-459-tqkg7-compute-0-pod.xml.bzip2 > resultsdir/worker-scan/worker-scan-ip-10-0-170-231.us-east-2.compute.internal-pod.xml
$ bunzip2 -c resultsdir/worker-scan/worker-scan-stage-459-tqkg7-compute-0-pod.xml.bzip2 > resultsdir/worker-scan/worker-scan-ip-10-0-170-231.us-east-2.compute.internal-pod.xml
查看结果:
ls resultsdir/worker-scan/
$ ls resultsdir/worker-scan/
输出示例
worker-scan-ip-10-0-170-231.us-east-2.compute.internal-pod.xml worker-scan-stage-459-tqkg7-compute-0-pod.xml.bzip2 worker-scan-stage-459-tqkg7-compute-1-pod.xml.bzip2
worker-scan-ip-10-0-170-231.us-east-2.compute.internal-pod.xml
worker-scan-stage-459-tqkg7-compute-0-pod.xml.bzip2
worker-scan-stage-459-tqkg7-compute-1-pod.xml.bzip2
5.14.3. 重新运行扫描 复制链接链接已复制到粘贴板!
虽然可以作为调度的作业运行扫描,但通常必须根据需要重新运行扫描,特别是在应用修复或进行其他更改集群时。
流程
使用 Compliance Operator 重新运行扫描需要使用扫描对象上的注解。但是,通过
oc-compliance
插件,您可以使用单个命令重新运行扫描。输入以下命令为名为my-binding
的ScanSettingBinding
对象重新运行扫描:oc compliance rerun-now scansettingbindings my-binding
$ oc compliance rerun-now scansettingbindings my-binding
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Rerunning scans from 'my-binding': ocp4-cis Re-running scan 'openshift-compliance/ocp4-cis'
Rerunning scans from 'my-binding': ocp4-cis Re-running scan 'openshift-compliance/ocp4-cis'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.14.4. 使用 ScanSettingBinding 自定义资源 复制链接链接已复制到粘贴板!
当使用由 Compliance Operator 提供的 ScanSetting
和 ScanSettingBinding
自定义资源(CR)时,可以在使用一组常用的扫描选项时,对多个配置集运行扫描,如 schedule
、machine roles
、tolerations
等。虽然这比使用多个 ComplianceSuite
或 ComplianceScan
对象更容易,但可能会让新用户混淆。
oc compliance bind
子命令可帮助您创建 ScanSettingBinding
CR。
流程
运行:
oc compliance bind [--dry-run] -N <binding name> [-S <scansetting name>] <objtype/objname> [..<objtype/objname>]
$ oc compliance bind [--dry-run] -N <binding name> [-S <scansetting name>] <objtype/objname> [..<objtype/objname>]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果省略
-S
标志,则使用 Compliance Operator 提供的default
扫描设置。 -
对象类型是 Kubernetes 对象类型,可以是
profile
或tailorprofile
。可以提供多个对象。 -
对象名称是 Kubernetes 资源的名称,如
.metadata.name
。 添加
--dry-run
选项,以显示所创建对象的 YAML 文件。例如,给定以下配置集和扫描设置:
oc get profile.compliance -n openshift-compliance
$ oc get profile.compliance -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get scansettings -n openshift-compliance
$ oc get scansettings -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME AGE default 10m default-auto-apply 10m
NAME AGE default 10m default-auto-apply 10m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
如果省略
要将
default
设置应用到ocp4-cis
和ocp4-cis-node
配置集,请运行:oc compliance bind -N my-binding profile/ocp4-cis profile/ocp4-cis-node
$ oc compliance bind -N my-binding profile/ocp4-cis profile/ocp4-cis-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Creating ScanSettingBinding my-binding
Creating ScanSettingBinding my-binding
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
ScanSettingBinding
CR 后,绑定配置集开始使用相关设置扫描两个配置集。总体而言,这是开始使用 Compliance Operator 扫描的最快方法。
5.14.5. 打印控制 复制链接链接已复制到粘贴板!
合规标准通常分为层次结构,如下所示:
- 基准是特定标准的一组控制的顶级定义。例如,FedRAMP Moderate 或 Center for Internet Security(CIS)v.1.6.0。
- 控制描述了遵守基准必须满足的一系列要求。例如,FedRAMP AC-01(访问控制政策和程序)。
- 规则是单一检查,特定于要纳入合规性的系统,以及一个或多个这些规则映射到控制。
- Compliance Operator 处理将规则分组到配置集中的单个基准测试。可能很难确定哪些控制配置集中的规则集是否满足要求。
流程
oc compliance
control
子命令提供有关给定配置集满足的标准和控制标准的报告:oc compliance controls profile ocp4-cis-node
$ oc compliance controls profile ocp4-cis-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.14.6. 获取合规补救详情 复制链接链接已复制到粘贴板!
Compliance Operator 提供了补救对象,用于自动执行与集群兼容所需的更改。fetch-fixes
子命令可帮助您准确了解使用了哪些配置修复。使用 fetch-fixes
子命令,将修复对象从配置集、规则或 ComplianceRemediation
对象提取到要检查的目录中。
流程
查看配置集的补救:
oc compliance fetch-fixes profile ocp4-cis -o /tmp
$ oc compliance fetch-fixes profile ocp4-cis -o /tmp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 当配置集中没有对应的修复规则时会出现
No fixes to persist
警告,因为规则无法自动修复,或者没有提供相应的补救。
您可以查看 YAML 文件示例。
head
命令将显示前 10 行:head /tmp/ocp4-api-server-audit-log-maxsize.yaml
$ head /tmp/ocp4-api-server-audit-log-maxsize.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看扫描后创建的
ComplianceRemediation
对象的补救:oc get complianceremediations -n openshift-compliance
$ oc get complianceremediations -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATE ocp4-cis-api-server-encryption-provider-cipher NotApplied ocp4-cis-api-server-encryption-provider-config NotApplied
NAME STATE ocp4-cis-api-server-encryption-provider-cipher NotApplied ocp4-cis-api-server-encryption-provider-config NotApplied
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc compliance fetch-fixes complianceremediations ocp4-cis-api-server-encryption-provider-cipher -o /tmp
$ oc compliance fetch-fixes complianceremediations ocp4-cis-api-server-encryption-provider-cipher -o /tmp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Persisted compliance remediation fix to /tmp/ocp4-cis-api-server-encryption-provider-cipher.yaml
Persisted compliance remediation fix to /tmp/ocp4-cis-api-server-encryption-provider-cipher.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以查看 YAML 文件示例。
head
命令将显示前 10 行:head /tmp/ocp4-cis-api-server-encryption-provider-cipher.yaml
$ head /tmp/ocp4-cis-api-server-encryption-provider-cipher.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在直接应用补救前请小心。有些补救可能不适用于批量,如中等配置集中的 usbguard 规则。在这些情况下,允许 Compliance Operator 应用规则,因为它解决了依赖项并确保集群处于良好状态。
5.14.7. 查看 ComplianceCheckResult 对象详情 复制链接链接已复制到粘贴板!
扫描运行结束时,会针对各个扫描规则创建 ComplianceCheckResult
对象。view-result
子命令提供了 ComplianceCheckResult
对象详细信息人类可读的输出。
流程
运行:
oc compliance view-result ocp4-cis-scheduler-no-bind-address
$ oc compliance view-result ocp4-cis-scheduler-no-bind-address
Copy to Clipboard Copied! Toggle word wrap Toggle overflow