
Pulisci gli account per le autorizzazioni nell'infrastruttura GCP su larga scala
CureIAM è un motore facile da usare, affidabile e performante per l'applicazione del principio del minimo privilegio sull'infrastruttura cloud GCP. Consente ai team DevOps e Security di ripulire rapidamente gli account nell'infrastruttura GCP a cui sono stati concessi permessi superiori al necessario. CureIAM recupera raccomandazioni e approfondimenti dal GCP IAM Recommender, li valuta e li applica automaticamente su base giornaliera. Si occupa della pianificazione e di tutti gli altri aspetti dell'esecuzione di questi lavori di enforcement su larga scala. È costruito sopra le API di GCP IAM Recommender e il framework Cloudmarker.
Scopri cosa rende CureIAM scalabile e pronto per la produzione.
safe_to_apply_score, risk_score, over_privilege_score. Ogni punteggio ha uno scopo diverso. safe_to_apply_score identifica la capacità di applicare automaticamente la raccomandazione, in base alla soglia impostata nel file di configurazione CureIAM.yaml.Poiché CureIAM è scritto in Python, puoi eseguirlo localmente con questi comandi. Prima di eseguirlo, assicurati di avere un file di configurazione pronto in /etc/CureIAM.yaml, ~/.CureIAM.yaml, ~/CureIAM.yaml o CureIAM.yaml e che sia presente un file JSON del service account nella directory corrente, preferibilmente con nome cureiamSA.json. Questa chiave privata del service account può avere qualsiasi nome, ma per la creazione dell'immagine Docker è preferibile usare questo nome. Assicurati di fare riferimento a questo file nella configurazione per il cloud GCP.
# Installa le dipendenze necessarie
$ pip install -r requirements.txt
# Esegui CureIAM ora
$ python -m CureIAM -n
# Esegui CureIAM come scheduler
$ python -m CureIAM
# Controlla l'aiuto di CureIAM
$ python -m CureIAM --help
CureIAM può essere eseguito anche in un ambiente Docker, completamente opzionale e può essere usato per CI/CD con deployment su cluster K8s.
# Costruisci l'immagine Docker dal dockerfile
$ docker build -t cureiam .
# Esegui l'immagine come scheduler
$ docker run -d cureiam
# Esegui l'immagine ora
$ docker run -f cureiam -m cureiam -n
Il file di configurazione CureIAM.yaml è il cuore del motore CureIAM. Tutto ciò che il motore fa si basa sulla pipeline configurata in questo file. Analizziamolo in diverse sezioni per semplificare la configurazione.
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"
Questa sottosezione della configurazione utilizza il modulo di logging Rich e pianifica l'esecuzione di CureIAM ogni giorno alle 16:00.
plugins di CureIAM.yaml. Puoi pensare a questa sezione come alla dichiarazione dei vari plugin. 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
Ogni dichiarazione di plugin deve avere questa forma:
plugins:
<plugin-name>:
plugin: <class-name-as-python-path>
params:
param1: val1
param2: val2
Ad esempio, per il plugin CureIAM.stores.esstore.EsStore che è questo file e la classe EsStore. Tutti i parametri definiti nello yaml devono corrispondere alla dichiarazione nella funzione __init__() della stessa classe plugin.
audits:
IAMAudit:
clouds:
- gcpCloud
processors:
- gcpIamProcessor
stores:
- filestore
- esstore
Da questa possono essere creati più audit. Quello creato qui si chiama IAMAudit e utilizza tre plugin: gcpCloud, gcpIamProcessor, filestores e esstore. Nota che questi sono gli stessi nomi di plugin definiti nel Passo 2. Anche questo è come definire la pipeline, non eseguirla effettivamente. Verrà considerata per l'esecuzione con la definizione del passo successivo.
CureIAM di eseguire gli audit definiti nel passo precedente. run:
- IAMAudits
E questo completa l'intera configurazione per CureIAM. Puoi trovare l'esempio completo qui. Questo concetto di pipeline guidata dalla configurazione è ereditato dal framework Cloudmarker.
Il JSON indicizzato in Elasticsearch tramite il plugin Elasticsearch store può essere utilizzato per generare una dashboard in Kibana.
[Per favore!] Siamo alla ricerca di qualsiasi tipo di contributo per migliorare le funzionalità principali e la documentazione di CureIAM. In caso di dubbi, crea una PR!
Gojek Product Security Team ❤️
<>
=============
Aggiunta della versione nelle librerie per evitare problemi di retrocompatibilità.
Esecuzione di docker compose: docker-compose -f docker_compose_es.yaml up
mode_scan: true
mode_enforce: false