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
azpim — Un outil en ligne de commande pour gérer les activations de rôles Azure Privileged Identity Management (PIM) directement depuis votre terminal. | Kitploit
Outils/GitHubGitHub/tapanmeena/azpim
Authentification et AutorisationSécurité de l'Infrastructure CloudScripting et AutomatisationSécurité CloudUtilitaires et FrameworksGestion des Identités et des Accès (IAM)
GitHubtapanmeena/azpim

azpim

Un outil en ligne de commande pour gérer les activations de rôles Azure Privileged Identity Management (PIM) directement depuis votre terminal.

Voir le dépôt
62il y a 6 moisPas encore vérifié

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

Azure PIM CLI (azpim)

Un outil en ligne de commande pour gérer les activations de rôles Azure Privileged Identity Management (PIM) directement depuis votre terminal.

Terminal UI TypeScript npm License

Fonctionnalités

  • 🔐 Activation de rôles - Activez rapidement les rôles Azure PIM éligibles
  • 🔓 Désactivation de rôles - Désactivez les rôles actifs lorsqu'ils ne sont plus nécessaires
  • 📋 Menu interactif - Interface conviviale pilotée par menus
  • ✨ Interface utilisateur soignée - Expérience terminal élégante avec spinners et couleurs
  • 🔄 Support multi-rôles - Activez ou désactivez plusieurs rôles à la fois
  • 📊 Suivi d'état - Retour en temps réel sur l'état d'activation/désactivation
  • 💾 Préréglages - Sauvegardez et réutilisez des configurations d'activation/désactivation
  • ⭐ Favoris - Marquez des abonnements comme favoris pour un accès rapide
  • 🗃️ Cache des abonnements - Mise en cache automatique des abonnements (durée de vie de 6 heures) pour un démarrage plus rapide
  • 🚀 Mode non interactif - Indicateurs CLI pour les scripts et l'automatisation
  • 🔔 Notifications de mise à jour - Vérifications automatiques des mises à jour avec comportement configurable
  • 📤 Sortie JSON - Sortie lisible par machine pour l'intégration avec d'autres outils
  • 👤 Isolation des données par utilisateur - Configuration et cache stockés par identifiant utilisateur Azure

Prérequis

Avant d'utiliser azpim, assurez-vous d'avoir :

  1. Node.js (v18 ou supérieur)
  2. Azure CLI installé et configuré
  3. Compte Azure avec des rôles éligibles PIM

Configuration d'Azure CLI

root@kitploit:~
# Installer Azure CLI (si non installé)
# Voir : https://docs.microsoft.com/fr-fr/cli/azure/install-azure-cli

# Se connecter à Azure
az login

# Vérifier que vous êtes connecté
az account show

Installation

Installation globale (recommandée)

root@kitploit:~
# Avec npm
npm install -g azpim

# Avec pnpm
pnpm add -g azpim

# Avec yarn
yarn global add azpim

Après l'installation, la commande azpim sera disponible globalement.

Migration depuis azp-cli

Si vous utilisiez auparavant azp-cli, vos préréglages sont stockés dans ~/.config/azp-cli/ (ou %APPDATA%\azp-cli\ sous Windows). Pour migrer :

  1. Copiez votre fichier presets.json vers le nouvel emplacement : ~/.config/azpim/ (ou %APPDATA%\azpim\)
  2. Désinstallez l'ancien paquet : npm uninstall -g azp-cli

Depuis les sources (développement)

root@kitploit:~
# Cloner le dépôt
git clone https://github.com/tapanmeena/azpim.git
cd azpim

# Installer les dépendances
pnpm install

# Compiler le projet
pnpm build

# Lier globalement pour le développement
npm link

Utilisation

Lancer l'interface en ligne de commande

root@kitploit:~
# Après installation globale
azpim

# Ou avec des commandes spécifiques
azpim activate
azpim deactivate
azpim preset list
azpim update

# Mode développement (depuis les sources)
pnpm dev

Commandes

Indicateurs globaux :

  • --debug - Activer les logs de débogage
  • --version - Afficher le numéro de version

Sous-commandes de préréglage

Sous-commandes de favoris

Mises à jour

Vous pouvez vérifier si une nouvelle version est disponible :

root@kitploit:~
azpim update
# alias
azpim upgrade

Remarques :

  • azpim update se termine avec le code 0 si à jour, 2 si une mise à jour est disponible, et 1 en cas d'erreur.
  • --check-only - Seulement vérifier et afficher l'état sans montrer les instructions de mise à niveau.
  • --output json renvoie une réponse structurée adaptée aux scripts.
  • Par défaut, azpim activate et azpim deactivate afficheront également un bref indicateur de mise à jour disponible (mode texte uniquement) au maximum une fois par jour.
  • Désactivez les vérifications de mise à jour via AZPIM_NO_UPDATE_NOTIFIER=1 (ou AZPIM_DISABLE_UPDATE_CHECK=1).

Le cache de vérification des mises à jour est stocké avec les préréglages dans votre répertoire de configuration :

  • macOS/Linux : ~/.config/azpim/update-check.json (ou $XDG_CONFIG_HOME/azpim/update-check.json)
  • Windows : %APPDATA%\azpim\update-check.json

Mode non interactif (automatisation)

Utilisez des indicateurs pour activer ou désactiver des rôles PIM directement sans passer par le menu interactif, parfait pour les scripts et les workflows CI/CD.

Exemples d'activation

root@kitploit:~
# Activer un seul rôle par nom (non interactif)
azpim activate --non-interactive --yes \
   --subscription-id <SUBSCRIPTION_GUID> \
   --role-name "Owner" \
   --duration-hours 2 \
   --justification "Intervention d'urgence pour incident" \
   --output json

# Activer plusieurs rôles (répéter --role-name)
azpim activate --non-interactive --yes \
   --subscription-id <SUBSCRIPTION_GUID> \
   --role-name "Contributor" \
   --role-name "User Access Administrator"

# Si un nom de rôle correspond à plusieurs rôles éligibles (différentes portées),
# --non-interactive générera une erreur sauf si vous autorisez explicitement l'activation de toutes les correspondances
azpim activate --non-interactive --yes \
   --subscription-id <SUBSCRIPTION_GUID> \
   --role-name "Contributor" \
   --allow-multiple

# Aperçu de ce qui se passerait sans soumettre les demandes
azpim activate --non-interactive --dry-run \
   --subscription-id <SUBSCRIPTION_GUID> \
   --role-name "Contributor" \
   --output json

Exemples de désactivation

root@kitploit:~
# Désactiver des rôles spécifiques
azpim deactivate --non-interactive --yes \
   --subscription-id <SUBSCRIPTION_GUID> \
   --role-name "Owner" \
   --justification "Tâche terminée"

# Désactiver sur tous les abonnements (omettre subscription-id)
azpim deactivate --non-interactive --yes \
   --role-name "Contributor" \
   --allow-multiple

Indicateurs disponibles

Indicateurs communs (activate/deactivate) :

  • --non-interactive - Désactiver les invites interactives
  • -y, --yes - Ignorer les invites de confirmation
  • --subscription-id <id> - Abonnement cible (optionnel pour deactivate)
  • --role-name <name> - Nom(s) du rôle cible (peut être répété)
  • --allow-multiple - Autoriser plusieurs correspondances de rôles
  • --dry-run - Aperçu sans soumettre
  • --output <text|json> - Format de sortie (défaut : text)
  • --quiet - Supprimer les sorties non essentielles

Spécifiques à l'activation :

  • --duration-hours <n> - Durée (1-8 heures, défaut variable selon le rôle)
  • --justification <text> - Justification pour l'activation

Spécifiques à la désactivation :

  • --justification <text> - Justification pour la désactivation (optionnelle)

Préréglages

Les préréglages vous permettent de sauvegarder vos routines d'activation/désactivation quotidiennes (abonnement + noms de rôles + durée + justification) et de les réutiliser avec --preset <nom>.

Emplacement du fichier de préréglages

Par défaut, les préréglages sont stockés dans un fichier de configuration par utilisateur :

  • macOS/Linux : ~/.config/azpim/presets.json (ou $XDG_CONFIG_HOME/azpim/presets.json)
  • Windows : %APPDATA%\azpim\presets.json

Surcharger l'emplacement avec :

  • AZPIM_PRESETS_PATH=/chemin/vers/presets.json

Contenu d'un préréglage

Un préréglage peut définir un ou les deux blocs :

  • activate : subscriptionId, roleNames[], durationHours, justification, allowMultiple
  • deactivate : subscriptionId (optionnel), roleNames[], justification, allowMultiple

justification prend en charge des modèles simples :

  • ${date} → YYYY-MM-DD
  • ${datetime} → horodatage ISO
  • ${userPrincipalName} → résolu via Microsoft Graph /me

Workflows courants

root@kitploit:~
# Créer un préréglage (assistant interactif)
azpim preset add daily-ops

# Créer un préréglage avec intégration Azure (récupère abonnements/rôles)
azpim preset add daily-ops --from-azure

# Modifier un préréglage (assistant interactif)
azpim preset edit daily-ops

# Lister tous les préréglages
azpim preset list

# Afficher les détails d'un préréglage
azpim preset show daily-ops

# Supprimer un préréglage
azpim preset remove daily-ops

# Utiliser un préréglage (les indicateurs remplacent toujours les valeurs du préréglage)
azpim activate --preset daily-ops --yes

# Exécution non interactive utilisant le préréglage
azpim activate --preset daily-ops --non-interactive --yes --output json

# Désactiver en utilisant un préréglage
azpim deactivate --preset daily-ops --non-interactive --yes

Préréglages par défaut

Lorsque vous créez un préréglage via azpim preset add, vous pouvez éventuellement le définir comme défaut pour activate et/ou deactivate.

  • Les préréglages par défaut sont appliqués automatiquement lorsque vous exécutez des flux en un coup et que vous n'avez pas explicitement fourni les indicateurs requis.
  • Exemple : après avoir défini un préréglage d'activation par défaut, azpim activate --non-interactive --yes peut fonctionner sans spécifier --subscription-id/--role-name.

Exemple de session

root@kitploit:~
╔════════════════════════════════════════════════════╗
║      Azure PIM CLI - Gestionnaire d'activation     ║
╚════════════════════════════════════════════════════╝

✔ Authentification réussie

┌─ Informations utilisateur ──────────────────────────
│ Nom : John Doe
│ Email : [email protected]
└──────────────────────────────────────────────────────

✔ 3 abonnement(s) trouvé(s)

? Que souhaitez-vous faire ?
❯ ▶ Activer un/des rôle(s)
  ◼ Désactiver un/des rôle(s)
  ✕ Quitter

Flux d'activation de rôle

  1. Sélectionnez un abonnement parmi vos abonnements Azure disponibles
  2. Choisissez un ou plusieurs rôles éligibles à activer
  3. Spécifiez la durée d'activation (1-8 heures)
  4. Fournissez une justification pour l'activation
  5. Confirmez et activez

Flux de désactivation de rôle

  1. Affichez tous les rôles actuellement actifs sur tous les abonnements
  2. Sélectionnez les rôles à désactiver
  3. Confirmez la désactivation

Favoris

Les favoris vous permettent de marquer des abonnements spécifiques pour un accès rapide. Les abonnements favoris sont affichés en haut des listes d'abonnements dans le menu interactif.

Emplacement du fichier de favoris

Par défaut, les favoris sont stockés par utilisateur :

  • macOS/Linux : ~/.config/azpim/users/<userId>/favorites.json
  • Windows : %APPDATA%\azpim\users\<userId>\favorites.json

Surcharger l'emplacement avec :

  • AZPIM_FAVORITES_PATH=/chemin/vers/favorites.json

Workflows courants

root@kitploit:~
# Lister tous les favoris
azpim favorites list
azpim fav list

# Ajouter un abonnement aux favoris
azpim favorites add <subscription-id>

# Ajouter même si l'abonnement n'est pas dans le cache
azpim favorites add <subscription-id> --force

# Supprimer un abonnement des favoris
azpim favorites remove <subscription-id>

# Effacer tous les favoris
azpim favorites clear

# Exporter les favoris vers un fichier
azpim favorites export ./my-favorites.json

# Importer les favoris depuis un fichier (remplace les existants)
azpim favorites import ./my-favorites.json

# Importer les favoris et fusionner avec les existants
azpim favorites import ./my-favorites.json --merge

# Actualiser le cache des abonnements
azpim favorites refresh

Cache des abonnements

azpim met automatiquement en cache les informations d'abonnement pour améliorer le temps de démarrage. Le cache a une durée de vie (TTL) de 6 heures et est automatiquement actualisé à l'expiration.

Emplacement du cache

Les fichiers de cache sont stockés par utilisateur :

  • macOS/Linux : ~/.config/azpim/users/<userId>/subscriptions-cache.json
  • Windows : %APPDATA%\azpim\users\<userId>\subscriptions-cache.json

Actualiser le cache

root@kitploit:~
# Forcer l'actualisation du cache des abonnements
azpim favorites refresh

Développement

Scripts disponibles

root@kitploit:~
# Exécuter en mode développement avec rechargement à chaud
pnpm dev

# Compiler le projet TypeScript
pnpm build

# Exécuter l'application compilée
pnpm start

# Analyser le code source
pnpm lint

Journal des modifications et versions

Ce dépôt utilise le format Keep a Changelog dans CHANGELOG.md.

Messages de commit recommandés

Pour de meilleurs résultats, utilisez les Conventional Commits :

  • feat: ... (nouvelle fonctionnalité) → version mineure
  • fix: ... (correction de bug) → version correctif
  • chore: ..., docs: ..., refactor: ... (pas de version sauf breaking change)

Créer une version

  1. Assurez-vous que CHANGELOG.md contient des entrées à jour sous Unreleased.

  2. Exécutez l'une des commandes suivantes :

root@kitploit:~
# Détermine automatiquement la prochaine version à partir des commits, met à jour CHANGELOG.md,
# incrémente package.json et crée un tag git.
pnpm release

# Aperçu de ce qui changerait
pnpm release:dry

# Forcer une version spécifique si nécessaire
pnpm release -- --release-as patch
pnpm release -- --release-as minor
pnpm release -- --release-as major
  1. Poussez les commits + tags :
root@kitploit:~
git push --follow-tags
  1. Publier sur npm (si souhaité) :
root@kitploit:~
npm publish
# ou
pnpm publish

Structure du projet

root@kitploit:~
azpim/
├── src/
│   ├── index.ts                        # Point d'entrée CLI et définitions des commandes
│   ├── core/                           # Utilitaires fondamentaux (pas de logique métier)
│   │   ├── constants.ts                # Valeurs magiques partagées et valeurs par défaut
│   │   ├── errors.ts                   # Utilitaires unifiés de gestion d'erreurs
│   │   ├── json-store.ts              # Persistance générique de fichiers JSON
│   │   ├── paths.ts                    # Résolution des chemins de fichiers de configuration/données
│   │   └── ui.ts                       # Interface terminal (spinners, formatage, couleurs)
│   ├── azure/                          # Wrappers autour du SDK Azure
│   │   ├── auth.ts                     # Authentification Azure CLI + recherche Graph /me
│   │   └── azure-pim.ts               # API d'activation/désactivation des rôles PIM
│   ├── data/                           # Persistance locale des données
│   │   ├── favorites.ts               # Gestion des favoris
│   │   ├── presets.ts                  # Configuration et validation des préréglages
│   │   ├── subscription-cache.ts      # Cache des abonnements (durée de vie 6 heures)
│   │   └── update-check.ts            # Système de notification de mise à jour
│   └── cli/                            # Flux interactifs et échafaudage de commandes
│       ├── cli.ts                      # Boucle de menu principale et aides partagées
│       ├── command-handler.ts         # Wrapper de commande réutilisable (authentification, UI, erreurs)
│       ├── activate-flow.ts           # Activation de rôle (ponctuelle + interactive)
│       ├── deactivate-flow.ts         # Désactivation de rôle (ponctuelle + interactive)
│       ├── subscription-selector.ts   # Recherche/sélection d'abonnements avec favoris
│       ├── favorites-manager.ts       # Menu interactif de gestion des favoris
│       └── presets-cli.ts             # Assistants d'ajout/modification/gestion de préréglages
├── package.json
├── tsconfig.json
├── CHANGELOG.md
└── README.md

Architecture

La base de code suit une structure modulaire en couches :

  • core/ — Utilitaires sans dépendance partagés dans tout le projet. json-store.ts fournit un modèle de chargement/sauvegarde générique utilisé par tous les fichiers de persistance de données. errors.ts centralise l'extraction des erreurs et la gestion des erreurs au niveau des commandes. constants.ts élimine les valeurs magiques.
  • azure/ — Wrappers fins autour des SDK Azure (@azure/identity, @azure/arm-authorization) et un appel léger à Microsoft Graph /me via fetch natif. Aucune logique d'interface utilisateur.
  • data/ — Persistance locale des fichiers (favoris, préréglages, cache des abonnements, état de mise à jour). Tous utilisent json-store pour des entrées/sorties fichier cohérentes.
  • cli/ — Flux interactifs orientés utilisateur et échafaudage de commandes. fournit un wrapper qui élimine le code standard (authentification, configuration de l'interface utilisateur, gestion des erreurs) pour toutes les commandes Commander. Les flux d'activation et de désactivation partagent une fonction depuis .

Stack technique

  • TypeScript - JavaScript typé sécurisé
  • Commander.js - Framework CLI
  • Inquirer.js - Invites interactives
  • Ora - Spinners de terminal élégants
  • Chalk - Stylisation des chaînes de terminal
  • Azure SDK - Intégration des services Azure

Variables d'environnement

Dépannage

Erreur "Azure CLI introuvable"

Assurez-vous qu'Azure CLI est installé et accessible dans votre PATH :

root@kitploit:~
az --version

Erreurs d'authentification

  1. Assurez-vous d'être connecté à Azure CLI :

    root@kitploit:~
    az login
    
  2. Vérifiez que votre compte possède des rôles éligibles PIM :

    root@kitploit:~
    az account show
    
  3. Vérifiez que vous disposez des autorisations nécessaires dans Azure AD

Aucun abonnement trouvé

  • Vérifiez que votre compte Azure a accès à des abonnements
  • Essayez d'actualiser votre connexion Azure CLI : az login --refresh

Licence

Ce projet est sous licence ISC.

Auteur

Tapan Meena - [email protected]

Contribution

Les contributions sont les bienvenues ! N'hésitez pas à soumettre une demande de tirage (Pull Request).

  1. Forkez le dépôt
  2. Créez votre branche de fonctionnalité (git checkout -b feature/amazing-feature)
  3. Commitez vos modifications (git commit -m 'Add some amazing feature')
  4. Poussez la branche (git push origin feature/amazing-feature)
  5. Ouvrez une Pull Request
Télécharger l’outil
CommandeAliasDescription
activateaActiver un rôle dans Azure PIM (par défaut)
deactivatedDésactiver un rôle dans Azure PIM
preset-Gérer les préréglages réutilisables
favoritesfavGérer les abonnements favoris
check-updateupdate, upgradeVérifier la disponibilité d'une nouvelle version
help-Afficher les informations d'aide
CommandeDescription
preset listLister tous les préréglages disponibles
preset showAfficher les détails d'un préréglage spécifique
preset addAjouter un nouveau préréglage (assistant interactif)
preset editModifier un préréglage existant (assistant interactif)
preset removeSupprimer un préréglage
CommandeDescription
favorites listLister tous les abonnements favoris
favorites addAjouter un abonnement aux favoris
favorites removeSupprimer un abonnement des favoris
favorites clearEffacer tous les favoris
favorites exportExporter les favoris vers un fichier
favorites importImporter les favoris depuis un fichier
favorites refreshActualiser le cache des abonnements
command-handler.ts
withCommandHandler
selectSubscriptionInteractive
subscription-selector.ts
VariableDescription
AZPIM_PRESETS_PATHSurcharger le chemin du fichier de préréglages
AZPIM_FAVORITES_PATHSurcharger le chemin du fichier de favoris
AZPIM_NO_UPDATE_NOTIFIERMettre à 1 pour désactiver les vérifications automatiques de mise à jour
AZPIM_DISABLE_UPDATE_CHECKAlias pour AZPIM_NO_UPDATE_NOTIFIER