Skip to content

incubateur-ademe/dashlord

Repository files navigation

DashLord

Tableau de bord des bonnes pratiques techniques

L'acquisition des données ainsi que la génération du rapport sont automatisés par des GitHub actions

Exemples :

Usage

Pour déployer votre version de DashLord :

  • Créer un nouveau repository à partir du template dashlord
  • Éditer le fichier dashlord.yml
  • Éditer le fichier .github/workflows/scans.yml si nécessaire
  • Éditer le fichier .github/workflows/report.yml si nécessaire (vérifier le base-path où sera publié le site web, il s'agira du nom du repository)
  • Dans les settings du repository, dans "Actions", positionner "Workflows permissions" sur "Read and write" (si l'option n'est pas disponible pour le dépôt, activez la d'abord au niveau de l'organisation)
  • Dans les settings du repository, dans "Pages", selectionner gh-pages comme branche source (vous pouvez soit la créer en amont soit la selectionner après le premier scan qui la créera)
  • Lancer DashLord scans dans l'onglet Actions de votre projet GitHub

Une fois les scans terminés, un rapport sera généré dans la branche gh-pages du repository, il sera disponible sur https://[organisation].github.io/[repository] (publiquement).

GitHub actions

  • Le workflow DashLord scans permet de lancer un scan sur les URLs, il est executé lors d'un changement dans le fichier dashlord.yml
  • Le workflow DashLord report est lancé à la fin de chaque DashLord scans et produit le rapport sous forme de site web.

Ces workflows sont également déclenchables manuellement dans l'onglet "Actions"

Customisation

dashlord.yml

💡 Bonne pratique : enlever les slashs à la fin des urls

title: My websites
description: Best practices monitoring
entity: My team name
footer: Powered by SocialGouv
# enable this only if you're an official gouv.fr organisation
marianne: false
# `tools` allows to activate only some of the tools in the report
tools:
  404: true
  screenshot: true
  nmap: true
  zap: true
  wappalyzer: true
  http: true
  testssl: true
  lighthouse: true
  thirdparties: true
  nuclei: false
  updownio: true
  dependabot: true
  codescan: true
  stats: true
  declaration-a11y: true
  trivy: true
  ecoindex: true
  sonarcloud: true
urls:
  - url: https://www.free.fr
    title: Homepage free.fr
    tags:
      - telecom
      - provider
    repositories: # pour récupérer les alertes de sécu de ces repos
      - free/free-ui
      - free/free-css
    docker: # pour scanner les images avec trivy
      - ghcr.io/socialgouv/fabrique/frontend
      - ghcr.io/socialgouv/fabrique/backend
    tools: # pour desactiver certains outils
      nmap: false
    pages: # pour lancer lighthouse sur des pages supplémentaires
      - /profil
      - /mentions
  - url: https://www.lemonde.fr
    title: Homepage lemonde.fr
    tags:
      - presse

Outils

Chaque outil peut être activé/désactivé dans le rapport avec la clé tools de dashlord.yml.

Repo desc
SocialGouv/dashlord-actions Dashlord specific actions
SocialGouv/dashlord-nuclei-action Dump nuclei result
SocialGouv/httpobs-action Dump Mozilla HTTP Observatory result
SocialGouv/thirdparties-action Dump third party scripts scan result
SocialGouv/wappalyzer-action Dump Wappalyzer scan result
MTES-MCT/dependabotalerts-action Dump Github dependabot security alerts
MTES-MCT/codescanalerts-action Dump Github CodeQL security alerts
MTES-MCT/updownio-action Dump updown.io stats
MTES-MCT/nmap-action Dump nmap port scan stats
MTES-MCT/stats-action Detect /stats page.
SocialGouv/thirdparties thirdparty scripts database
swinton/screenshot-website grab website screenshot
SocialGouv/detect-404-action detect 404 errors
aquasecurity/trivy-action Scan docker images vulnerabilities

Configuration

Certains outils nécessitent une configuration supplémentaire :

dependabot (détection de vulnérabilités issues des dépendances du projet)

ajouter un secret GitHub DEPENDABOTALERTS_TOKEN et lui donner pour valeur un token d'accès personnel ayant droit de lecture sur "Dependabot alerts" en sélectionnant les dépôts à scanner

codescan (analyse statique de la qualité de code)

ajouter un secret GitHub CODESCANALERTS_TOKEN et lui donner pour valeur un token d'accès personnel ayant droit de lecture sur "Code scanning alerts" en sélectionnant les dépôts à scanner

updown.io (Mesures de disponibilité)

DashLord peut monitorer le niveau de performance et de disponibilité de vos applications. (mise en place = 10mins)

  • Créez un compte sur updown.io
  • Ajoutez-y les urls à monitorer (telles que définies dans dashlord.yml)
  • Activez l'outil avec updownio: true dans le fichier dashlord.yml
  • Ajouter votre clé d'API updown.io "readonly" dans un secret GitHub nommé UPDOWNIO_API_KEY (onglet settings/secrets)

▶ Au prochain scan, les informations updown.io seront remontées dans DashLord

customCss :

You can host the css file in your Dashlord repo but the link needs to point to a file with the correct Content-Type Header. See here for details

Contribute

Vous pouvez contribuer en remontant des issues de qualité, en améliorant la documentation, ou en ajoutant du code.

🤗 Toutes les suggestions sont bienvenues.

cf CONTRIBUTING.md

Dev

DashLord fonctionne en deux étapes :

  1. Acquisition des données : Pour chaque URL, chaque outil est executé et génère un fichier JSON qui sera versionné dans le repository
  2. Génération du rapport : À partir des données existantes, l'action report aggrège, compresse les résultats et produit un rapport web statique.

Voir aussi : SocialGouv/dashlord-actions