PowerShell automation for Azure Privileged Identity Management.
--- Bulk-harden role policies. Clone settings across roles. Export assignments. Detect configuration drift. Approve or deny requests. Deploy full PIM models from JSON. **One PowerShell module covering Azure Resources, Entra ID Roles, and Security Groups** โ with cmdlets that do what the portal can't. Unified ARM and Graph APIs, 50+ commands, 4 Azure clouds. > ๐ **Start here โ** The **[EasyPIM Adoption Hub](https://kayasax.github.io/EasyPIM/)** walks you from first install to enterprise-grade PIM governance in three stages. ## ๐ Quick Start ```powershell Install-Module EasyPIM, EasyPIM.Orchestrator -Force # Harden 3 Entra roles in one shot โ try that in the portal Set-PIMEntraRolePolicy -TenantID $tenantId ` -RoleName "Global Administrator","Security Administrator","Exchange Administrator" ` -ActivationRequirement "Justification","Ticketing","MultiFactorAuthentication" ` -ActivationDuration "PT4H" # Audit every eligible assignment across a subscription Get-PIMAzureResourceEligibleAssignment -TenantID $tenantId -SubscriptionId $subId # Deploy a full PIM model from JSON โ Entra + Azure + Groups in one run Invoke-EasyPIMOrchestrator -TenantId $tenantId -ConfigurationPath "./pim-config.json" ``` --- ## โจ Things The Portal Can't Do | | | |---|---| | โก **Bulk-harden roles** | Set MFA + justification + ticketing on 30 roles in one command | | ๐ **Clone role settings** | Copy a hardened policy to other roles/users โ no manual re-clicking | | ๐ **Export & import** | Assignments to CSV, full configs to JSON โ audit-ready in seconds | | ๐ **Detect policy drift** | Compare live state vs declared config, get a diff report | | ๐ข **CI/CD governance** | GitHub Actions & Azure DevOps ([Event-Driven Demo](https://github.com/kayasax/EasyPIM-EventDriven-Governance)) | | โ๏ธ **Multi-cloud** | Public, Government, China, Germany โ same cmdlets everywhere | | ๐ **Unified ARM + Graph** | One module abstracts both APIs โ no context-switching | --- ## ๐ฆ Install ```powershell Install-Module EasyPIM, EasyPIM.Orchestrator -Scope CurrentUser ``` | Requirement | Details | |---|---| | PowerShell | 5.1+ or 7.0+ | | Modules | `Az.Accounts`, `Microsoft.Graph.Authentication` (auto-installed) | | Azure Resources | `Owner` or `User Access Administrator` on the subscription | | Entra ID / Groups | Graph permissions: `RoleManagement.ReadWrite.Directory`, `RoleManagementPolicy.ReadWrite.Directory`, and [others](https://github.com/kayasax/EasyPIM/wiki/Documentation) | --- ## ๐ Learn More | | | |---|---| | **[๐ Adoption Hub](https://kayasax.github.io/EasyPIM/)** | **Three-stage journey: quick-starts, best practices, enterprise patterns** | | [๐ Full Documentation](https://github.com/kayasax/EasyPIM/wiki/Documentation) | In-depth guides and API reference | | [๐ฏ Use Cases & Examples](https://github.com/kayasax/EasyPIM/wiki/Use-Cases) | Real-world implementation scenarios | | [๐ Orchestrator Guide](https://github.com/kayasax/EasyPIM/wiki/Invoke%E2%80%90EasyPIMOrchestrator-step%E2%80%90by%E2%80%90step-guide) | JSON-driven workflows step-by-step | | [๐ Migration v1โv2](https://github.com/kayasax/EasyPIM/wiki/Module-Migration) | Upgrading from v1.x | | [๐ Changelog](https://github.com/kayasax/EasyPIM/wiki/Changelog) | Version history | --- ## ๐ง Two Modules, One Platform | Module | Purpose | Key Commands | |---|---|---| | **EasyPIM** (Core) | Direct PIM API management โ policies, assignments, approvals | `Get-PIM*`, `Set-PIM*`, `New-PIM*` | | **EasyPIM.Orchestrator** | JSON workflows, drift detection, business rules, CI/CD | `Invoke-EasyPIMOrchestrator`, `Test-PIMPolicyDrift` |
Built with โค๏ธ for the Azure Administrator Community
Also by the author: EasyTCM โ M365 tenant config drift detection