Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CureIAM — Nettoyer les comptes ayant des permissions excessives dans l'infrastructure GCP à grande échelle. | Kitploit
Outils/GitHubGitHub/gojek/cureiam
Sécurité de l'Infrastructure CloudAudit de ConfigurationSécurité CloudDevSecOpsGestion des Identités et des Accès (IAM)
GitHubgojek/cureiam

CureIAM

Nettoyer les comptes ayant des permissions excessives dans l'infrastructure GCP à grande échelle.

Voir le dépôt
726il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CureIAM

Nettoyage des comptes IAM avec des permissions excessives sur l'infrastructure GCP de manière automatisée

CureIAM est un moteur facile à utiliser, fiable et performant pour l'application du principe du moindre privilège sur l'infrastructure cloud GCP. Il permet aux équipes DevOps et Sécurité de nettoyer rapidement les comptes sur l'infrastructure GCP qui ont obtenu des permissions plus élevées que nécessaires. CureIAM récupère les recommandations et les informations de GCP IAM Recommender, les évalue et applique automatiquement ces recommandations quotidiennement. Il gère la planification et tous les autres aspects de l'exécution de ces tâches d'application à grande échelle. Il est construit sur les API GCP IAM Recommender et le framework Cloudmarker.

Fonctionnalités clés

Découvrez ce qui rend CureIAM scalable et de qualité production.

  • Piloté par la configuration : L'ensemble du flux de travail de CureIAM est piloté par la configuration. Passez à la section Configuration pour en savoir plus.
  • Évolutif : Il est conçu pour être scalable grâce à son approche basée sur les plugins, multiprocessus et multithread.
  • Gère la planification : La partie planification est intégrée dans le code de CureIAM lui-même ; configurez l'heure, et CureIAM s'exécutera quotidiennement à cette heure.
  • Basé sur des plugins : La base de code de CureIAM est entièrement orientée plugins, ce qui signifie que l'on peut brancher/débrancher les plugins existants ou en créer de nouveaux pour ajouter plus de fonctionnalités.
  • Suivi des informations exploitables : Chaque action que CureIAM entreprend est enregistrée à des fins d'audit, dans un stockage fichier et dans un stockage Elasticsearch. Si vous le souhaitez, vous pouvez créer d'autres plugins de stockage pour les pousser vers d'autres systèmes de suivi.
  • Scoring et application : Chaque recommandation récupérée par CureIAM est notée selon différents paramètres, produisant des scores comme safe_to_apply_score, risk_score, over_privilege_score. Chaque score a un objectif différent. Par exemple, safe_to_apply_score identifie la capacité à appliquer la recommandation de manière automatisée, en fonction du seuil défini dans le fichier de configuration CureIAM.yaml.

Utilisation

Puisque CureIAM est construit avec Python, vous pouvez l'exécuter localement avec ces commandes. Avant d'exécuter, assurez-vous d'avoir un fichier de configuration prêt dans l'un des chemins suivants : /etc/CureIAM.yaml, ~/.CureIAM.yaml, ~/CureIAM.yaml, ou CureIAM.yaml, et qu'un fichier JSON de compte de service est présent dans le répertoire courant, de préférence nommé cureiamSA.json. Cette clé privée du compte de service peut être nommée autrement, mais pour la construction de l'image Docker, il est préférable d'utiliser ce nom. Veillez à référencer ce fichier dans la configuration pour le cloud GCP.

root@kitploit:~
# 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 peut également être exécuté dans un environnement Docker, ce qui est complètement optionnel et peut être utilisé pour l'intégration/déploiement continu avec un déploiement de cluster K8s.

root@kitploit:~
# 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 

Configuration

Le fichier de configuration CureIAM.yaml est le cœur du moteur CureIAM. Tout ce que le moteur fait est basé sur le pipeline configuré dans ce fichier. Décomposons-le en différentes sections pour simplifier la configuration.

  1. Configurons la première section, qui concerne la configuration de la journalisation et du planificateur.
root@kitploit:~
  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"

Cette sous-section de configuration utilise le module de journalisation Rich et planifie l'exécution quotidienne de CureIAM à 16:00.

  1. La section suivante consiste à configurer différents modules que nous POURRIONS utiliser dans le pipeline. Cela relève de la section plugins dans CureIAM.yaml. Vous pouvez considérer cette section comme une déclaration des différents plugins.
root@kitploit:~
  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

Chacune de ces déclarations de plugin doit être de cette forme :

root@kitploit:~
  plugins:
    <plugin-name>:
      plugin: <class-name-as-python-path>
      params:
        param1: val1
        param2: val2

Par exemple, pour le plugin CureIAM.stores.esstore.EsStore qui est ce fichier et la classe EsStore. Tous les paramètres définis dans le yaml doivent correspondre à la déclaration dans la fonction __init__() de la même classe de plugin.

  1. Une fois les plugins définis, l'étape suivante consiste à définir comment définir le pipeline pour l'audit. Et cela se présente ainsi :
root@kitploit:~
  audits:
    IAMAudit:
      clouds:
        - gcpCloud
      processors:
        - gcpIamProcessor
      stores:
        - filestore
        - esstore

Plusieurs audits peuvent être créés à partir de cela. Celui créé ici est nommé IAMAudit et utilise trois plugins : gcpCloud, gcpIamProcessor, filestores et esstore. Notez qu'il s'agit des mêmes noms de plugins définis à l'étape 2. Encore une fois, cela revient à définir le pipeline, pas à l'exécuter réellement. Il sera pris en compte pour l'exécution selon la définition de l'étape suivante.

  1. Dites à CureIAM d'exécuter les Audits définis à l'étape précédente.
root@kitploit:~
  run:
    - IAMAudits

Et cela constitue la configuration complète pour CureIAM. Vous trouverez un exemple complet ici. Ce concept de pipeline piloté par la configuration est hérité du framework Cloudmarker.

Tableau de bord

Le JSON indexé dans Elasticsearch via le plugin de stockage Elasticsearch peut être utilisé pour générer un tableau de bord dans Kibana.

Contribuer

[S'il vous plaît !] Nous recherchons tout type de contribution pour améliorer les fonctionnalités principales et la documentation de CureIAM. En cas de doute, faites une PR !

Crédits

Équipe de sécurité produit Gojek ❤️

Demo

<>

=============

NOUVELLES MISES À JOUR Mai 2023 0.2.0

Refactorisation

  • Découpage du grand code en plusieurs petites fonctions
  • Déplacement de tous les plugins dans le dossier plugins : Esstore, files, Cloud et GCP.
  • Ajout de correctifs pour les problèmes de division par zéro
  • Migration vers la nouvelle version majeure d'Elastic
  • Changement de la configuration dans le fichier CureIAM.yaml
  • Testé avec Python version 3.9.X

Mises à jour des bibliothèques

Ajout de la version dans la bibliothèque pour éviter tout problème de rétrocompatibilité.

  • Elastic==8.7.0 # previously 7.17.9
  • elasticsearch==8.7.0
  • google-api-python-client==2.86.0
  • PyYAML==6.0
  • schedule==1.2.0
  • rich==13.3.5

Fichiers Docker

  • Ajout de Docker Compose pour un Elastic local et Kibana dans elastic
  • Ajout de .env-ex Renommez .env-ex en .env avant d'exécuter Docker
root@kitploit:~
Running docker compose: docker-compose -f docker_compose_es.yaml up 

Fonctionnalités

  • Ajout de la capacité d'exécuter une analyse sans appliquer la recommandation. Par défaut, si mode_scan est faux, mode_enforce ne s'exécutera pas.
root@kitploit:~
      mode_scan: true
      mode_enforce: false
  • Désactivation temporaire de la fonction e-mail.
Télécharger l’outil