Blog DevOps

YATAS : outil des bonnes pratiques sur les infras cloud | Padok

Rédigé par Thibaut Robinet | 16 févr. 2023 13:03:10

Qu’est-ce que YATAS ?

Description de YATAS


YATAS est l’acronyme anglais de Yet Another Testing & Auditing Solution qui signifie Encore une autre solution de test et d’audit.

L’objectif est de créer des infrastructures suivant un maximum de bonnes pratiques.

Pour ce faire, nous avons décidé de développer un outil qui :

  • Génère des rapports d’utilisation des bonnes pratiques de l’infrastructure
  • Liste les bonnes pratiques qui ne sont pas appliquées
  • Permet d’identifier quelles améliorations apporter pour les intégrer à votre roadmap

Cet outil est OpenSource :

  • Tout le monde peut contribuer en apportant de nouveaux tests de bonnes pratiques
  • Chacun est libre de créer ces propres plugins et de les rendre publics s’il le souhaite

Aujourd’hui YATAS est disponible pour faire des rapports d’infrastructure AWS, mais demain :

  • On pourra l’utiliser sur n’importe quel Cloud Provider
  • On pourra suivre l’évolution de bonnes pratiques dans un cluster Kubernetes

Le rôle de YATAS est bien de donner un aperçu général de la qualité globale, mais pour une évaluation complète de l’infrastructure, nous utilisons notre framework ROSE.

Présentation de YATAS

Qui est le fondateur de YATAS ?


Stan Girard est lead SRE chez Padok. Ancien développeur sur des projets de blockchain, il s’est reconverti comme Ops à son arrivée chez Padok. Il est passionné par le développement et la création d’outil OpenSource qui peuvent aider les gens.

Pourquoi avoir créé YATAS ?


Le but de YATAS est de garantir un standard de qualité sur les infrastructures de nos clients et de pouvoir prouver à n’importe quel moment que l’infrastructure est sécurisée. Mais il fallait absolument tester des règles simples pour que YATAS puisse être utilisable.

Pourquoi construire YATAS de manière modulaire ?


YATAS a été conçu en mode plugin pour favoriser la contribution, en se basant sur le package go plugin de Hashicorp. Pour que les gens utilisent YATAS même en dehors de Padok, il faut qu’ils puissent créer des plugins qui correspondent à leur besoin et qu’ils puissent garder leur modules privés s’ils le souhaitent.

Cela facilite également le développement de plugin interne à Padok. Et enfin c’est une mise en application de la stratégie “diviser pour mieux régner”. Notre but c’est qu’indépendamment les uns des autres, chaque plugin reste simple.

Quels sont les avantages de YATAS ?


YATAS est un super outil pour avoir un aperçu rapide de la qualité de l’infrastructure. L’objectif n’est pas d’avoir 300 tests, mais d’avoir uniquement les plus importants. Le fait que cet outil soit OpenSource est un atout essentiel pour tirer la force de la communauté. Et enfin YATAS n’introduit pas de risques de sécurité étant donné qu’il fonctionne uniquement avec des droits de lecture sur l’infrastructure. Il a une vocation d’audit en exécutant uniquement des requêtes get ou describe sans pouvoir faire de modifications.

Quels sont les inconvénients de YATAS ?


YATAS n’est pour l’instant disponible que pour AWS. La structure du reporting a été initialement pensée pour des tests sur AWS. Il y aura des changements à apporter sur le modèle de données pour qu’il ne soit pas limitant à l’avenir.

Démarrage - Comment utiliser YATAS ? (Pour AWS)

Dans cette partie, nous allons voir comment produire votre premier rapport YATAS facilement.

Prérequis

⚠️Ce guide a été réalisé sur un Mac.

  • Premièrement installer AWS cli

  • Se connecter à la souscription AWS :

    >aws configure

    Puis rentrer les informations nécessaires pour se connecter.

Démarrage rapide

  • Se créer un dossier de travail et s’y placer

  • Installer YATAS grâce à brew

    brew install padok-team/yatas
    yatas --init
  • Configurer YATAS

    • Mettre dans le fichier .yatas.yml:

      plugins:
        - name: "aws"
          enabled: true
          source: "github.com/padok-team/yatas-aws"
          version: "latest"
          description: "Check for AWS good practices"
      
      pluginsConfiguration:
        - pluginName: aws
          accounts:
            - profile: ""
              sso: true
              region: "eu-west-3"
              name: "Yatas-aws"
    • Télécharger les modules qui ont été ajoutés dans la configuration YATAS et lancer YATAS par la suite :

      yatas --install
  • Lancer YATAS quand les modules ont déjà été installés :

    yatas
  • Le résultat attendu doit apparaître dans votre terminal, comme sur l’exemple ci-dessous et un fichier results.yaml doit avoir été créé.


Sélectionner un test spécifique


Parfois vous n’aurez pas envie de tester toutes les bonnes pratiques, car un seul test d’un plugin vous intéresse. Dans ce cas vous pouvez en sélectionner un spécifiquement en modifiant le fichier de configuration YATAS.

Dans le fichier .yatas.yml configurer le plugin comme l’exemple :

plugins:
  - name: "aws"
    enabled: true
    source: "github.com/padok-team/yatas-aws"
    version: "latest"
    description: "Check for AWS good practices"
		
		include:
     - "AWS_VPC_001"
     - "AWS_VPC_002"

...

Vous pouvez désormais lancer un nouveau test en exécutant directement les plugins ayant déjà été installés une fois.

yatas

Exclure un test non désiré


D’autres fois, il s’agira du cas contraire. Vous désirez tester votre infrastructure, mais vous n’êtes pas d’accord avec un test, ou vous ne souhaitez pas l’appliquer. Mais vous voulez avoir un rapport cohérent avec ce choix.

Dans ce cas vous pouvez exclure certains tests, en modifiant de nouveau le fichier .yatas.yml comme il suit.

plugins:
  - name: "aws"
    enabled: true
    description: "Check for AWS good practices"
    
		exclude:
      - "AWS_S3_001"

...

Comment choisir le format d’export de mon rapport YATAS ? (markdown - html - notion)


Pourquoi voudrais-je changer le format d’export ?


Super, nous avons appris à lancer une analyse. Mais vous ne trouvez que ce rapport est un peu triste et difficile à lire ? On a pensé à tout, comme Yatas est conçu de manière modulaire, nous avons créé quelques plugins pour exporter vos rapports.

Nous avons déjà créé à formats différents pour exporter vos analyses :

💡 Les plugins se cumulent : on peut les exporter de plusieurs façons différentes en même temps.

 

Comment utiliser les plugins simples ? (markdown - html)

  • Les 2 premiers modules n’ont pas besoin de gérer de l’authentification et sont donc faciles à mettre en place. Ils vont se contenter de créer les fichiers avec l’extension attendue que vous pourrez ensuite utiliser comme bon vous le semble.

  • Pour l’exporter en Markdown ajouter ce plugin dans le fichier .yatas.yml

    plugins:
    	- ...
    	- name: "markdown"
    	  enabled: true
    	  type: "report"
    	  source: "github.com/padok-team/yatas-markdown"
    	  version: "latest"
    	  description: "Generates a markdown report"
  • Pour l’exporter en HTML ajouter ce plugin dans le fichier .yatas.yml

    plugins:
    	- ...
    	- name: "html"
    	  enabled: true
    	  type: "report"
    	  source: "github.com/Thibaut-Padok/yatas-html"
    	  version: "latest"
    	  description: "Generates a html report in report.html file"

Comment exporter ces rapports dans notion ?


Notion offre une interface parfaite pour y exporter ces rapports YATAS et les stocker. J’ai donc créé un plugin permettant de créer la structure de donnée permettant de stocker des rapports YATAS dans une page notion choisie. Le fonctionnement est un peu plus compliqué que pour les autres plugins vu qu’on a besoin de s’authentifier.

 ℹ️ Pour pouvoir créer une intégration et générer des rapports dans vos pages notions, vous avez besoin d’être administrateur de votre workspace.

  • Créer une intégration Notion et Obtenir un token d’authentification:

    • Pour obtenir un token, il va falloir créer une connexion :

    • Cliquer Settings & members, puis sur manage intergration

    • Cliquer sur New integration

      • Mettre yatas-notion comme nom

      • Ajouter le logo de YATAS que vous pouvez trouver ici 

      • Sélectionner le workspace que vous désirez

        • Read
        • Write
        • update

          S’assurer d’avoir toutes les content capabilities:

      • sur Submit

      • Vous aurez une nouvelle section Secret avec le secret de l’intégration ce secret correspond $NotionConnectionToken dans la config

    • Dans le menu de droite, ajouter une nouvelle connexion à la page :

      Autoriser la page :

      Même si vous avez créé une connexion et obtenu un Token, YATAS ne sera autorisé à modifier que les pages sur lesquels vous avez activé cette connexion.

      Pour ce faire, choisissez la page dans laquelle sera créée la base de données des rapports (inline database).

      • Récupérer l’id de la page :

  • Configurer YATAS

    Maintenant que l’on a un token, qu’on a autorisé la page et récupéré l’id de la page, on peut tout simplement configurer le plugin notion comme il suit :

    plugins:
    	- ...
      - name: "notion"
        enabled: true
        type: "report"
        source: "github.com/Thibaut-Padok/yatas-notion"
        version: "latest"
        description: "Add your yatas report in a notion database"
    pluginsConfiguration:
    	- ...
      - pluginName: notion
        pageID: $NotionPageID #The one you want the yatas database to be, it will create the database if not exist. This page must use a Notion connection YATAS-Notion
        token: $NotionConnectionToken # The secret to be able to use Notion Connection
  • Éxecuter yatas --install pour télécharger le nouveau plugin et voici le résultat attendu :

Comment rendre ces rapports plus jolie dans notion ?


Le plugin yatas-notion peut utiliser l’API web de notion pour vérouiller les rapports yatas et rendre plus esthétiques la base de données en mode liste au lieu de table. Pour bénéficier de ces fonctionnalités vous avez besoin d’ajouter votre token utilisateur.

Ce token est optionnel, et il est peu recommandé de laisser ce token dans le fichier de configuration .yatas.yaml, car il permet d’effectuer des actions à votre place sur toutes vos pages notion.

Trouver le token web
  • Se connecter à notion dans un navigateur

  • Clique droit et sélectionne Inspect

  • Application > Storage > Cookies > https://www.notion.so > token_v2

  • Copier la valeur du token_v2

Configuration du token optionnel
  • Rajouter le token optionnel dans la configuration du plugin

    plugins:
    	- ...
      - name: "notion"
        enabled: true
        type: "report"
        source: "github.com/Thibaut-Padok/yatas-notion"
        version: "latest"
        description: "Add your yatas report in a notion database"
    pluginsConfiguration:
    	- ...
      - pluginName: notion
        pageID: $NotionPageID #The one you want the yatas database to be, it will create the database if not exist. This page must use a Notion connection YATAS-Notion
        token: $NotionConnectionToken # The secret to be able to use Notion Connection
  • Supprimer la database afin de bénéficier de la création de base de données avancée.

  • Executer yatas

    ℹ️ Tous les rapports générés seront désormais verrouillés ainsi, il n’est pas possible de cocher une check box par mégarde. Le résultat attendu est le suivant:

Conclusion

On vous a présenté l’outil YATAS, maintenant à vous de jouer ! N’hésitez pas à créer votre propre module, à nous partager vos bonnes pratiques et nous faire des retours sur son fonctionnement. Et surtout faites-nous savoir quel est le prochain CloudProvider que vous souhaitez que YATAS prenne en charge !