mondoo.client

Rôle Ansible Mondoo Package

illustration du rôle ansible mondoo

Aperçu

Ce rôle installe cnquery et cnspec sur les serveurs Linux et Windows.

Il fait :

  • Installe les binaires signés cnquery et cnspec
  • Enregistre cnquery et cnspec avec la plateforme Mondoo
  • Active le service cnspec sur Linux et Windows

Il prend en charge :

  • Amazon Linux
  • Debian
  • Red Hat Enterprise Linux et dérivés (CentOS/AlmaLinux/Rocky Linux)
  • SUSE & openSUSE
  • Ubuntu
  • Windows 10, 11, 2016, 2019, 2022

Le rôle est publié sur Ansible Galaxy : Rôle Mondoo/Client.

Exigences

  • Ansible > 2.5

Variables de Rôle

Nom Valeur par Défaut Description
registration_token_retrieval manual manual nécessite de définir registration_token
registration_token n/a définit manuellement le jeton d'enregistrement de la plateforme Mondoo utilisé pour enregistrer cnquery et cnspec
force_registration false force la réinscription à chaque exécution

Dépendances

Ce rôle n'a pas de dépendances.

Exemple : Appliquer un Playbook Ansible à une instance Linux Amazon EC2

Ce playbook montre comment utiliser le rôle Mondoo Package pour installer cnquery et cnspec sur plusieurs instances :

  1. Créez un nouvel inventaire hosts. Ajoutez votre hôte au groupe.
[linux_hosts]
54.172.7.243  ansible_user=ec2-user
  1. Créez un playbook.yml et changez le registration_token :
---
- hosts: linux_hosts
  become: yes
  roles:
    - role: ansible-mondoo # si utilisé depuis galaxy : mondoo.client
      vars:
        registration_token: "changeme"

De plus, nous prenons en charge les variables suivantes :

variable description
force_registration: true mettre à true si vous souhaitez réinscrire cnquery et cnspec
ensure_managed_client: true garantit que les clients configurés sont définis comme clients gérés dans Mondoo
proxy_env['https_proxy'] définit le proxy pour le client cnspec
annotations définit des annotations/étiquettes pour le nœud
update_linux_enabled mettre à true si vous souhaitez activer la tâche de mise à jour pour Linux via une tâche cron
update_linux_cron_day définit l'intervalle de mise à jour en jours pour la mise à jour de cnspec, exemple */3 pour tous les 3 jours
update_linux_cron_hour définit l'heure à laquelle la tâche doit être effectuée
update_linux_cron_minute définit la minute à laquelle la tâche doit être effectuée
update_windows_enabled mettre à true si vous souhaitez activer la tâche de mise à jour pour Windows via une tâche planifiée
update_windows_interval définit l'intervalle de mise à jour en jours pour la mise à jour de cnspec
update_windows_time définit l'heure à laquelle la tâche doit être effectuée
timer définit le minuteur pour définir un intervalle de scan en minutes. La valeur par défaut est 60.
splay définit le délai dans le timing de scan
---
- hosts: linux_hosts
  become: yes
  roles:
    - role: ansible-mondoo # si utilisé depuis galaxy : mondoo.client
      vars:
        registration_token: "changeme"
        force_registration: true
        ensure_managed_client: true
        annotations: "[email protected],env=production"

Si vous souhaitez utiliser cnspec derrière un proxy :

---
- hosts: linux_hosts
  become: yes
  vars:
    proxy_env:
      http_proxy: "http://192.168.56.1:3128"
      https_proxy: "http://192.168.56.1:3128"

  roles:
    - role: ansible-mondoo # si utilisé depuis galaxy : mondoo.client
      vars:
        registration_token: "changeme"
        force_registration: true
        ensure_managed_client: true
      environment: "{{proxy_env}}"

Si vous souhaitez utiliser la tâche de mise à jour Windows :

---
- hosts: windows_hosts
  become: yes

  roles:
    - role: ansible-mondoo # si utilisé depuis galaxy : mondoo.client
      vars:
        registration_token: "changeme"
        force_registration: true
        ensure_managed_client: true
        update_windows_enabled: true
        update_windows_interval: "1"
        update_windows_time: "15:04"

Si vous souhaitez utiliser la tâche de mise à jour Linux :

---
- hosts: linux_hosts
  become: yes

  roles:
    - role: ansible-mondoo # si utilisé depuis galaxy : mondoo.client
      vars:
        registration_token: "changeme"
        force_registration: true
        ensure_managed_client: true
        update_linux_enabled: true
        update_linux_cron_day: "*"
        update_linux_cron_hour: "11"
        update_linux_cron_minute: "40"
  1. Exécutez le playbook avec le fichier hosts local :
# télécharger le rôle mondoo depuis github
ansible-galaxy role install git+https://github.com/mondoohq/ansible-mondoo.git

# (alternatif) télécharger le rôle mondoo depuis ansible galaxy
ansible-galaxy install mondoo.client

# appliquer le playbook
ansible-playbook -i hosts playbook.yml
  1. Connectez-vous à la console Mondoo pour voir les résultats des scans

Appliquer un Playbook Ansible à une instance Windows Amazon EC2

Si vous utilisez Windows, veuillez lire la documentation d'ansible concernant la configuration WinRM ou la configuration SSH.

  1. Créez un nouvel inventaire hosts. Ajoutez votre hôte au groupe.
[windows_hosts]
123.123.247.76 ansible_port=5986 ansible_connection=winrm ansible_user=Administrator ansible_password=changeme ansible_shell_type=powershell ansible_winrm_server_cert_validation=ignore

ou si vous allez utiliser ssh :

3.235.247.76 ansible_port=22 ansible_connection=ssh ansible_user=admin ansible_shell_type=cmd
  1. Créez un playbook.yml et changez le registration_token :

Si vous ciblez Windows, la configuration est légèrement différente car become doit être désactivé :

- hosts: windows_hosts
  roles:
    - role: ansible-mondoo # si utilisé depuis galaxy : mondoo.client
      vars:
        registration_token: "changeme"
        force_registration: false
  1. Exécutez le playbook avec le fichier hosts local :
# télécharger le rôle mondoo depuis github
ansible-galaxy role install git+https://github.com/mondoohq/ansible-mondoo.git

# (alternatif) télécharger le rôle mondoo depuis ansible galaxy
ansible-galaxy install mondoo.client

# appliquer le playbook
ansible-playbook -i hosts playbook.yml

Tests

Pour les tests, ce rôle utilise molecule. Vous pouvez installer les dépendances via :

pip install molecule
pip install docker
pip install 'molecule-plugins[docker]'

L'interface en ligne de commande molecule couvre le cycle de vie des tests :

# réinitialiser molecule
molecule reset
# converger les machines avec ansible
image=geerlingguy/docker-ubuntu2204-ansible molecule converge
# exécuter les tests molecule avec cnspec
image=geerlingguy/docker-ubuntu2204-ansible molecule verify
# pour le débogage, vous pouvez vous connecter à des hôtes individuels
molecule login --host ubuntu
# détruire la configuration de test
molecule destroy
image=geerlingguy/docker-ubuntu2204-ansible molecule test
image=rsprta/opensuse-ansible molecule test

REMARQUE : pour pouvoir tester sur macOS m1, vous avez besoin d'images docker compatibles arm comme rockylinux indiquées ci-dessus.

Pour le linting, nous utilisons ansible-lint :

pip3 install ansible-lint

Ensuite, vous pouvez voir tous les problèmes locaux avec :

ansible-lint

Auteur

Mondoo, Inc

FAQ

Erreur 'module' object's has no attribute 'HTTPSHandler'

TASK [mondoo : Télécharger la clé RPM de Mondoo] ********************************
    fatal: [suse]: ÉCHEC! => {"changed": false, "module_stderr": "Connexion partagée à 127.0.0.1 fermée.\r\n", "module_stdout": "Traceback (most recent call last):\r\n  File \"/home/vagrant/.ansible/tmp/ansible-tmp-1562450830.52-85510064926638/AnsiballZ_get_url.py\", line 113, in <module>\r\n    _ansiballz_main()\r\n  File \"/home/vagrant/.ansible/tmp/ansible-tmp-1562450830.52-85510064926638/AnsiballZ_get_url.py\", line 105, in _ansiballz_main\r\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n  File \"/home/vagrant/.ansible/tmp/ansible-tmp-1562450830.52-85510064926638/AnsiballZ_get_url.py\", line 48, in invoke_module\r\n    imp.load_module('__main__', mod, module, MOD_DESC)\r\n  File \"/tmp/ansible_get_url_payload_103dVU/__main__.py\", line 308, in <module>\r\n  File \"/tmp/ansible_get_url_payload_103dVU/ansible_get_url_payload.zip/ansible/module_utils/urls.py\", line 346, in <module>\r\nAttributeError: 'module' object has no attribute 'HTTPSHandler'\r\n", "msg": "ÉCHEC DU MODULE\nConsultez stdout/stderr pour l'erreur exacte", "rc": 1}
sudo zypper install python python2-urllib3 python3 python3-urllib3

Erreur ansible.legacy.setup sur Windows avec SSH

fatal: [123.123.247.76]: ÉCHEC! => {"ansible_facts": {}, "changed": false, "failed_modules": {"ansible.legacy.setup": {"failed": true, "module_stderr": "Le format du paramètre n'est pas correct - ;\r\n", "module_stdout": "", "msg": "ÉCHEC DU MODULE\nConsultez stdout/stderr pour l'erreur exacte", "rc": 1}}, "msg": "Les modules suivants ont échoué à s'exécuter : ansible.legacy.setup\n"}

Ansible en combinaison avec les versions de Win32-OpenSSH antérieures à v7.9.0.0p1-Beta ne fonctionnent pas lorsque powershell est le type de shell, définissez le type de shell sur cmd.

Erreur : Vous devez installer 'jmespath' avant d'exécuter le filtre json_query

Assurez-vous que jmespath est installé dans le même environnement Python qu'ansible :

pip install jmespath

Je veux le tester avec un système d'exploitation non pris en charge

Ajoutez ce qui suit à main.yml et imprimez les ansible_facts pour voir ce qui est utilisé et ajustez les conditions when :

- name: Imprimer tous les faits disponibles
  ansible.builtin.debug:
    var: ansible_facts

Rejoignez la communauté !

Rejoignez les Discussions de la communauté Mondoo sur GitHub pour collaborer sur la politique comme code et l'automatisation de la sécurité.

À propos du projet

Install and configure cnquery and cnspec

Installer
ansible-galaxy install mondoo.client
Licence
other
Téléchargements
12.4k
Propriétaire
Cloud-Native Security & Vulnerability Management