Publié le 16 février 2023, mis à jour le 12 mai 2023.
Dans cet article, nous allons présenter l’outil OpenSource de Padok YATAS, qui vous permet de visualiser l’utilisation des bonnes pratiques sur votre infrastructure cloud AWS. Pour remédier à vos manques, ou pour des analyses plus approfondis, Padok propose des audits d’infrastructures.
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 surmanage 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 !