
Escáner de recursos de GCP que evalúa los niveles de acceso de credenciales comprometidas enumerando servicios en la nube, proyectos y permisos de IAM en toda la plataforma Google Cloud.
Este proyecto no es un proyecto oficial de Google. No cuenta con el respaldo de Google y Google específicamente renuncia a todas las garantías sobre su calidad, comerciabilidad o idoneidad para un propósito particular.

Este es un escáner de recursos de GCP que puede ayudar a determinar el nivel de acceso que ciertas credenciales poseen en GCP. El escáner está diseñado para ayudar a los ingenieros de seguridad a evaluar el impacto de un compromiso de VM/contenedor, una cuenta de servicio de GCP o una fuga de token OAuth2.
Actualmente, el escáner es compatible con los siguientes recursos de GCP:
El escáner admite la extracción y el uso de los siguientes tipos de credenciales:
El escáner no depende de ninguna herramienta de terceros (por ejemplo, gcloud). Por lo tanto, se puede compilar como una herramienta independiente y usarse en una máquina sin GCP SDK instalado (por ejemplo, un pod de Kubernetes). Sin embargo, tenga en cuenta que el único sistema operativo compatible actualmente es Linux.
Tenga en cuenta que GCP ofrece Policy Analyzer para descubrir qué principales (usuarios, cuentas de servicio, grupos y dominios) tienen qué acceso a qué recursos de Google Cloud. Sin embargo, requiere permisos específicos en el proyecto de GCP y la API de Cloud Assets debe estar habilitada. Si solo tiene una clave de SA de GCP, acceso a una VM previamente comprometida o un token de actualización OAuth2, gcp_scanner es la mejor opción.
Para instalar el paquete, use pip (también debe tener git instalado):
pip install gcp_scanner
python3 -m gcp_scanner --help
Alternativamente:
git clone https://github.com/google/gcp_scanner
cd gcp_scanner
pip install .
gcp-scanner --help
Hay un archivo de compilación de Docker si desea ejecutar el escáner desde un contenedor:
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
La opción -f requiere una explicación adicional. En algunos casos, la cuenta de servicio no tiene permisos para enumerar explícitamente los nombres de los proyectos. Sin embargo, aún podría tener acceso a los recursos subyacentes si proporcionamos el nombre de proyecto correcto. Esta opción está diseñada específicamente para manejar estos casos.
Reemplace google-api-python-client==2.80.0 con google-api-python-client==1.8.0 en pyproject.toml. Después de eso, navegue al directorio del código fuente del escáner y use pyinstaller para compilar un binario independiente:
pyinstaller -F --add-data 'roots.pem:grpc/_cython/_credentials/' scanner.py
GCP Scanner produce un archivo JSON estándar que puede ser manejado por cualquier visor o base de datos JSON. Proporcionamos una herramienta basada en web que puede ayudarle a visualizar los resultados. Para ejecutar la herramienta, use el siguiente 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
Para obtener más información sobre cómo usar la herramienta, visite la página Guía de uso del visualizador de GCP Scanner.
Si solo necesita una forma conveniente de grepar resultados JSON, podemos recomendar gron.
Consulte CONTRIBUTING.md para obtener más detalles.
Apache 2.0; consulte LICENSE para obtener más detalles.