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 :
Cet outil est OpenSource :
Aujourd’hui YATAS est disponible pour faire des rapports d’infrastructure AWS, mais demain :
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.
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.
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.
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.
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.
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.
Dans cette partie, nous allons voir comment produire votre premier rapport YATAS facilement.
⚠️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.
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éé.
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
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"
...
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.
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"
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
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
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 :
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.
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
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:
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 !