
Service qui analyse votre Infrastructure en tant que Code pour les vulnérabilités courantes
Service qui scanne votre Infrastructure en tant que Code à la recherche de vulnérabilités courantes.
| Aspect | Information |
|---|---|
| Nom de l'outil | IaC Scan Runner |
| Image Docker | [xscanner/runner] |
| Paquet PyPI | [iac-scan-runner] |
| Documentation | [docs] |
| Nous contacter | [[email protected]] |
IaC Scan Runner est un service d'API REST utilisé pour scanner un paquet IaC (Infrastructure en tant que Code) et effectuer différentes vérifications de code afin de trouver d'éventuelles vulnérabilités et améliorations. Consultez la [documentation] pour plus d'informations.
Cette section explique comment exécuter l'API REST.
Vous pouvez exécuter l'API REST en utilisant l'image Docker publique [xscanner/runner] comme suit :
# Exécuter l'API REST IaC Scan Runner dans un conteneur Docker et
# naviguer vers localhost:8080/swagger ou localhost:8080/redoc
$ docker run --name iac-scan-runner -p 8080:80 xscanner/runner
Ou vous pouvez construire l'image localement et l'exécuter ainsi :
# Construire le conteneur Docker (cela prendra du temps)
$ docker build -t iac-scan-runner .
# Exécuter l'API REST IaC Scan Runner dans un conteneur Docker et
# naviguer vers localhost:8080/swagger ou localhost:8080/redoc
$ docker run --name iac-scan-runner -p 8080:80 iac-scan-runner
Pour exécuter en utilisant la CLI IaC Scan Runner :
# Installer la CLI
$ python3 -m venv .venv && . .venv/bin/activate
(.venv) $ pip install iac-scan-runner
# Afficher la spécification OpenAPI
(.venv) $ iac-scan-runner openapi
# Installer les prérequis
(.venv) $ iac-scan-runner install
# Exécuter l'API REST IaC Scan Runner
(.venv) $ iac-scan-runner run
Pour exécuter localement depuis les sources :
# Exporter les variables d'environnement
export MONGODB_CONNECTION_STRING=mongodb://localhost:27017
export SCAN_PERSISTENCE=enabled
export USER_MANAGEMENT=enabled
# Configurer MongoDB
$ docker run --name mongodb -p 27017:27017 mongo
# Installer les prérequis
$ python3 -m venv .venv && . .venv/bin/activate
(.venv) $ pip install -r requirements.txt
(.venv) $ ./install-checks.sh
# Exécuter l'API REST IaC Scan Runner (ajouter le flag --reload pour appliquer les modifications de code à la volée)
(.venv) $ uvicorn src.iac_scan_runner.api:app
Cette partie montrera l'un des déploiements possibles et de courts exemples d'utilisation des appels API.
Nous allons d'abord cloner le dépôt [iac scan runner] et exécuter l'API.
$ git clone https://github.com/xlab-si/iac-scan-runner.git
$ docker compose up
Après cela, vous pouvez utiliser différents points de terminaison API en appelant localhost:8000. Vous pouvez également naviguer vers localhost:8000/swagger ou localhost:8000/redoc et tester tous les points de terminaison API là-bas. Dans cet exemple, nous utiliserons curl pour appeler les points de terminaison API.
curl -X 'POST' \
'http://0.0.0.0/project?creator_id=test' \
-H 'accept: application/json' \
-d ''
L'identifiant du projet nous sera retourné. Pour cet exemple, l'identifiant est 1e7b2a91-2896-40fd-8d53-83db56088026.
curl -X 'PUT' \
'http://0.0.0.0:8000/projects/1e7b2a91-2896-40fd-8d53-83db56088026/checks/ansible-lint/disable' \
-H 'accept: application/json'
curl -X 'POST' \
'http://0.0.0.0:8000/projects/1e7b2a91-2896-40fd-8d53-83db56088026/scan?scan_response_type=json' \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-F '[email protected];type=application/zip'
C'est tout.
À un certain moment, il peut être nécessaire d'inclure de nouveaux outils de vérification dans le workflow de scan, afin de fournir une couverture plus large des normes IaC et des types de projets. Par conséquent, dans cette sous-section, une séquence d'étapes nécessaires à cette fin est identifiée et décrite. Cependant, les étapes doivent être effectuées manuellement comme décrit, mais il est prévu d'automatiser cette procédure à l'avenir via l'API et de fournir une interface conviviale qui aidera l'utilisateur lors de l'importation de nouveaux outils qui deviendront partie du catalogue disponible constituant le workflow de scan. La figure 16 illustre les étapes nécessaires pour étendre le workflow de scan avec un nouvel outil.
Étape 1 – Ajout d'une classe spécifique à l'outil dans le répertoire checks Tout d'abord, il est nécessaire d'ajouter une nouvelle classe Python spécifique à l'outil dans le répertoire checks du code source d'IaC Scan Runner : iac-scan-runner/src/iac_scan_runner/checks/new_tool.py La classe d'un nouvel outil hérite de la classe Check existante, qui fournit une généralisation des outils du workflow de scan. De plus, il est nécessaire de fournir une implémentation des méthodes suivantes :