
GCP 리소스 스캐너로, Google Cloud Platform 전반에 걸쳐 클라우드 서비스, 프로젝트 및 IAM 권한을 열거하여 손상된 자격 증명의 액세스 수준을 평가합니다.
이 프로젝트는 공식 Google 프로젝트가 아닙니다. Google에서 지원하지 않으며 Google은 특히 이 프로젝트의 품질, 상업성 또는 특정 목적에의 적합성에 대한 모든 보증을 부인합니다.

이것은 특정 자격 증명이 GCP에서 어떤 수준의 액세스 권한을 가지고 있는지 확인하는 데 도움을 주는 GCP 리소스 스캐너입니다. 이 스캐너는 보안 엔지니어가 특정 VM/컨테이너 손상, GCP 서비스 계정 또는 OAuth2 토큰 키 유출의 영향을 평가하는 데 도움이 되도록 설계되었습니다.
현재 스캐너는 다음 GCP 리소스를 지원합니다:
스캐너는 다음 유형의 자격 증명을 추출하고 사용할 수 있습니다:
이 스캐너는 어떤 타사 도구(예: gcloud)에도 의존하지 않습니다. 따라서 독립 실행형 도구로 컴파일되어 GCP SDK가 설치되지 않은 머신(예: Kubernetes 포드)에서 사용할 수 있습니다. 단, 현재 지원되는 유일한 OS는 Linux입니다.
GCP는 어떤 주체(사용자, 서비스 계정, 그룹 및 도메인)가 어떤 Google Cloud 리소스에 어떤 액세스 권한을 가지고 있는지 확인할 수 있는 Policy Analyzer를 제공합니다. 그러나 이를 위해서는 GCP 프로젝트에 대한 특정 권한이 필요하고 Cloud Assets API를 활성화해야 합니다. GCP SA 키, 이전에 손상된 VM에 대한 액세스 권한 또는 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
컨테이너에서 스캐너를 실행하려면 도커 빌드 파일이 있습니다:
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 옵션에 대한 추가 설명이 필요합니다. 경우에 따라 서비스 계정에 프로젝트 이름을 명시적으로 나열할 수 있는 권한이 없을 수 있습니다. 그러나 올바른 프로젝트 이름을 제공하면 기본 리소스에 액세스할 수 있을 수도 있습니다. 이 옵션은 이러한 경우를 처리하기 위해 특별히 설계되었습니다.
pyproject.toml에서 google-api-python-client==2.80.0를 google-api-python-client==1.8.0로 바꾸세요. 그런 다음 스캐너 소스 코드 디렉터리로 이동하여 pyinstaller를 사용하여 독립 실행형 바이너리를 컴파일하세요:
pyinstaller -F --add-data 'roots.pem:grpc/_cython/_credentials/' scanner.py
GCP 스캐너는 모든 JSON 뷰어 또는 DB에서 처리할 수 있는 표준 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 스캐너 비주얼라이저 사용 가이드 페이지를 방문하십시오.
JSON 결과를 grep하는 편리한 방법이 필요하다면 gron을 추천합니다.
자세한 내용은 CONTRIBUTING.md를 참조하십시오.
Apache 2.0; 자세한 내용은 LICENSE를 참조하십시오.