
GCP इंफ्रास्ट्रक्चर में बड़े पैमाने पर अनुमतियों पर खातों को साफ करें
CureIAM GCP क्लाउड इंफ्रा पर न्यूनतम विशेषाधिकार सिद्धांत (Least Privilege Principle) को लागू करने के लिए एक आसान, विश्वसनीय और उच्च प्रदर्शन वाला इंजन है। यह DevOps और सुरक्षा टीमों को GCP इंफ्रा में उन खातों को शीघ्रता से साफ करने में सक्षम बनाता है जिन्हें आवश्यकता से अधिक अनुमतियाँ दी गई हैं। CureIAM GCP IAM अनुशंसाकर्ता (Recommender) से सिफारिशें और अंतर्दृष्टि प्राप्त करता है, उन्हें स्कोर करता है और प्रतिदिन स्वचालित रूप से उन सिफारिशों को लागू करता है। यह शेड्यूलिंग और बड़े पैमाने पर इन प्रवर्तन कार्यों को चलाने के अन्य सभी पहलुओं का ध्यान रखता है। यह GCP IAM अनुशंसाकर्ता API और 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 में एक कॉन्फ़िगरेशन फ़ाइल तैयार है और वर्तमान निर्देशिका में cureiamSA.json नाम की एक सेवा खाता 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 क्लस्टर परिनियोजन के साथ CI/CD के लिए उपयोग किया जा सकता है।
# Dockerfile से Docker इमेज बनाएँ
$ 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 बजे चलने के लिए शेड्यूल करता है।
CureIAM.yaml में plugins अनुभाग के अंतर्गत आता है। आप इस अनुभाग को विभिन्न प्लगइन्स की घोषणा के रूप में सोच सकते हैं। 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:
# Change http to https later if your elastic are using https
scheme: http
host: es-host.com
port: 9200
index: cureiam-stg
username: security
password: securepassword
इनमें से प्रत्येक प्लगइन घोषणा इस रूप में होनी चाहिए:
plugins:
<plugin-name>:
plugin: <class-name-as-python-path>
params:
param1: val1
param2: val2
उदाहरण के लिए, प्लगइन CureIAM.stores.esstore.EsStore के लिए जो यह फ़ाइल है और क्लास EsStore है। yaml में परिभाषित सभी params को उसी प्लगइन क्लास के __init__() फ़ंक्शन में घोषणा से मेल खाना चाहिए।
audits:
IAMAudit:
clouds:
- gcpCloud
processors:
- gcpIamProcessor
stores:
- filestore
- esstore
इससे एकाधिक ऑडिट बनाए जा सकते हैं। यहाँ बनाया गया नाम IAMAudit है जिसमें तीन प्लगइन्स का उपयोग है: gcpCloud, gcpIamProcessor, filestores और esstore। ध्यान दें कि ये चरण 2 में परिभाषित प्लगइन नाम हैं। फिर से, यह पाइपलाइन को परिभाषित करने जैसा है, वास्तव में इसे चलाने जैसा नहीं। अगले चरण में परिभाषा के साथ चलाने पर विचार किया जाएगा।
run:
- IAMAudits
और यह CureIAM के लिए संपूर्ण कॉन्फ़िगरेशन बनाता है, आप पूरा नमूना यहाँ पा सकते हैं। यह कॉन्फिग-संचालित पाइपलाइन अवधारणा Cloudmarker फ्रेमवर्क से विरासत में मिली है।
Elasticsearch स्टोर प्लगइन का उपयोग करके Elasticsearch में अनुक्रमित JSON का उपयोग Kibana में डैशबोर्ड उत्पन्न करने के लिए किया जा सकता है।
[कृपया करें!] हम CureIAM की मुख्य कार्यक्षमता और दस्तावेज़ीकरण में सुधार के लिए किसी भी प्रकार के योगदान की तलाश कर रहे हैं। जब संदेह हो, PR करें!
Gojek उत्पाद सुरक्षा टीम ❤️
<>
=============
किसी भी पिछड़े संगतता मुद्दों से बचने के लिए लाइब्रेरी में संस्करण जोड़ना।
Docker compose चलाना: docker-compose -f docker_compose_es.yaml up
mode_scan: true
mode_enforce: false