Thanks to visit codestin.com
Credit goes to github.com

Skip to content
forked from kayasax/EasyPIM

EasyPIM let you manage PIM Azure Resource, Entra Role and Groups settings and assignments with simplicity

License

Notifications You must be signed in to change notification settings

jeevanions/EasyPIM

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ›‘ EasyPIM - Enterprise Privileged Identity Management Automation

PSGallery Version PSGallery Downloads

Orchestrator Version Orchestrator Downloads

GitHub Stars License GitHub Issues


πŸ’‘ Transform Azure PIM Management with Powerful Automation

EasyPIM is the most comprehensive PowerShell automation platform for Microsoft Privileged Identity Management (PIM). With 50+ specialized cmdlets, EasyPIM transforms complex ARM and Graph API interactions into simple, reliable automation workflows for Azure Resources, Entra ID Roles, and Security Groups.

🎯 What Makes EasyPIM Different

  • ⚑ Comprehensive Coverage: Azure Resources, Entra ID Roles, and Security Groups in one platform
  • πŸ”§ Production-Tested: 50+ cmdlets covering every PIM operation
  • πŸ“Š JSON Orchestration: Define complete PIM configurations declaratively
  • πŸ”„ Multi-Cloud Support: Public, Government, China, Germany clouds
  • 🏒 Enterprise Ready: Powers PIM governance at scale with business rules validation

πŸ’Ό Enterprise Demo: See EasyPIM in production with our Event-Driven Governance showcase


πŸ“‹ Table of Contents


πŸš€ Quick Start

# 1. Install both modules for complete functionality
Install-Module -Name EasyPIM, EasyPIM.Orchestrator -Force

# 2. Import and discover commands
Import-Module EasyPIM, EasyPIM.Orchestrator
Get-Command -Module EasyPIM*

# 3. Start with basic PIM operations
Get-PIMAzureResourcePolicy -TenantID $tenantID -SubscriptionId $subscriptionID -RoleName "reader"

# 4. Try JSON-driven orchestration
Invoke-EasyPIMOrchestrator -TenantId $tenantId -ConfigurationPath "./pim-config.json"

πŸ†• Major Release: EasyPIM v2.0 & Orchestrator v1.0

🎯 What's New

  • πŸ— Module Separation: Clean separation between core PIM operations and orchestration workflows
  • πŸ”§ ARM API Fixes: Resolves InvalidResourceType errors and improves reliability
  • πŸ›‘ Enhanced Validation: Proactive error detection with clear guidance and business rules
  • πŸ“ Standardized Parameters: Consistent naming with backward compatibility aliases
  • 🌍 Multi-Cloud Support: Azure Public, Government, China, Germany clouds

⚠️ Breaking Changes in v2.0

  • Parameter assignee renamed to principalId (backward-compatible alias provided)
  • Orchestration commands moved to separate EasyPIM.Orchestrator module

πŸ”§ Module Architecture

Module Purpose Key Features
EasyPIM (Core) Direct PIM API management 40+ cmdlets for Azure Resources, Entra Roles, Groups
EasyPIM.Orchestrator JSON workflows & governance Configuration drift detection, business rules, CI/CD ready

Migration Guide: step-by-step orchestrator setup


🎯 Key Features

πŸ— Core PIM Management

  • ⚑ Bulk Operations: Edit multiple roles simultaneously with advanced filtering
  • πŸ”„ Role Cloning: Copy settings and assignments between roles/users with validation
  • πŸ“Š CSV Integration: Export/import role configurations with data transformation
  • πŸ›‘ Backup & Restore: Complete PIM state backup with versioning support
  • πŸ“ˆ Activity Reporting: Comprehensive PIM activity analytics and audit trails
  • βœ… Request Management: Approve/deny pending requests with workflow automation

🎯 Advanced Orchestration (EasyPIM.Orchestrator)

  • πŸ— JSON-Driven Workflows: Define complete PIM models (Entra, Azure RBAC, Groups) declaratively
  • πŸ“‹ Policy Drift Detection: Continuous compliance monitoring with automated remediation
  • πŸ›‘ Business Rules Engine: Intelligent validation preventing misconfigurations
  • 🏒 CI/CD Integration: Production-ready automation for GitHub Actions & Azure DevOps
  • πŸ“Š Enterprise Dashboards: Professional monitoring with real-time compliance metrics
  • ⚑ Event-Driven Architecture: Instant responses to configuration changes via Event Grid

🌍 Enterprise Ready

  • ☁️ Multi-Cloud Support: Azure Public, Government, China, Germany environments
  • πŸ›‘ Zero-Trust Security: OIDC authentication, Key Vault integration, no stored secrets
  • πŸ“ Standardized APIs: Consistent parameter naming with backward compatibility
  • 🏒 Production Validated: Powers enterprise PIM governance at scale

🏒 Installation

πŸš€ Quick Install (Recommended)

# Install both modules with latest versions
Install-Module -Name EasyPIM, EasyPIM.Orchestrator -Force -Scope CurrentUser

# Verify installation
Get-Module -Name EasyPIM* -ListAvailable | Select-Object Name, Version

πŸ”§ Getting Started

# Import modules and discover available commands
Import-Module EasyPIM, EasyPIM.Orchestrator
Get-Command -Module EasyPIM* | Measure-Object  # 50+ cmdlets available!

# Quick connectivity test
Connect-AzAccount  # Required for Azure Resource roles
Connect-MgGraph    # Required for Entra ID roles and groups

⚑ Ready for Production?

For enterprise CI/CD automation, explore our Event-Driven Governance Demo showcasing GitHub Actions & Azure DevOps integration.


🎯 Sample Usage & Common Scenarios

Note: EasyPIM manages PIM Azure Resource settings at the subscription level by default. Use the scope parameter for Management Group, Resource Group, or Resource-level management.

πŸ” Policy Discovery & Analysis

# Get configuration of multiple Azure Resource roles
Get-PIMAzureResourcePolicy -TenantID $tenantID -SubscriptionId $subscriptionID -RoleName "reader","contributor","owner"

# Analyze Entra ID role configurations
Get-PIMEntraRolePolicy -TenantID $tenantID -RoleName "Global Administrator","Security Administrator"

πŸ›‘ Security Hardening

# Require MFA, justification, and ticketing for critical Entra roles
Set-PIMEntraRolePolicy -TenantID $tenantID -RoleName "Global Administrator" `
    -ActivationRequirement "Justification","Ticketing","MultiFactorAuthentication" `
    -ActivationDuration "PT4H"

# Configure approval workflow for Azure resource roles
Set-PIMAzureResourcePolicy -TenantID $tenantID -SubscriptionId $subscriptionID `
    -RoleName "Owner","Contributor" `
    -Approvers @(@{"Id"="user-guid";"Name"="John Doe";"Type"="user"}) `
    -ApprovalRequired $true

πŸ‘₯ Assignment Management

# List all eligible assignments for audit
Get-PIMAzureResourceEligibleAssignment -TenantID $tenantID -SubscriptionId $subscriptionID

# Create time-limited active assignment
New-PIMEntraRoleActiveAssignment -TenantID $tenantID -RoleName "Security Reader" `
    -PrincipalId $userGuid -Duration "PT8H" -Justification "Security audit"

πŸ— Enterprise Orchestration

# Deploy complete PIM configuration from JSON
Invoke-EasyPIMOrchestrator -TenantId $tenantId -ConfigurationPath "./pim-config.json"

# Detect and report policy drift
Test-PIMPolicyDrift -TenantId $tenantId -ConfigurationPath "./pim-config.json" -ReportPath "./drift-report.json"

πŸ’‘ More examples available in the documentation


πŸ“š Documentation & Resources

πŸ“– Official Documentation

πŸš€ Getting Started Guides

🏒 Enterprise & Advanced Usage


πŸ”„ Module Architecture & Migration

πŸ— Two-Module Design

Module Purpose Key Commands
EasyPIM (Core) Direct PIM API management Get-PIM*, Set-PIM*, New-PIM*
EasyPIM.Orchestrator JSON-driven workflows, CI/CD Invoke-EasyPIMOrchestrator, Test-PIMPolicyDrift

πŸ“¦ Migrated Commands (v1.x β†’ v2.x)

These commands moved to EasyPIM.Orchestrator for better separation:

  • Invoke-EasyPIMOrchestrator - JSON workflow execution
  • Test-PIMPolicyDrift - Policy compliance monitoring
  • Test-PIMEndpointDiscovery - Connectivity validation

Migration is seamless - legacy shims provide guidance and automatic forwarding where applicable.

πŸ”§ Troubleshooting & Support

⚠️ Common Issues & Solutions

Issue Solution Reference
πŸ” Key Vault Configuration Loading JSON parsing errors with configurations Key Vault Troubleshooting Guide
🚫 ARM API InvalidResourceType Update to latest version, verify permissions ARM API Guide
πŸ”‘ Graph API Permissions Grant required Microsoft Graph permissions Permissions Guide
πŸ”„ Module Import Errors Version conflicts, PowerShell compatibility Installation Guide

πŸ›  Diagnostic Tools

# Enhanced Key Vault diagnostics
Get-EasyPIMConfiguration -Verbose

# Check module versions and compatibility
Get-Module -Name EasyPIM* -ListAvailable | Select-Object Name, Version, PowerShellVersion

# Test connectivity and permissions
Test-PIMEndpointDiscovery -TenantId $tenantId  # Available in EasyPIM.Orchestrator

πŸ†˜ Getting Help

  • πŸ› Report Issues - Bug reports with templates
  • πŸ’¬ Community Discussions - Q&A and feature requests
  • πŸ“§ Enterprise Support - Available for production deployments
  • 🎯 CI/CD Issues - Event-driven governance demo problems

🀝 Contributors & Community

πŸ‘₯ Core Contributors

🌟 Community Support


πŸ“‹ Requirements

πŸ–₯ System Requirements

  • PowerShell: 5.1+ (Windows) or 7.0+ (Cross-platform)
  • Modules: Az.Accounts, Microsoft.Graph.Authentication (auto-installed)
  • Permissions: Azure subscription access + Graph API permissions (see below)

πŸ”‘ Required Permissions

πŸ”΅ Azure Resource Roles (ARM API)

  • Azure Subscription: Owner or User Access Administrator role
  • Consent: Azure Resource Manager API access (automatic)

🟒 Entra ID & Groups (Microsoft Graph API)

Administrator must grant these Microsoft Graph permissions:

β€’ RoleManagementPolicy.ReadWrite.Directory
β€’ RoleManagement.ReadWrite.Directory
β€’ RoleManagementPolicy.ReadWrite.AzureADGroup
β€’ PrivilegedEligibilitySchedule.ReadWrite.AzureADGroup
β€’ PrivilegedAssignmentSchedule.ReadWrite.AzureADGroup
β€’ PrivilegedAccess.ReadWrite.AzureADGroup

🌍 Multi-Cloud Support

  • βœ… Azure Public (default)
  • βœ… Azure Government (AzureUSGovernment)
  • βœ… Azure China (AzureChinaCloud)
  • βœ… Azure Germany (AzureGermanCloud)

Thanks to Chase Dafnis for multi-cloud support!


πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

Built with ❀ for the Azure Administrator Community


⚑ Ready for advanced automation? Explore the Event-Driven Governance Demo for production CI/CD integration!"

About

EasyPIM let you manage PIM Azure Resource, Entra Role and Groups settings and assignments with simplicity

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PowerShell 99.8%
  • HTML 0.2%