
تنظيف الحسابات بناءً على الصلاحيات في البنية التحتية لـ GCP على نطاق واسع
CureIAM هو محرك سهل الاستخدام وموثوق وعالي الأداء لتطبيق مبدأ أقل الامتيازات على البنية السحابية لـ GCP. يمكّن فرق DevOps والأمن من تنظيف الحسابات في بنية GCP التي مُنحت صلاحيات أكثر مما هو مطلوب بسرعة. يجلب CureIAM التوصيات والرؤى من مستشار IAM في GCP، ويُسجّلها ويُطبق تلك التوصيات تلقائيًا بشكل يومي. يتولى الجدولة وجميع الجوانب الأخرى لتشغيل مهام التطبيق هذه على نطاق واسع. تم بناؤه فوق واجهات برمجة تطبيقات مستشار IAM في GCP وإطار عمل Cloudmarker.
اكتشف ما يجعل CureIAM قابلًا للتوسع ومناسبًا للإنتاج.
safe_to_apply_score و risk_score و over_privilege_score. كل درجة تخدم غرضًا مختلفًا. تحدد safe_to_apply_score القدرة على تطبيق التوصية تلقائيًا بناءً على الحد المحدد في ملف الإعدادات CureIAM.yaml.نظرًا لأن CureIAM مبني بلغة Python، يمكنك تشغيله محليًا باستخدام هذه الأوامر. قبل التشغيل، تأكد من وجود ملف إعدادات جاهز في أحد المسارات التالية: /etc/CureIAM.yaml أو ~/.CureIAM.yaml أو ~/CureIAM.yaml أو CureIAM.yaml، بالإضافة إلى وجود ملف JSON لحساب خدمة في الدليل الحالي باسم يفضل أن يكون cureiamSA.json. يمكن تسمية مفتاح SA الخاص هذا بأي اسم، ولكن لبناء صورة Docker، يُفضل استخدام هذا الاسم. تأكد من الإشارة إلى هذا الملف في الإعدادات لسحابة GCP.
# تثبيت التبعيات الضرورية
$ pip install -r requirements.txt
# تشغيل CureIAM الآن
$ python -m CureIAM -n
# تشغيل عملية CureIAM كجدول زمني
$ python -m CureIAM
# التحقق من تعليمات CureIAM
$ python -m CureIAM --help
يمكن أيضًا تشغيل CureIAM داخل بيئة Docker، وهذا اختياري تمامًا ويمكن استخدامه للتكامل المستمر والنشر مع مجموعة K8s.
# بناء صورة Docker من ملف Dockerfile
$ docker build -t cureiam .
# تشغيل الصورة، كجدول زمني
$ docker run -d cureiam
# تشغيل الصورة الآن
$ docker run -f cureiam -m cureiam -n
ملف الإعدادات CureIAM.yaml هو قلب محرك CureIAM. كل ما يفعله المحرك يعتمد على خط الأنابيب المكون في ملف الإعدادات هذا. دعنا نقسمه إلى أقسام مختلفة لجعل هذا الإعداد يبدو أبسط.
logger:
version: 1
disable_existing_loggers: false
formatters:
verysimple:
format: >-
[%(process)s]
%(name)s:%(lineno)d - %(message)s
datefmt: "%Y-%m-%d %H:%M:%S"
handlers:
rich_console:
class: rich.logging.RichHandler
formatter: verysimple
file:
class: logging.handlers.TimedRotatingFileHandler
formatter: simple
filename: /tmp/CureIAM.log
when: midnight
encoding: utf8
backupCount: 5
loggers:
adal-python:
level: INFO
root:
level: INFO
handlers:
- rich_console
- file
schedule: "16:00"
يستخدم هذا القسم الفرعي من الإعدادات وحدة التسجيل Rich ويُجدول تشغيل CureIAM يوميًا الساعة 16:00.
plugins في CureIAM.yaml. يمكنك التفكير في هذا القسم كإعلان للإضافات المختلفة. plugins:
gcpCloud:
plugin: CureIAM.plugins.gcp.gcpcloud.GCPCloudIAMRecommendations
params:
key_file_path: cureiamSA.json
filestore:
plugin: CureIAM.plugins.files.filestore.FileStore
gcpIamProcessor:
plugin: CureIAM.plugins.gcp.gcpcloudiam.GCPIAMRecommendationProcessor
params:
mode_scan: true
mode_enforce: true
enforcer:
key_file_path: cureiamSA.json
allowlist_projects:
- alpha
blocklist_projects:
- beta
blocklist_accounts:
- [email protected]
allowlist_account_types:
- user
- group
- serviceAccount
blocklist_account_types:
- None
min_safe_to_apply_score_user: 0
min_safe_to_apply_score_group: 0
min_safe_to_apply_score_SA: 50
esstore:
plugin: CureIAM.plugins.elastic.esstore.EsStore
params:
# غير http إلى https لاحقًا إذا كان elastic يستخدم https
scheme: http
host: es-host.com
port: 9200
index: cureiam-stg
username: security
password: securepassword
يجب أن يكون كل إعلان من هذه الإضافات بهذا الشكل:
plugins:
<اسم-الإضافة>:
plugin: <اسم-الفئة-كمسار-بايثون>
params:
param1: val1
param2: val2
على سبيل المثال، للإضافة CureIAM.stores.esstore.EsStore وهي هذا الملف والفئة EsStore. يجب أن تتطابق جميع المعاملات المحددة في yaml مع التصريح في دالة __init__() لنفس فئة الإضافة.
audits:
IAMAudit:
clouds:
- gcpCloud
processors:
- gcpIamProcessor
stores:
- filestore
- esstore
يمكن إنشاء عدة تدقيقات من هذا. التدقيق الذي تم إنشاؤه هنا يُسمى IAMAudit مع ثلاث إضافات قيد الاستخدام: gcpCloud و gcpIamProcessor و filestores و esstore. لاحظ أن هذه هي نفس أسماء الإضافات المحددة في الخطوة 2. مرة أخرى، هذا يشبه تعريف خط الأنابيب، وليس تشغيله فعليًا. سيتم النظر فيه للتشغيل مع التعريف في الخطوة التالية.
CureIAM بتشغيل التدقيقات المحددة في الخطوة السابقة. run:
- IAMAudits
وبهذا يكتمل الإعداد الكامل لـ CureIAM، يمكنك العثور على النموذج الكامل هنا. هذا المفهوم لخط الأنابيب القائم على الإعدادات موروث من إطار عمل Cloudmarker.
يمكن استخدام JSON الذي تم فهرسته في Elasticsearch باستخدام إضافة مخزن Elasticsearch لتوليد لوحة معلومات في Kibana.
[نرجو ذلك!] نحن نبحث عن أي نوع من المساهمات لتحسين الوظائف الأساسية لـ CureIAM والوثائق. عندما تكون في شك، قم بعمل طلب سحب (PR)!
فريق أمان منتجات Gojek ❤️
<<قريبًا>>
=============
إضافة الإصدار في المكتبات لتجنب أي مشكلات توافق عكسي.
تشغيل docker compose: docker-compose -f docker_compose_es.yaml up
mode_scan: true
mode_enforce: false