Oxydian Workspace Audit

Projet tutoré pour Oxydian

Audit Google
Workspace

Adam Zouaoui et Soufiane Filali Holberton School

Un audit de sécurité qui lit la configuration d'un Workspace sans pouvoir la modifier, rend un verdict prouvé pour chacun des 70 contrôles, puis efface tout à la déconnexion.

70contrôles évalués à chaque audit
6autorisations Google, toutes en lecture seule
2vrais tenants audités, un conforme et un saboté
0donnée conservée après la déconnexion

Le cycle d'un audit

Connecter, vérifier, expliquer, effacer

une session d'audit dure 8 h au plus

1 sur 4

Connecter

L'administrateur se connecte avec son compte Google et accorde six autorisations, toutes en lecture seule. L'outil n'a donc aucun moyen de modifier l'environnement audité.

Autorisations demandées à Google

Lecture seule
  • Organisationadmin.directory.customer.readonlyAccordée
  • Comptes utilisateursadmin.directory.user.readonlyAccordée
  • Unités organisationnellesadmin.directory.orgunit.readonlyAccordée
  • Profils de connexion uniquecloud-identity.inboundsso.readonlyAccordée
  • Règles de sécuritécloud-identity.policies.readonlyAccordée
  • Rôles d'administrationadmin.directory.rolemanagement.readonlyAccordée
  • Journal d'administrationadmin.reports.audit.readonlySur option
2 sur 4

Vérifier

La configuration est collectée en arrière-plan, puis évaluée contrôle par contrôle : 51 contrôles automatiques, 3 lectures DNS et 16 revues humaines guidées par un questionnaire.

Évaluation des contrôles

70 sur 70

Audit réel du tenant conforme, 29 octobre 2026.

3 sur 4

Expliquer

Chaque verdict arrive avec sa preuve : ce qui a été lu, quand, pour quels comptes, et où corriger. Une donnée illisible donne un verdict indéterminé, jamais conforme.

Non conformeComptes
Validation en deux étapes pour tous les comptes
Constat
3 comptes actifs sur 9 n'ont pas activé la validation en deux étapes.
Preuve
Lu chez Google, dans l'annuaire des comptes, pendant l'audit de 14 h 02.
Que faire
Console d'administration Google, Sécurité, Authentification, Validation en deux étapes : imposer l'activation.
Données techniques
compte-3   isEnrolledIn2Sv: falsecompte-7   isEnrolledIn2Sv: falsecompte-8   isEnrolledIn2Sv: false

Exemple fictif. Les comptes sont pseudonymisés partout sauf dans le détail d'un écart.

4 sur 4

Effacer

À la déconnexion, les données de l'audit sont supprimées du serveur et l'accès est révoqué chez Google. Les deux résultats s'affichent séparément, pour qu'un échec ne passe jamais inaperçu.

Déconnexion

Terminée
  • Session d'auditvalable 8 h au plusSupprimée
  • Preuves collectées70 contrôles, 164 constatsSupprimée
  • Jeton d'accès Googlestocké chiffréSupprimée
Suppression sur le serveurTerminée
Révocation chez GoogleConfirmée

Si Google ne confirme pas la révocation, l'écran l'indique à part, avec la marche à suivre.

Recette réelle, 29 octobre 2026

Un tenant conforme, un tenant saboté

deux environnements Google Workspace Business Standard

Pour prouver qu'un verdict conforme est mérité, nous avons monté deux vrais environnements : l'un réglé proprement, l'autre volontairement saboté. Si l'outil voit juste, casser un réglage doit faire basculer le contrôle correspondant.

Tenant conforme

69 contrôles tranchés sur 70

Tenant saboté

66 tranchés par l'outil seul

64

contrôles changent de verdict entre les deux tenants.

61 sur 62

conformes confirmés par la contre-épreuve ou par une revue datée. Un seul ne se distingue pas d'un tenant à l'autre.

70 sur 70

mêmes verdicts et mêmes raisons quand on audite à nouveau le tenant saboté après reconnexion.

Les comptes de verdicts sont ceux des audits réels. La position de chaque case dans la grille est illustrative.

L'interface

Lisible par un administrateur débutant

style repris de l'interface Oxyscan d'Oxydian

Par où commencer

La synthèse classe les écarts et dit quoi corriger en premier, sans note globale qui masquerait le détail.

Une fiche par contrôle

En bref, pourquoi c'est important, où aller dans la console, les étapes, et la source Google vérifiée.

Quatre verdicts nets

Conforme, non conforme, indéterminé, non applicable. Un indéterminé n'est jamais compté comme conforme.

workspace-audit / synthèseDonnées fictives

Synthèse 9 comptes, audit de 14 h 02

Contrôles automatiques conformes
71 %
41 sur 58 concluants. Non applicables et indéterminés exclus.
Verdicts des 70 contrôles
Conformes41 Non conformes17 Indéterminés7 Non applicables5
Par où commencer
  1. Imposer la validation en deux étapes
  2. Réduire le nombre de super administrateurs
  3. Publier une politique DMARC stricte
Contrôles à traiter
TousNon conformes 17Indéterminés 7
ContrôleDomaineConstatsVerdict
Validation en deux étapes pour tous les comptesComptes3 comptesNon conforme
compte-3Super administrateurÉcart
compte-7UtilisateurÉcart
compte-8UtilisateurÉcart
Nombre de super administrateursAdministration5 comptesNon conforme
Politique DMARC du domaineDNS1 domaineNon conforme
Partage externe des fichiers DriveDriveOrganisationIndéterminé
Accès des applications tiercesApplicationsOrganisationConforme

Sécurité par construction

Les règles qui ne se négocient pas

appliquées dans le code et vérifiées par les tests

Lecture seule

Les six autorisations demandées à Google sont toutes en lecture. Même en cas de faille, l'outil ne peut rien écrire dans l'environnement audité.

6 autorisations, toutes en .readonly

Moindre privilège

Chaque autorisation sert des contrôles précis. Le journal d'administration est une septième autorisation, demandée seulement si l'opérateur l'active.

admin.reports.audit.readonly : sur option

Rien n'est gardé

Une session d'audit dure 8 heures au plus. À la déconnexion, les preuves et le jeton sont supprimés et l'accès est révoqué chez Google.

suppression et révocation, deux résultats distincts

Indéterminé reste indéterminé

Une configuration inconnue n'est jamais présumée conforme, et une donnée inaccessible ne prouve jamais qu'une fonction est désactivée.

verdict par défaut : indéterminé

Architecture

Trois conteneurs, une seule porte

imposée par le cahier des charges d'Oxydian

Docker Compose, trois services 127.0.0.1 Navigateuradministrateur FrontNginx, HTML, CSS, JS APIPython, FastAPI BasePostgreSQL API Googlelecture seule Docker Compose, trois services 127.0.0.1 Navigateuradministrateur FrontNginx, HTML, CSS, JS APIPython, FastAPI BasePostgreSQL API Googlelecture seule
front
HTML, CSS et JavaScript, servis par Nginx
api
Python et FastAPI, audits lancés en arrière-plan
base
PostgreSQL, isolée dans son conteneur
exposition
seul le front, et seulement sur la boucle locale
qualité
pipeline GitLab de 24 jobs, plus de 5 000 tests

À propos

L'histoire du projet

Portfolio Project, Holberton School

Oxydian est une société de cybersécurité qui accompagne les PME, les ETI et les collectivités : audits, tests d'intrusion, conseil, et surveillance continue avec ses solutions BOX et Valise Oxyscan. Le sujet de notre projet tutoré : un prototype web qui se connecte en lecture seule à un environnement Google Workspace, collecte sa configuration et présente des constats prouvés, sur la base du référentiel de contrôles d'Oxydian.

Le projet s'inscrit dans le Portfolio Project du programme Développement Web et Web Mobile de Holberton School. Il a été mené en conditions réelles, avec un référent chez Oxydian, un cahier des charges, des jalons et une recette.

Le risque principal annoncé dès le départ était le parcours OAuth. Nous l'avons construit en premier, puis nous avons ajouté les contrôles un par un, chacun avec sa source, ses limites et ses tests. La dernière étape a été la plus parlante : auditer deux vrais environnements, l'un propre et l'autre saboté, pour vérifier que l'outil voit juste.

Le code, le référentiel de contrôles et la méthode de cotation appartiennent à Oxydian. Le dépôt est privé, sur le GitLab fourni par Oxydian.

  1. Stage 1Équipe et MVP

    Choix du sujet Oxydian et définition du produit minimum.

  2. Stage 2Planification

    Calendrier, risques et découpage en jalons.

  3. Stage 3Documentation technique

    Architecture, modèle de données, séquences critiques et maquettes.

  4. Stage 4Développement

    OAuth en lecture seule, collecte, 70 contrôles, questionnaire, puis recette sur deux vrais tenants.

  5. Stage 5Soutenance

    Rapport final et présentation, en novembre 2026.

L'équipe

Adam et Soufiane

avec des agents de code IA, Claude et Codex

Les agents IA produisent du code par lots. Aucun lot n'est intégré sans avoir été vérifié, et la relecture repose sur trois garde-fous.

  • CIUne révision n'est livrée qu'une fois sa pipeline GitLab entièrement verte.
  • RevueDes revues IA indépendantes, dont une revue de sécurité le 23 octobre.
  • RecetteDes audits réels sur des environnements de test, comparés à ce qui était attendu.