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.bzip25.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 - 创建 - ScanSettingBindingCR 后,绑定配置集开始使用相关设置扫描两个配置集。总体而言,这是开始使用 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