Aller au contenu
Documentation

Concepts

Projets et dossiers

Le projet comme unité de périmètre, le dossier comme regroupement de comptes cloud et de dépôts Git, et la synchronisation avec le fichier .ctadel.yaml.

Ctadel range ce qu'il lit par projet, et vous rangez vos comptes et vos dépôts dans des dossiers. Le projet est l'unité technique : chaque constat en porte un. Le dossier est votre découpage : il regroupe des comptes cloud et des dépôts Git dans une arborescence, et sert à filtrer l'écran et à limiter des rôles.

Le projet

Un projet est un périmètre natif du cloud : l'identifiant du compte connecté et, quand le cloud en expose, les projets découverts à l'intérieur de ce compte. Chaque constat de configuration, de secret, de donnée, de Kubernetes, d'hôte ou de chemin d'attaque porte l'identifiant du projet où se trouve la ressource. C'est sur cet identifiant que reposent les filtres et les droits.

Le sélecteur en haut de l'écran liste « Tous les projets », puis « Dossiers (N) » et « Projets (N) ». Choisir un projet restreint toutes les pages à ses ressources ; choisir « Tous les projets » lève le filtre. Le choix suit la session et s'applique au tableau de bord, aux listes de constats, à l'inventaire et au graphe.

Le dossier

Un dossier est un nœud d'une arborescence libre, jusqu'à 10 niveaux. Il contient des comptes cloud (un compte entier par feuille) et des dépôts Git. Deux dossiers du même parent ne peuvent pas porter le même nom.

La gestion se fait dans « Paramètres », onglet « Intégrations », sous-onglet « Dossiers ». Lire demande la permission « Lire » du domaine « Paramètres », modifier demande « Modifier ». Vous pouvez créer un dossier racine ou un sous-dossier, le renommer, le déplacer, le supprimer, et y déposer un compte ou un dépôt. Une carte à part liste les comptes cloud et dépôts non rattachés à un dossier. Un dossier ne se supprime que vide : sans sous-dossier, sans compte et sans dépôt.

Un dossier système nommé « Unscoped » existe dès l'installation. Il ne peut être ni renommé, ni déplacé, ni supprimé. Tout dépôt découvert par une analyse Git y est rangé par défaut, et un dépôt que vous retirez d'un dossier y retourne. Comme c'est un dossier réel, un rôle peut y être limité : il donne alors accès à tous les dépôts pas encore classés.

Choisir un dossier dans le sélecteur d'en-tête revient à sélectionner tous les projets des comptes qu'il contient, ainsi que les dépôts de son sous-arbre ; les sous-dossiers sont compris. Un dossier qui ne contient aucun compte cloud est grisé dans le sélecteur.

Le fichier .ctadel.yaml

Un dépôt Git peut déclarer lui-même son dossier. Le fichier .ctadel.yaml à la racine du dépôt, déjà utilisé pour les exclusions de règles, accepte un champ folder :

version: 1
folder: "Production/Europe/France"

Le chemin est séparé par des barres obliques. À chaque analyse de la branche par défaut, le dépôt est rangé dans ce dossier ; les dossiers manquants du chemin sont créés. Cette déclaration fait foi : elle l'emporte sur un déplacement fait dans l'interface.

Dans l'autre sens, déplacer un dépôt GitHub dans l'interface ouvre une pull request dans le dépôt, sur une branche ctadel/set-folder-<horodatage>, qui ajoute ou remplace la ligne folder: du fichier en conservant le reste de son contenu. Le dépôt affiche « PR en attente » jusqu'à ce que la pull request soit fusionnée et que l'analyse suivante confirme le dossier ; il affiche ensuite « .ctadel ». Un dépôt rangé à la main sans fichier affiche « manuel ».

Effets sur les utilisateurs restreints

Un rôle peut être limité à des projets (« Périmètre projet ») ou à des dossiers (« Dossiers ») lors de sa création ou de sa modification dans l'onglet « Rôles ». L'aide de l'interface le résume : « Un rôle limité à un dossier donne accès à tous les comptes de son sous-arbre. Laisser vide = utiliser uniquement le périmètre projet ci-dessus. »

À l'ouverture de session, chaque dossier d'un rôle est développé en la liste des projets des comptes de son sous-arbre, et chaque dépôt du sous-arbre est ajouté à la liste des dépôts autorisés. L'utilisateur ne voit que ces projets et ces dépôts dans les listes de constats, les rapports d'analyse Git, les secrets et les vulnérabilités. Un rôle sans projet ni dossier est global.

Un rôle limité à un dossier qui ne contient aucun compte cloud, par exemple « Unscoped », reste limité : il ne donne accès à aucun projet cloud, seulement aux dépôts du dossier. Le menu de l'utilisateur, sous « Changer de rôle », affiche une entrée par couple rôle et périmètre, avec « Tous les projets » pour un rôle global.

Un compte ajouté plus tard dans un dossier est visible des rôles limités à ce dossier dès leur prochaine session ; aucun réglage de rôle n'est à refaire.

Limites

  • La réécriture du fichier .ctadel.yaml depuis l'interface ne fonctionne que pour les dépôts GitHub connectés par l'application GitHub ; pour un dépôt GitLab, le déplacement dans l'interface est enregistré côté Ctadel sans pull request, et la prochaine analyse d'un fichier qui déclare un autre dossier le remplacera.
  • Un dossier est un ensemble de comptes entiers : un compte ne peut pas être réparti entre deux dossiers, et un projet découvert à l'intérieur d'un compte ne peut pas être rangé à part.
  • Le périmètre par dossier s'applique aux listes et aux pages de détail des constats ; l'agrégation de la page de conformité, en validation interne, compte par projet et ne connaît pas les dossiers.
  • Les dossiers ne portent ni droits propres ni réglages : ils n'ont pas de règles d'alerte, de fréquence ou de rétention propres. Les règles d'alerte filtrent par projet, pas par dossier.
  • Les dossiers créés depuis un fichier .ctadel.yaml ne sont jamais supprimés automatiquement, même si plus aucun dépôt ne les déclare.
  • La version 1 est la seule acceptée pour .ctadel.yaml ; un fichier invalide fait échouer la lecture de la déclaration de dossier et des exclusions.