
Scanner de recursos do GCP que avalia os níveis de acesso de credenciais comprometidas enumerando serviços na nuvem, projetos e permissões do IAM na plataforma Google Cloud.
Este projeto não é um projeto oficial do Google. Não é suportado pelo Google e o Google se isenta especificamente de todas as garantias quanto à sua qualidade, comercialização ou adequação a um propósito específico.

Este é um scanner de recursos GCP que pode ajudar a determinar qual nível de acesso determinadas credenciais possuem no GCP. O scanner foi projetado para ajudar engenheiros de segurança a avaliar o impacto de um comprometimento de VM/contêiner, de uma conta de serviço GCP ou do vazamento de uma chave de token OAuth2.
Atualmente, o scanner suporta os seguintes recursos do GCP:
O scanner suporta extrair e usar os seguintes tipos de credenciais:
O scanner não depende de nenhuma ferramenta de terceiros (ex.: gcloud). Assim, pode ser compilado como uma ferramenta independente e usado em uma máquina sem o SDK do GCP instalado (ex.: um pod Kubernetes). No entanto, lembre-se de que o único sistema operacional atualmente suportado é o Linux.
Observe que o GCP oferece o Policy Analyzer para descobrir quais principais (usuários, contas de serviço, grupos e domínios) têm qual acesso a quais recursos do Google Cloud. No entanto, ele requer permissões específicas no projeto GCP e a API Cloud Assets precisa estar ativada. Se você tiver apenas uma chave de SA GCP, acesso a uma VM previamente comprometida ou um refresh token OAuth2, o gcp_scanner é a melhor opção.
Para instalar o pacote, use pip (você também precisa ter o 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
Há um arquivo de build Docker caso você queira executar o scanner a partir de um contêiner:
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
A opção -f requer uma explicação adicional. Em alguns casos, a conta de serviço não tem permissões para listar explicitamente os nomes dos projetos. No entanto, ela ainda pode ter acesso aos recursos subjacentes se fornecermos o nome correto do projeto. Esta opção foi projetada especificamente para lidar com tais casos.
Substitua google-api-python-client==2.80.0 por google-api-python-client==1.8.0 no arquivo pyproject.toml. Depois disso, navegue até o diretório do código-fonte do scanner e use o pyinstaller para compilar um binário standalone:
pyinstaller -F --add-data 'roots.pem:grpc/_cython/_credentials/' scanner.py
O GCP Scanner produz um arquivo JSON padrão que pode ser manipulado por qualquer visualizador JSON ou banco de dados. Estamos fornecendo uma ferramenta baseada na web que pode ajudar a visualizar os resultados. Para executar a ferramenta, use o seguinte 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 saber mais sobre como usar a ferramenta, visite a página GCP Scanner Visualizer Usage Guide.
Se você precisar apenas de uma maneira conveniente de pesquisar nos resultados JSON, recomendamos o gron.
Consulte CONTRIBUTING.md para obter detalhes.
Apache 2.0; consulte LICENSE para obter detalhes.