Le contenu de conformité personnalisé vous permet de définir vos propres normes de sécurité, pour compléter la bibliothèque de références et de contrôles de sécurité intégrés dans SaltStack SecOps Compliance. Ce contenu personnalisé est utile pour améliorer les stratégies SaltStack SecOps Compliance pour répondre à vos besoins internes.

Un contrôle est une norme de sécurité dont SaltStack SecOps Compliance évalue la conformité. Les évaluations sont des catégories de contrôles de sécurité.

SaltStack SecOps Compliance inclut un SDK (Software Development Kit) à contenu personnalisé que vous pouvez utiliser pour créer, tester et créer votre propre contenu de sécurité personnalisé. Vous pouvez importer votre contenu de sécurité personnalisé à utiliser en complément de la bibliothèque de sécurité intégrée de SaltStack SecOps Compliance pour évaluation et correction. La possibilité d'importer du contenu personnalisé vous permet également de gérer les versions de votre contenu à l'aide d'un système de contrôle de version de votre choix.

Pour utiliser les contrôles personnalisés, commencez par initialiser le SDK à contenu personnalisé de SaltStack SecOps Compliance. Le SDK inclut des exemples de fichiers que vous pouvez modifier pour créer vos propres contrôles personnalisés, ainsi que des évaluations. Le SDK inclut également un environnement de test basé sur Docker dans lequel vous pouvez tester votre nouveau contenu.

Une fois votre contenu personnalisé créé et testé, vous pouvez créer un fichier de contenu et l'importer dans SaltStack SecOps Compliance pour commencer l'évaluation et la correction. Les contrôles personnalisés incluent une icône utilisateur custom-checks-user-icon, contrairement aux contrôles SaltStack built-in-checks-shield-icon. SaltStack SecOps Compliance suit les dépendances entre les stratégies et votre contenu personnalisé, et fournit une liste des dépendances qui peuvent être compromises si vous supprimez le contenu.

Conditions préalables

Initialisation du SDK

  1. À partir de la ligne de commande, accédez au répertoire contenant le fichier et exécutez ce qui suit en fonction de votre système d'exploitation.
    • Mac OS ou Linux
      ./secops_sdk init
    • Windows
      secops_sdk.exe init

    Aucune sortie ne s'affiche. Cette situation est normale. Votre répertoire contient désormais les dossiers et fichiers suivants :

    • benchmarks
    • salt/locke/custom
    • sample_tests
    • README.md

    Pour plus d'informations sur ces dossiers et fichiers, reportez-vous à la section Dossiers et fichiers.

  2. (Facultatif) Validez les modifications apportées à un référentiel contrôlé par la version.

Création de contrôles personnalisés

Note :

L'initialisation du SDK est une condition préalable à la création de contenu personnalisé. Reportez-vous à la section Initialisation du SDK.

  1. Dans le SDK de contenu personnalisé, accédez à salt/locke/custom. Ce répertoire contient divers sous-répertoires avec des exemples de fichiers d'état (.sls) et de fichiers méta (.meta).
    Note : Tous les contrôles personnalisés doivent être configurés dans un fichier d'état ( .sls) et un fichier méta ( .meta) correspondant.
  2. Copiez un exemple de fichier d'état (.sls) et son fichier méta (.meta) correspondant, en renommant les deux avec un nom descriptif pour le contrôle personnalisé.

    Les deux fichiers associés à un contrôle doivent se trouver dans le même répertoire et commencer par le même nom, par exemple :

    • my_first_check.meta
    • my_first_check.sls

    Vous pouvez enregistrer ces deux fichiers ensemble dans n'importe quel sous-répertoire de salt/locke/custom.

  3. Modifiez le contenu du méta-fichier pour personnaliser la vérification en fonction de vos besoins. Le fichier est écrit en YAML. Pour consulter la liste des opérations incluses dans le fichier, reportez-vous à la section Dossiers et fichiers.
    Note : Vérifiez que les fichiers méta font référence à différentes évaluations. Lors de la création d'un contenu personnalisé, veillez à inclure toutes les évaluations associées dans votre fichier méta de contrôle.
  4. Modifiez le contenu du fichier d’état. Pour plus d'informations, reportez-vous à la section Dossiers et fichiers.
  5. Assurez-vous que les deux fichiers sont enregistrés dans le même répertoire.

    Vous avez maintenant terminé les étapes minimales requises pour créer un contrôle personnalisé. Vous pouvez continuer à tester le contrôle, valider le contrôle de version ou créer votre bibliothèque de contenu.

Création d’évaluations personnalisées

Note : L'initialisation du SDK est une condition préalable à la création de contenu personnalisé. Reportez-vous à la section Initialisation du SDK.
  1. Dans le SDK de contenu personnalisé, accédez au répertoire benchmarks. Il contient un exemple de fichier méta (.meta) d'évaluation.
  2. Faites une copie de Sample_Benchmark.meta, en le renommant avec un nom descriptif pour votre évaluation.
  3. Modifiez le contenu du méta-fichier pour personnaliser l’évaluation en fonction de vos besoins. Le fichier est écrit en YAML. Pour une description des différentes options incluses dans le fichier, reportez-vous à la section Dossiers et fichiers.

Test du contenu personnalisé

Note : L'installation de Docker est une condition préalable à ce qui suit. Pour plus d'informations sur le téléchargement et l'installation de Docker, consultez la documentation de l'installation de Docker.
  1. Une fois que vous avez créé le contenu personnalisé, ouvrez la ligne de commande et accédez au répertoire sample_tests du SDK de contenu personnalisé.
  2. Créez une image docker de CentOS7 avec Salt pour les tests.
    ./build.sh
  3. Démarrez le conteneur de test.
    ./up.sh
  4. Exécutez des exemples de tests sur les contrôles que vous avez créés dans le répertoire salt/locke/custom. Vous pouvez exécuter des contrôles personnalisés comme vous le feriez avec des états Salt normaux, par exemple :
    ./test.sh salt-call --local state.apply locke.custom.mounts.my_first_check test=True

    Pour obtenir d'autres exemples de tests, reportez-vous à la section Tester du contenu personnalisé dans le fichier LISEZ-MOI du SDK. Pour plus d'informations sur les états Salt, consultez la documentation de Salt : comment utiliser les états Salt ?.

  5. Lorsque le test est terminé, fermez le conteneur de test.
    ./down.sh

Création de la bibliothèque de contenu personnalisée

  1. Une fois que vous avez créé le contenu personnalisé, ouvrez la ligne de commande et accédez au répertoire racine du SDK de contenu personnalisé.
  2. Créez votre bibliothèque de contenu personnalisée.
    ./secops_sdk build -a

    Le répertoire racine du SDK inclut désormais le sous-répertoire _dist. Cela inclut deux fichiers tar.gz que vous pouvez utiliser pour importer votre contenu via l'interface utilisateur de SaltStack Config ou l'API (RaaS). Pour obtenir une description de tous les fichiers inclus dans le répertoire, reportez-vous à la section Dossiers et fichiers.

Importation du contenu personnalisé

  1. Cliquez sur Administration > SecOps dans le menu latéral.
  2. Sous Contenu de conformité - SaltStack, cliquez sur Vérifier les mises à jour.
    Note : Si vous avez déjà téléchargé du contenu SaltStack SecOps Compliance pendant votre session actuelle, vous pouvez ignorer cette étape.
  3. Cliquez sur Charger le module et sélectionnez le fichier .tar.gz dans l'explorateur de fichiers.
    Note : Pour faciliter la navigation de vos contrôles personnalisés, utilisez le fichier contenant un timestamp dans le nom de fichier. Pour en savoir plus sur les fichiers, reportez-vous à la section Dossiers et fichiers.

    Votre contenu personnalisé est désormais disponible dans SaltStack SecOps Compliance pour la création de stratégies, l'exécution d'évaluations et la correction de vos systèmes. Les contrôles personnalisés incluent une icône utilisateur custom-checks-user-icon, contrairement aux contrôles SaltStack built-in-checks-shield-icon.

    Note :

    Vous pouvez également importer du contenu à l'aide de l'API (RaaS) ou via la ligne de commande lors de l'installation. Consultez l'interface Sec API ou le Guide d'installation dans l'entreprise.

Suppression des vérifications personnalisées

  1. Dans l'interface utilisateur, accédez à SecOps > Contrôles.
  2. Cliquez sur le menu menu-icon-light en regard du contrôle que vous souhaitez supprimer, puis cliquez sur Supprimer.
    Note : Seul du contenu personnalisé peut être supprimé. Le contenu personnalisé inclut une icône d'utilisateur custom-checks-user-icon, par opposition au contenu SaltStack built-in-checks-shield-icon.
  3. Dans la boîte de dialogue Supprimer le contrôle, sous En cours d'utilisation, vérifiez la liste de stratégies et d'évaluations qui incluent le contrôle. Cela est utile pour prédire les dépendances dans votre environnement pouvant être compromises si vous supprimez le contrôle.

    Lorsque vous avez terminé d'examiner les dépendances en cours d'utilisation, cliquez sur Suivant.

  4. Sous Supprimer le contrôle > Avertissement, cliquez sur Supprimer. La boîte de dialogue confirme que le contrôle a été supprimé.
  5. Cliquez sur Terminé pour fermer la boîte de dialogue.

Suppression des références personnalisées

  1. Dans l'interface utilisateur, accédez à SecOps > Évaluations.
  2. Cliquez sur le menu menu-icon-light en regard du contrôle que vous souhaitez supprimer, puis cliquez sur Supprimer.
    Note :

    Seul du contenu personnalisé peut être supprimé. Le contenu personnalisé inclut une icône d'utilisateur custom-checks-user-icon, par opposition au contenu SaltStack built-in-checks-shield-icon.

  3. Dans la boîte de dialogue Supprimer l'évaluation, sous En cours d'utilisation, examinez la liste des stratégies et des contrôles associés à l'évaluation. Cela est utile pour prédire les dépendances de votre environnement pouvant être compromises si vous supprimez l'évaluation.

    Lorsque vous avez terminé d'examiner les dépendances en cours d'utilisation, cliquez sur Suivant.

  4. Sous Supprimer l'évaluation > Avertissement, cliquez sur Supprimer. La boîte de dialogue confirme que l’évaluation a été supprimée.
  5. Cliquez sur Terminé pour fermer la boîte de dialogue.

Dossiers et fichiers

Après l'initialisation du SDK, votre répertoire inclut les dossiers et fichiers suivants :

  • benchmarks : contient les fichiers méta d'évaluations personnalisées (.meta)
  • salt/locke/custom : contient les fichiers d'état de contrôle personnalisé (.sls) et les fichiers méta (.meta)
  • sample_tests : contient des exemples de fichiers à tester à l'aide de Docker
  • README.md : fournit des informations plus détaillées sur le SDK

Les fichiers importants sont décrits de façon plus détaillée ci-dessous.

Fichiers d'évaluations personnalisées

Les évaluations sont des catégories de contrôles de sécurité. Les évaluations intégrées de SaltStack SecOps Compliance sont définies par des experts largement reconnus. Cependant, les évaluations personnalisées peuvent être définies par les normes de votre organisation. Chaque évaluation contient une liste de recommandations, appelée contrôles, et dispose d'un fichier .meta correspondant dans le répertoire benchmarks. Pour plus d'informations sur les évaluations dans SaltStack SecOps Compliance, reportez-vous à la section Évaluations.

En créant un fichier méta d'évaluation, vous créez une catégorie de contrôles. Vous pouvez ensuite ajouter des contrôles à cette évaluation en nommant l'évaluation dans un fichier méta de contrôle sous benchmark_id. Reportez-vous à la section Dossiers et fichiers.

Le fichier méta est écrit en YAML et inclut les options suivantes que vous pouvez personnaliser pour votre contenu :

name

Nom de l'évaluation

display_name

Nom de l'évaluation tel qu'il figurera dans la liste des évaluations dans SaltStack SecOps Compliance

desc

Description de l'évaluation

Note :

Outre les options ci-dessus, le fichier méta inclut également divers éléments réservés, tels que version, authority et ids. Ne modifiez pas ces éléments réservés, sauf si votre administrateur vous le demande.

Fichiers de contrôles personnalisés

Un contrôle est une norme de sécurité dont SaltStack SecOps Compliance évalue la conformité. Il s’agit d’une recommandation associée à une évaluation. La recommandation fournit des informations sur la description, l’explication, l’audit et la correction. Chaque contrôle est défini par au moins deux fichiers : un fichier d'état (.sls) et un fichier méta (.meta) correspondant.

Note :

Les deux fichiers associés à un contrôle doivent se trouver dans le même répertoire et commencer par le même nom, par exemple :

  • my_first_check.meta
  • my_first_check.sls

Vous pouvez enregistrer ces deux fichiers ensemble dans n'importe quel sous-répertoire de salt/locke/custom.

Chaque type de fichier est décrit plus en détail ci-dessous.

Fichiers méta de contrôle

Les fichiers méta de contrôle incluent la description d'un contrôle, ainsi que des détails supplémentaires relatifs au contrôle, tels que sa version, les systèmes d'exploitation applicables, etc. Les fichiers méta sont écrits en YAML et utilisent l'extension de fichier .meta.

Les fichiers méta de contrôle personnalisés incluent les options suivantes :

version

Version du contenu du contrôle. Seule une valeur de 1 est prise en charge pour le moment.

display_name

Nom de ce contrôle tel qu'il figure dans la liste des contrôles dans l'interface utilisateur de SaltStack Config.

global_description

Description détaillée du contrôle. Il s'agit de la possibilité de fournir plus d'informations que celles fournies par les noms de contrôle et d'évaluation.

osfinger

Liste des systèmes d’exploitation autorisés à exécuter ce contrôle. Si l'hôte n'a pas de valeur osfinger correspondant à une valeur de cette liste, le résultat de l'évaluation du contrôle revient sous la forme notapplicable.

références

Informations de référence croisée sur d'autres contrôles ou dans d'autres normes d'évaluation ou de sécurité satisfaites avec ce contrôle.

benchmark_id

Liste de chaque évaluation à laquelle appartient le contrôle.

Chaque entrée d’évaluation crée une nouvelle section qui inclut les sous-options suivantes :

type

Type d'évaluation. Entrez custom lors de la définition d'un contrôle personnalisé non fourni par une autorité spécifique.

desc

Titre de la recommandation de sécurité telle qu'elle figurera dans la liste des contrôles dans l'interface utilisateur de SaltStack Config.

control_id

Numéro de recommandation, par exemple d'un document CIS correspondant.

noté

Ce champ est modélisé selon les recommandations CIS qui peut être Noté ou Non noté. Les recommandations CIS qui ne sont pas notées ne sont pas comptabilisées pour ou par rapport à une note de sécurité.La valeur true indique noté et false indique non noté. Vous pouvez choisir de noter ou non un contrôle, en fonction de vos besoins internes.

profil

CIS et les autres évaluations sont divisés en profils. Par exemple, l'évaluation CIS CentOS Linux 7 a quatre profils, représentés sous la forme :

profile:
  server:level1
  workstation:level1
  server:level2
  workstation:level3
information

Description du contrôle. Cela peut être semblable au champ global_description du contrôle.

logique

Description de la logique de mise en œuvre du contrôle.

correction

Instructions sur la correction d’un système dans un état non conforme.

Fichiers d'état du contrôle

Vérifiez que les fichiers d’état appliquent des états Salt pour effectuer des évaluations et des corrections. Une fonction d’état est une fonction contenue dans un module d’état qui peut gérer l’application d’un état particulier à un système . Les fonctions d’état appellent fréquemment un ou plusieurs modules d’exécution pour effectuer une tâche donnée. Les fichiers d'état sont écrits en YAML et Jinja, et utilisent l'extension de fichier .sls.

Le résultat d'une évaluation est le résultat de l'exécution du fichier d'état en mode test=True. Si le résultat indique que l’application de l’état aurait entraîné une modification, l’hôte est considéré comme non conforme. Si l’application de l’état n’entraîne pas de modification, l’hôte est considéré comme conforme.

Pour plus d'informations sur les états Salt, consultez la documentation de Salt : comment utiliser les états Salt ?.

Fichiers de bibliothèque de contenu personnalisés

Après la création de la bibliothèque de contenu personnalisé, votre répertoire inclut le répertoire _dist qui contient les fichiers supplémentaires suivants :

  • digest.json : contient des hachages et d'autres informations sur le contenu
  • secops_custom.tar.gz : fichier .tar .gzip prêt pour ingestion. Cela convient au téléchargement via l'interface utilisateur de SaltStack Config. Pour plus d'informations sur l'ingestion de contenu, consultez le Guide d'installation en entreprise.
  • secops_custom.txt : version codée en base64 de secops_custom.tar.gz. Cela est utile lors d'appels d'API
  • secops_custom_YYYY-MM-DDTHH:MM:SS.SSSSSS...tar.gz : copie identique de secops_custom.tar.gz, préférée pour le téléchargement via l'interface utilisateur de SaltStack Config en raison de son nom de fichier descriptif, qui inclut la date de création et l'UUID tarball