
ماسح موارد GCP الذي يقيم مستويات الوصول للبيانات المخترقة من خلال تعداد الخدمات السحابية والمشاريع وأذونات IAM عبر منصة Google Cloud.
هذا المشروع ليس مشروعًا رسميًا من Google. إنه غير مدعوم من Google وتتنصل Google صراحةً من جميع الضمانات المتعلقة بجودته أو قابليته للتسويق أو ملاءمته لغرض معين.

هذه أداة مسح لموارد GCP يمكنها المساعدة في تحديد مستوى الوصول الذي تمتلكه بعض بيانات الاعتماد على GCP. صُممت الأداة لمساعدة مهندسي الأمن في تقييم تأثير اختراق جهاز افتراضي/حاوية معين، أو حساب خدمة GCP، أو تسرب مفتاح رمز OAuth2.
حاليًا، تدعم الأداة موارد GCP التالية:
تدعم الأداة استخراج واستخدام الأنواع التالية من بيانات الاعتماد:
لا تعتمد الأداة على أي أداة خارجية (مثل gcloud). وبالتالي، يمكن تجميعها كأداة مستقلة واستخدامها على جهاز لا يحتوي على GCP SDK مثبت (مثل جراب Kubernetes). ومع ذلك، يرجى ملاحظة أن نظام التشغيل الوحيد المدعوم حاليًا هو Linux.
يرجى ملاحظة أن GCP توفر Policy Analyzer لمعرفة أي من المبادئ (المستخدمين، حسابات الخدمة، المجموعات، والمجالات) لديه أي وصول إلى أي من موارد Google Cloud. ومع ذلك، يتطلب ذلك أذونات محددة على مشروع GCP ويجب تمكين API Cloud Assets. إذا كان لديك فقط مفتاح SA لـ GCP، أو وصول إلى 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 يحتاج إلى شرح إضافي. في بعض الحالات، لا يمتلك حساب الخدمة أذونات لإدراج أسماء المشاريع بشكل صريح. ومع ذلك، قد يظل لديه إمكانية الوصول إلى الموارد الأساسية إذا قدمنا اسم المشروع الصحيح. هذا الخيار مصمم خصيصًا للتعامل مع مثل هذه الحالات.
يرجى استبدال 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.
إذا كنت بحاجة فقط إلى طريقة ملائمة للبحث في نتائج JSON، فيمكننا التوصية بـ gron.
راجع CONTRIBUTING.md للحصول على التفاصيل.
Apache 2.0؛ راجع LICENSE للحصول على التفاصيل.