
Scanner de ressources GCP qui évalue les niveaux d'accès d'identifiants compromis en énumérant les services cloud, les projets et les permissions IAM sur Google Cloud Platform.
Ce projet n'est pas un projet officiel de Google. Il n'est pas soutenu par Google et Google décline expressément toute garantie quant à sa qualité, sa commercialisation ou son adéquation à un usage particulier.

Il s'agit d'un scanneur de ressources GCP qui peut aider à déterminer le niveau d'accès que certaines identifiants possèdent sur GCP. Le scanneur est conçu pour aider les ingénieurs en sécurité à évaluer l'impact d'une compromission de VM/contener, d'un compte de service GCP ou d'une fuite de jeton OAuth2.
Actuellement, le scanneur prend en charge les ressources GCP suivantes :
Le scanneur prend en charge l'extraction et l'utilisation des types d'identifiants suivants :
Le scanneur ne dépend d'aucun outil tiers (par exemple, gcloud). Ainsi, il peut être compilé en tant qu'outil autonome et utilisé sur une machine sans SDK GCP installé (par exemple, un pod Kubernetes). Cependant, veuillez noter que le seul système d'exploitation actuellement pris en charge est Linux.
Veuillez noter que GCP propose Policy Analyzer pour déterminer quels principaux (utilisateurs, comptes de service, groupes et domaines) ont quel accès à quelles ressources Google Cloud. Cependant, cela nécessite des autorisations spécifiques sur le projet GCP et l'API Cloud Assets doit être activée. Si vous avez simplement une clé SA GCP, un accès à une VM précédemment compromise ou un jeton d'actualisation OAuth2, gcp_scanner est la meilleure option à utiliser.
Pour installer le paquet, utilisez pip (vous devez également avoir git installé) :
pip install gcp_scanner
python3 -m gcp_scanner --help
Sinon :
git clone https://github.com/google/gcp_scanner
cd gcp_scanner
pip install .
gcp-scanner --help
Il existe un fichier de construction Docker si vous souhaitez exécuter le scanneur depuis un conteneur :
docker build -f Dockerfile -t sa_scanner .
usage: python3 scanner.py -o folder_to_save_results -g -
GCP Scanner
options:
-h, --help show this help message and exit
-ls, --light-scan Return only the most important GCP resource fields in the output.
-k KEY_PATH, --sa-key-path KEY_PATH
Path to directory with SA keys in json format
-g GCLOUD_PROFILE_PATH, --gcloud-profile-path GCLOUD_PROFILE_PATH
Path to directory with gcloud profile. Specify - to search for credentials in default gcloud config path
-m, --use-metadata Extract credentials from GCE instance metadata
-at ACCESS_TOKEN_FILES, --access-token-files ACCESS_TOKEN_FILES
A list of comma separated files with access token and OAuth scopes.TTL limited. A token and scopes should be stored in JSON format.
-rt REFRESH_TOKEN_FILES, --refresh-token-files REFRESH_TOKEN_FILES
A list of comma separated files with refresh_token, client_id,token_uri and client_secret stored in JSON format.
-s KEY_NAME, --service-account KEY_NAME
Name of individual SA to scan
-p TARGET_PROJECT, --project TARGET_PROJECT
Name of individual project to scan
-f FORCE_PROJECTS, --force-projects FORCE_PROJECTS
Comma separated list of project names to include in the scan
-c CONFIG_PATH, --config CONFIG_PATH
A path to config file with a set of specific resources to scan.
-l {DEBUG,INFO,WARNING,ERROR,CRITICAL}, --logging {DEBUG,INFO,WARNING,ERROR,CRITICAL}
Set logging level (INFO, WARNING, ERROR)
-lf LOG_FILE, --log-file LOG_FILE
Save logs to the path specified rather than displaying in console
-pwc PROJECT_WORKER_COUNT, --project-worker-count PROJECT_WORKER_COUNT
Set limit for project crawlers run in parallel.
-rwc RESOURCE_WORKER_COUNT, --resource-worker-count RESOURCE_WORKER_COUNT
Set limit for resource crawlers run in parallel.
Required parameters:
-o OUTPUT, --output-dir OUTPUT
Path to output directory
L'option -f nécessite une explication supplémentaire. Dans certains cas, le compte de service ne dispose pas des autorisations nécessaires pour lister explicitement les noms de projet. Cependant, il peut toujours avoir accès aux ressources sous-jacentes si nous fournissons le nom de projet correct. Cette option est spécialement conçue pour gérer ces cas.
Veuillez remplacer google-api-python-client==2.80.0 par google-api-python-client==1.8.0 dans pyproject.toml. Ensuite, accédez au répertoire du code source du scanneur et utilisez pyinstaller pour compiler un binaire autonome :
pyinstaller -F --add-data 'roots.pem:grpc/_cython/_credentials/' scanner.py
Le GCP Scanner produit un fichier JSON standard qui peut être traité par n'importe quel visualiseur JSON ou base de données. Nous fournissons un outil web qui peut vous aider à visualiser les résultats. Pour exécuter l'outil, veuillez utiliser la commande suivante :
usage: gcp-scanner-visualizer -p 8080
GCP Scanner Visualizer
options:
-h, --help show this help message and exit
-p PORT, --port PORT Port to listen on default 8080
Pour en savoir plus sur l'utilisation de l'outil, veuillez consulter la page Guide d'utilisation du visualiseur GCP Scanner.
Si vous avez simplement besoin d'un moyen pratique de grep les résultats JSON, nous pouvons recommander gron.
Consultez CONTRIBUTING.md pour plus de détails.
Apache 2.0 ; voir LICENSE pour plus de détails.