
Scanner di risorse GCP che valuta i livelli di accesso delle credenziali compromesse enumerando servizi cloud, progetti e autorizzazioni IAM attraverso la piattaforma Google Cloud.
Questo progetto non è un progetto ufficiale di Google. Non è supportato da Google e Google declina specificamente ogni garanzia riguardo alla sua qualità, commerciabilità o idoneità a uno scopo particolare.

Questo è uno scanner di risorse GCP che può aiutare a determinare quale livello di accesso possiedono determinate credenziali su GCP. Lo scanner è progettato per aiutare gli ingegneri della sicurezza a valutare l'impatto di un determinato compromissione di VM/container, account di servizio GCP o perdita di un token OAuth2 o di una chiave.
Attualmente, lo scanner supporta le seguenti risorse GCP:
Lo scanner supporta l'estrazione e l'utilizzo dei seguenti tipi di credenziali:
Lo scanner non si basa su strumenti di terze parti (ad esempio gcloud). Può quindi essere compilato come strumento autonomo e utilizzato su una macchina senza GCP SDK installato (ad esempio un pod Kubernetes). Tuttavia, tieni presente che l'unico sistema operativo attualmente supportato è Linux.
Tieni presente che GCP offre Policy Analyzer per scoprire quali principal (utenti, account di servizio, gruppi e domini) hanno quale accesso a quali risorse Google Cloud. Tuttavia, richiede autorizzazioni specifiche sul progetto GCP e l'API Cloud Assets deve essere abilitata. Se hai solo una chiave SA GCP, l'accesso a una VM precedentemente compromessa o un token di aggiornamento OAuth2, gcp_scanner è l'opzione migliore da utilizzare.
Per installare il pacchetto, usa pip (devi anche avere git installato):
pip install gcp_scanner
python3 -m gcp_scanner --help
In alternativa:
git clone https://github.com/google/gcp_scanner
cd gcp_scanner
pip install .
gcp-scanner --help
È presente un file di build Docker se desideri eseguire lo scanner da un contenitore:
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'opzione -f richiede una spiegazione aggiuntiva. In alcuni casi, l'account di servizio non ha le autorizzazioni per elencare esplicitamente i nomi dei progetti. Tuttavia, potrebbe comunque avere accesso alle risorse sottostanti se forniamo il nome corretto del progetto. Questa opzione è progettata specificamente per gestire tali casi.
Sostituisci google-api-python-client==2.80.0 con google-api-python-client==1.8.0 in pyproject.toml. Successivamente, naviga nella directory del codice sorgente dello scanner e usa pyinstaller per compilare un binario autonomo:
pyinstaller -F --add-data 'roots.pem:grpc/_cython/_credentials/' scanner.py
GCP Scanner produce un file JSON standard che può essere gestito da qualsiasi visualizzatore o database JSON. Forniamo uno strumento basato sul web che può aiutarti a visualizzare i risultati. Per eseguire lo strumento, usa il seguente comando:
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
Per saperne di più su come utilizzare lo strumento, visita la pagina Guida all'uso di GCP Scanner Visualizer.
Se hai solo bisogno di un modo comodo per cercare nei risultati JSON, possiamo consigliare gron.
Vedi CONTRIBUTING.md per i dettagli.
Apache 2.0; vedi LICENSE per i dettagli.