
GCP-сканер ресурсов, который оценивает уровни доступа скомпрометированных учетных данных, перечисляя облачные сервисы, проекты и разрешения IAM в Google Cloud Platform.
Этот проект не является официальным проектом Google. Он не поддерживается Google, и Google отказывается от всех гарантий в отношении его качества, товарной пригодности или соответствия конкретным целям.

Это сканер ресурсов GCP, который помогает определить, какой уровень доступа имеют определённые учётные данные в GCP. Сканер предназначен для оценки влияния компрометации определённой виртуальной машины/контейнера, учётной записи сервиса GCP или утечки токена OAuth2.
В настоящее время сканер поддерживает следующие ресурсы GCP:
Сканер поддерживает извлечение и использование следующих типов учётных данных:
Сканер не использует сторонние инструменты (например, gcloud). Таким образом, его можно скомпилировать как автономный инструмент и использовать на машине без установленного GCP SDK (например, в поде Kubernetes). Однако имейте в виду, что в настоящее время поддерживается только ОС Linux.
Обратите внимание, что GCP предлагает Policy Analyzer для выяснения того, какие субъекты (пользователи, сервисные аккаунты, группы и домены) имеют какой доступ к каким ресурсам Google Cloud. Однако для этого требуются определённые разрешения в проекте GCP и необходимо включить Cloud Assets API. Если у вас есть только ключ SA GCP, доступ к ранее скомпрометированной виртуальной машине или refresh-токен OAuth2, gcp_scanner — лучший вариант.
Для установки пакета используйте pip (также должен быть установлен git):
pip install gcp_scanner
python3 -m gcp_scanner --help
Альтернативно:
git clone https://github.com/google/gcp_scanner
cd gcp_scanner
pip install .
gcp-scanner --help
Если вы хотите запустить сканер из контейнера, используйте Dockerfile:
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
Опция -f требует дополнительного пояснения. В некоторых случаях сервисный аккаунт не имеет разрешений на явный перечень проектов. Однако у него всё ещё может быть доступ к базовым ресурсам, если мы укажем правильное имя проекта. Эта опция создана специально для таких случаев.
Пожалуйста, замените google-api-python-client==2.80.0 на google-api-python-client==1.8.0 в pyproject.toml. После этого перейдите в каталог исходного кода сканера и используйте pyinstaller для компиляции автономного бинарного файла:
pyinstaller -F --add-data 'roots.pem:grpc/_cython/_credentials/' scanner.py
GCP Scanner создаёт стандартный JSON-файл, который можно обработать любым JSON-просмотрщиком или БД. Мы предоставляем веб-инструмент, который поможет визуализировать результаты. Чтобы запустить инструмент, используйте следующую команду:
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
Чтобы узнать больше об использовании инструмента, посетите страницу GCP Scanner Visualizer Usage Guide.
Если вам нужен просто удобный способ поиска в JSON-результатах, рекомендуем gron.
См. CONTRIBUTING.md для подробностей.
Apache 2.0; см. LICENSE для подробностей.