5.14. Utilisation du plugin oc-compliance
Bien que l'Opérateur de Conformité automatise de nombreux contrôles et remédiations pour le cluster, le processus complet de mise en conformité d'un cluster nécessite souvent une interaction de l'administrateur avec l'API de l'Opérateur de Conformité et d'autres composants. Le plugin oc-compliance
facilite ce processus.
5.14.1. Installation du plugin oc-compliance
Procédure
Extraire l'image
oc-compliance
pour obtenir le binaireoc-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/
Exemple de sortie
W0611 20:35:46.486903 11354 manifest.go:440] Chose linux/amd64 manifest from the manifest list.
Vous pouvez maintenant lancer
oc-compliance
.
5.14.2. Récupération des résultats bruts
Lorsqu'un contrôle de conformité est terminé, les résultats des contrôles individuels sont répertoriés dans la ressource personnalisée (CR) ComplianceCheckResult
qui en résulte. Cependant, un administrateur ou un auditeur peut avoir besoin des détails complets de l'analyse. L'outil OpenSCAP crée un fichier au format ARF (Advanced Recording Format) contenant les résultats détaillés. Ce fichier ARF est trop volumineux pour être stocké dans une carte de configuration ou une autre ressource Kubernetes standard, un volume persistant (PV) est donc créé pour le contenir.
Procédure
L'obtention des résultats du PV avec l'Opérateur de Conformité est un processus en quatre étapes. Cependant, avec le plugin
oc-compliance
, vous pouvez utiliser une seule commande :$ oc compliance fetch-raw <object-type> <object-name> -o <output-path>
-
<object-type>
peut êtrescansettingbinding
,compliancescan
oucompliancesuite
, en fonction de l'objet avec lequel les balayages ont été lancés. <object-name>
est le nom de la reliure, de la suite ou de l'objet de numérisation pour lequel le fichier ARF doit être rassemblé, et<output-path>
est le répertoire local dans lequel les résultats doivent être placés.Par exemple :
$ oc compliance fetch-raw scansettingbindings my-binding -o /tmp/
Exemple de sortie
Fetching results for my-binding scans: ocp4-cis, ocp4-cis-node-worker, ocp4-cis-node-master Fetching raw compliance results for scan 'ocp4-cis'....... The raw compliance results are available in the following directory: /tmp/ocp4-cis Fetching raw compliance results for scan 'ocp4-cis-node-worker'........... The raw compliance results are available in the following directory: /tmp/ocp4-cis-node-worker Fetching raw compliance results for scan 'ocp4-cis-node-master'...... The raw compliance results are available in the following directory: /tmp/ocp4-cis-node-master
Affiche la liste des fichiers du répertoire :
$ ls /tmp/ocp4-cis-node-master/
Exemple de sortie
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
Extraire les résultats :
$ 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
Voir les résultats :
$ ls resultsdir/worker-scan/
Exemple de sortie
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. Réexécution des analyses
Bien qu'il soit possible d'exécuter des analyses en tant que tâches planifiées, vous devez souvent réexécuter une analyse à la demande, en particulier après l'application de remédiations ou lorsque d'autres changements sont apportés au cluster.
Procédure
La relance d'une analyse à l'aide de l'opérateur de conformité nécessite l'utilisation d'une annotation sur l'objet de l'analyse. Cependant, avec le plugin
oc-compliance
, vous pouvez réexécuter une analyse à l'aide d'une seule commande. Entrez la commande suivante pour réexécuter les analyses de l'objetScanSettingBinding
nommémy-binding
:$ oc compliance rerun-now scansettingbindings my-binding
Exemple de sortie
Rerunning scans from 'my-binding': ocp4-cis Re-running scan 'openshift-compliance/ocp4-cis'
5.14.4. Utilisation des ressources personnalisées ScanSettingBinding
En utilisant les ressources personnalisées (CR) ScanSetting
et ScanSettingBinding
fournies par l'Opérateur de Conformité, il est possible d'exécuter des analyses pour plusieurs profils tout en utilisant un ensemble commun d'options d'analyse, telles que schedule
, machine roles
, tolerations
, et ainsi de suite. Bien que cela soit plus facile que de travailler avec plusieurs objets ComplianceSuite
ou ComplianceScan
, cela peut perturber les nouveaux utilisateurs.
La sous-commande oc compliance bind
vous aide à créer un CR ScanSettingBinding
.
Procédure
Exécutez :
$ oc compliance bind [--dry-run] -N <binding nom> [-S <scansetting nom>] <objtype/objname> [..<objtype/objname>]
-
Si vous omettez l'indicateur
-S
, le paramètre de balayagedefault
fourni par l'opérateur de conformité est utilisé. -
Le type d'objet est le type d'objet Kubernetes, qui peut être
profile
outailoredprofile
. Plusieurs objets peuvent être fournis. -
Le nom de l'objet est le nom de la ressource Kubernetes, par exemple
.metadata.name
. Ajouter l'option
--dry-run
pour afficher le fichier YAML des objets créés.Par exemple, compte tenu des profils et des paramètres de numérisation suivants :
$ oc get profile.compliance -n openshift-compliance
Exemple de sortie
NAME AGE ocp4-cis 9m54s ocp4-cis-node 9m54s ocp4-e8 9m54s ocp4-moderate 9m54s ocp4-ncp 9m54s rhcos4-e8 9m54s rhcos4-moderate 9m54s rhcos4-ncp 9m54s rhcos4-ospp 9m54s rhcos4-stig 9m54s
$ oc get scansettings -n openshift-compliance
Exemple de sortie
NAME AGE default 10m default-auto-apply 10m
-
Si vous omettez l'indicateur
Pour appliquer les paramètres de
default
aux profilsocp4-cis
etocp4-cis-node
, exécutez :$ oc compliance bind -N my-binding profile/ocp4-cis profile/ocp4-cis-node
Exemple de sortie
Creating ScanSettingBinding my-binding
Une fois que le CR
ScanSettingBinding
est créé, le profil lié commence à numériser pour les deux profils avec les paramètres correspondants. Dans l'ensemble, il s'agit de la méthode la plus rapide pour commencer la numérisation avec l'opérateur de conformité.
5.14.5. Contrôles d'impression
Les normes de conformité sont généralement organisées selon la hiérarchie suivante :
- Un référentiel est la définition de haut niveau d'un ensemble de contrôles pour une norme particulière. Par exemple, FedRAMP Moderate ou Center for Internet Security (CIS) v.1.6.0.
- Un contrôle décrit une famille d'exigences qui doivent être respectées pour être en conformité avec le référentiel. Par exemple, FedRAMP AC-01 (politique et procédures de contrôle d'accès).
- Une règle est un contrôle unique spécifique au système mis en conformité, et une ou plusieurs de ces règles correspondent à un contrôle.
- L'Opérateur de Conformité gère le regroupement des règles dans un profil pour un seul benchmark. Il peut être difficile de déterminer les contrôles que l'ensemble des règles d'un profil satisfait.
Procédure
La sous-commande
oc compliance
controls
fournit un rapport sur les normes et les contrôles auxquels un profil donné satisfait :$ oc compliance controls profile ocp4-cis-node
Exemple de sortie
+-----------+----------+ | FRAMEWORK | CONTROLS | +-----------+----------+ | CIS-OCP | 1.1.1 | + +----------+ | | 1.1.10 | + +----------+ | | 1.1.11 | + +----------+ ...
5.14.6. Récupérer les détails de la mise en conformité
L'opérateur de conformité fournit des objets de remédiation qui sont utilisés pour automatiser les changements nécessaires pour rendre le cluster conforme. La sous-commande fetch-fixes
peut vous aider à comprendre exactement quelles remédiations de configuration sont utilisées. Utilisez la sous-commande fetch-fixes
pour extraire les objets de remédiation d'un profil, d'une règle ou d'un objet ComplianceRemediation
dans un répertoire à inspecter.
Procédure
Voir les remédiations pour un profil :
$ oc compliance fetch-fixes profile ocp4-cis -o /tmp
Exemple de sortie
No fixes to persist for rule 'ocp4-api-server-api-priority-flowschema-catch-all' 1 No fixes to persist for rule 'ocp4-api-server-api-priority-gate-enabled' No fixes to persist for rule 'ocp4-api-server-audit-log-maxbackup' Persisted rule fix to /tmp/ocp4-api-server-audit-log-maxsize.yaml No fixes to persist for rule 'ocp4-api-server-audit-log-path' No fixes to persist for rule 'ocp4-api-server-auth-mode-no-aa' No fixes to persist for rule 'ocp4-api-server-auth-mode-node' No fixes to persist for rule 'ocp4-api-server-auth-mode-rbac' No fixes to persist for rule 'ocp4-api-server-basic-auth' No fixes to persist for rule 'ocp4-api-server-bind-address' No fixes to persist for rule 'ocp4-api-server-client-ca' Persisted rule fix to /tmp/ocp4-api-server-encryption-provider-cipher.yaml Persisted rule fix to /tmp/ocp4-api-server-encryption-provider-config.yaml
- 1
- L'avertissement
No fixes to persist
est attendu chaque fois que des règles d'un profil n'ont pas de remédiation correspondante, soit parce que la règle ne peut pas être remédiée automatiquement, soit parce qu'une remédiation n'a pas été fournie.
Vous pouvez visualiser un exemple de fichier YAML. La commande
head
vous montrera les 10 premières lignes :$ head /tmp/ocp4-api-server-audit-log-maxsize.yaml
Exemple de sortie
apiVersion: config.openshift.io/v1 kind: APIServer metadata: name: cluster spec: maximumFileSizeMegabytes: 100
Visualiser la remédiation à partir d'un objet
ComplianceRemediation
créé après une analyse :$ oc get complianceremediations -n openshift-compliance
Exemple de sortie
NAME STATE ocp4-cis-api-server-encryption-provider-cipher NotApplied ocp4-cis-api-server-encryption-provider-config NotApplied
$ oc compliance fetch-fixes complianceremediations ocp4-cis-api-server-encryption-provider-cipher -o /tmp
Exemple de sortie
Persisted compliance remediation fix to /tmp/ocp4-cis-api-server-encryption-provider-cipher.yaml
Vous pouvez visualiser un exemple de fichier YAML. La commande
head
vous montrera les 10 premières lignes :$ head /tmp/ocp4-cis-api-server-encryption-provider-cipher.yaml
Exemple de sortie
apiVersion: config.openshift.io/v1 kind: APIServer metadata: name: cluster spec: encryption: type: aescbc
Soyez prudent avant d'appliquer les mesures correctives directement. Certaines remédiations peuvent ne pas être applicables en bloc, comme les règles usbguard dans le profil modéré. Dans ce cas, autorisez l'opérateur de conformité à appliquer les règles, car cela permet de traiter les dépendances et de s'assurer que le cluster reste dans un bon état.
5.14.7. Visualisation des détails de l'objet ComplianceCheckResult
Lorsque les analyses sont terminées, les objets ComplianceCheckResult
sont créés pour les règles d'analyse individuelles. La sous-commande view-result
fournit une sortie lisible par l'homme des détails de l'objet ComplianceCheckResult
.
Procédure
Exécutez :
$ oc compliance view-result ocp4-cis-scheduler-no-bind-address