
Bereinigen Sie Konten über Berechtigungen in der GCP-Infrastruktur im großen Maßstab.
CureIAM ist eine benutzerfreundliche, zuverlässige und leistungsstarke Engine zur Durchsetzung des Least-Privilege-Prinzips auf der GCP-Cloud-Infrastruktur. Sie ermöglicht DevOps- und Sicherheitsteams, schnell Konten in der GCP-Infrastruktur zu bereinigen, die mehr Berechtigungen haben als nötig. CureIAM ruft die Empfehlungen und Erkenntnisse vom GCP IAM Recommender ab, bewertet sie und setzt diese Empfehlungen automatisch auf täglicher Basis durch. Es kümmert sich um die Planung und alle anderen Aspekte der Ausführung dieser Durchsetzungsaufträge in großem Maßstab. Es basiert auf den GCP IAM Recommender APIs und dem Cloudmarker-Framework.
Entdecken Sie, was CureIAM skalierbar und produktionsreif macht.
safe_to_apply_score, risk_score, over_privilege_score. Jede Bewertung dient einem anderen Zweck. Der safe_to_apply_score identifiziert die Fähigkeit, eine Empfehlung automatisiert anzuwenden, basierend auf dem in der CureIAM.yaml-Konfigurationsdatei festgelegten Schwellenwert.Da CureIAM mit Python erstellt wurde, können Sie es lokal mit diesen Befehlen ausführen. Stellen Sie vor dem Ausführen sicher, dass eine Konfigurationsdatei in einem der folgenden Pfade bereit liegt: /etc/CureIAM.yaml, ~/.CureIAM.yaml, ~/CureIAM.yaml oder CureIAM.yaml, und dass sich eine JSON-Datei für das Servicekonto im aktuellen Verzeichnis befindet, vorzugsweise mit dem Namen cureiamSA.json. Dieser private Schlüssel des Servicekontos kann beliebig benannt werden, aber für den Docker-Image-Build wird dieser Name bevorzugt. Stellen Sie sicher, dass Sie diese Datei in der Konfiguration für die GCP-Cloud referenzieren.
# Install necessary dependencies
$ pip install -r requirements.txt
# Run CureIAM now
$ python -m CureIAM -n
# Run CureIAM process as schedular
$ python -m CureIAM
# Check CureIAM help
$ python -m CureIAM --help
CureIAM kann auch in einer Docker-Umgebung ausgeführt werden; dies ist vollkommen optional und kann für CI/CD mit K8s-Cluster-Bereitstellung verwendet werden.
# Build docker image from dockerfile
$ docker build -t cureiam .
# Run the image, as schedular
$ docker run -d cureiam
# Run the image now
$ docker run -f cureiam -m cureiam -n
Die Konfigurationsdatei CureIAM.yaml ist das Herz der CureIAM-Engine. Alles, was die Engine tut, basiert auf der in dieser Konfigurationsdatei konfigurierten Pipeline. Lassen Sie uns dies in verschiedenen Abschnitten aufschlüsseln, um die Konfiguration übersichtlicher zu gestalten.
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"
Dieser Unterabschnitt der Konfiguration verwendet das Rich-Protokollierungsmodul und plant CureIAM so, dass es täglich um 16:00 Uhr ausgeführt wird.
plugins-Abschnitt in der CureIAM.yaml. Sie können sich diesen Abschnitt als Deklaration für verschiedene Plugins vorstellen. 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
Jede dieser Plugin-Deklarationen muss folgende Form haben:
plugins:
<plugin-name>:
plugin: <class-name-as-python-path>
params:
param1: val1
param2: val2
Zum Beispiel für das Plugin CureIAM.stores.esstore.EsStore, welches diese Datei und die Klasse EsStore ist. Alle in yaml definierten Parameter müssen mit der Deklaration in der __init__()-Funktion derselben Plugin-Klasse übereinstimmen.
audits:
IAMAudit:
clouds:
- gcpCloud
processors:
- gcpIamProcessor
stores:
- filestore
- esstore
Daraus können mehrere Audits erstellt werden. Das hier erstellte heißt IAMAudit und verwendet drei Plugins: gcpCloud, gcpIamProcessor, filestores und esstore. Beachten Sie, dass dies dieselben Plugin-Namen sind, die in Schritt 2 definiert wurden. Auch dies ist wie das Definieren der Pipeline, nicht das tatsächliche Ausführen. Es wird für die Ausführung mit der Definition im nächsten Schritt berücksichtigt.
CureIAM mit, die im vorherigen Schritt definierten Audits auszuführen. run:
- IAMAudits
Und das ergibt die gesamte Konfiguration für CureIAM. Das vollständige Beispiel finden Sie hier. Dieses konfigurationsgesteuerte Pipeline-Konzept wurde vom Cloudmarker-Framework übernommen.
Das JSON, das mit dem Elasticsearch-Speicher-Plugin in Elasticsearch indiziert wird, kann zur Erstellung eines Dashboards in Kibana verwendet werden.
[Bitte machen Sie es!] Wir suchen jede Art von Beitrag, um die Kernfunktionalität und Dokumentation von CureIAM zu verbessern. Im Zweifelsfall einfach einen PR erstellen!
Gojek Product Security Team ❤️
<>
=============
Hinzufügen der Version in der Bibliothek, um Abwärtskompatibilitätsprobleme zu vermeiden.
Running docker compose: docker-compose -f docker_compose_es.yaml up
mode_scan: true
mode_enforce: false