
GCPリソーススキャナーは、Google Cloud Platform全体のクラウドサービス、プロジェクト、IAM権限を列挙し、侵害された認証情報のアクセスレベルを評価します。
このプロジェクトは Google の公式プロジェクトではありません。Google によるサポートはなく、Google はその品質、商品性、または特定目的への適合性に関する一切の保証を否認します。

GCP Scanner は、特定の認証情報が 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 ビルドファイルもあります:
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 Scanner は標準の JSON ファイルを出力します。これは任意の JSON ビューアや DB で処理できます。結果を可視化するための Web ベースのツールも提供しています。 ツールを実行するには、以下のコマンドを使用してください。
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 の結果を簡単に grep したい場合は、gron をお勧めします。
詳細については CONTRIBUTING.md を参照してください。
Apache 2.0; 詳細については LICENSE を参照してください。