Reviewing a remediation

You can review a ComplianceRemediation object and the ComplianceCheckResult object to understand what a check verifies, its severity and security controls, and how the remediation fixes the issue. After the first scan, check for remediations with the state MissingDependencies.

The ComplianceCheckResult object includes human-readable descriptions of what the check does and what security hardening it enforces.

The remediation payload is stored in the spec.current attribute. The payload can be any Kubernetes object, but because this remediation was produced by a node scan, the remediation payload in the following example is a MachineConfig object. For Platform scans, the remediation payload is often a different kind of an object (for example, a ConfigMap or Secret object). Typically, applying that remediation is up to the administrator. Otherwise, the Compliance Operator would have required a very broad set of permissions to manipulate any generic Kubernetes object. An example of remediating a Platform check is provided later in the text.

To see exactly what the remediation does when applied, the MachineConfig object contents use the Ignition objects for the configuration. See the link to "Ignition specification" in Additional resources for further information about the format. In the following example, the spec.config.storage.files[0].path attribute specifies the file that is being created by this remediation (/etc/sysctl.d/75-sysctl_net_ipv4_conf_all_accept_redirects.conf) and the spec.config.storage.files[0].contents.source attribute specifies the contents of that file.

Procedure
  1. Review the example of a check and a remediation called sysctl-net-ipv4-conf-all-accept-redirects. This example is redacted to only show spec and status and omits metadata:

    spec:
      apply: false
      current:
      object:
        apiVersion: machineconfiguration.openshift.io/v1
        kind: MachineConfig
        spec:
          config:
            ignition:
              version: 3.2.0
            storage:
              files:
                - path: /etc/sysctl.d/75-sysctl_net_ipv4_conf_all_accept_redirects.conf
                  mode: 0644
                  contents:
                    source: data:,net.ipv4.conf.all.accept_redirects%3D0
      outdated: {}
    status:
      applicationState: NotApplied
  2. Use the following Python script to view the contents:

    Note

    The contents of the files are URL-encoded.

    $ echo "net.ipv4.conf.all.accept_redirects%3D0" | python3 -c "import sys, urllib.parse; print(urllib.parse.unquote(''.join(sys.stdin.readlines())))"
    Example output
    net.ipv4.conf.all.accept_redirects=0
    Important

    The Compliance Operator does not automatically resolve dependency issues that can occur between remediations. Users should perform a rescan after remediations are applied to ensure accurate results.