Skip to main content

Creating a PIM Framework That Works


Is your organization rolling out Privileged Identity Management (or PIM)? If you haven't already, you're probably in the same boat as a lot of organizations. Rolling out Privileged Identity Management isn't about another checkbox, it's a shift towards strengthening access, accountability, and agility. With this in mind, I wanted to give you an effective strategy to begin your journey into PIM and provide some insights from my experience.

Discovery and Assessment

  • Take stock of the current roles that are active within your tenant already across the applications, from Entra ID itself, to Azure and your Microsoft 365 apps.

  • Once you have your inventory of roles gathered, determine who has access and why - are there any roles that are no longer needed? Is the role necessary if a lesser role can achieve the same task? Check for overprivileged accounts.

  • Identify high-risk roles such as Global Administrator, Exchange Administrator, etc.

  • Identify service principals and applications that have high-risk permissions.

  • Review existing access governance controls and determine if they are still effective or need adjustment.

Design and Planning

  • Define who and what requires elevation such as break glass accounts, routine administrative tasks, etc.

  • Consider a tiered-approach model for assigning roles, assigning roles that have the greatest risk to the more trustworthy and experienced personnel.

  • Where possible, set group-based eligibility and filter based on Administrative Units.

  • Create workflows for who will approve, the conditions for approval, and turnaround time for assigning PIM roles.

  • Ensure that parameters such as MFA and justification are enabled for said roles.

Build

  • Enable PIM for Entra roles, Azure roles, and PIM within groups.

  • Configure role settings such as time bound access, approval requirements, and designate who will be notified when PIM roles are activated.

  • Integrate Conditional Access to control who can assign PIM roles and on what devices, IP ranges, etc.

  • Ensure clear naming conventions for audit logs to provide clarity should review be required.

Rollout

  • Anticipate questions and problems ahead of time, think of ways that people can get stuck and begin resolving now so that you are prepared for later.

  • Build a proper change management plan and training material, ensure that all stakeholders are aware of this change and their roles as well as responsibilities.

  • Create an emphasis on why PIM matters and it's contribution to the overall security posture of the organization.

  • Start with IT admins and security teams and iron out any pain points.

  • Gather feedback on usability and any impediments that can affect workflows.

Monitor and Evaluate

  • Enable alerts for unusual elevation patterns (e.g., after-hours, repeated activations)

  • Run access reviews regularly to validate eligibility and usage

  • Audit activation logs for justification quality and policy compliance

  • Refine policies based on behavior and feedback

  • Report to stakeholders with meaningful metrics (e.g., reduced standing access, approval rates)

And that's the jist of it. These tidbits will help you to build a solid foundation on getting PIM started in your organization! Perhaps I'll build another tool specifically around this framework, if you'd like that let me know and I'll eventually get around to it. Until next time friends!






test

Using Power Automate to Update Contact Information

 We've all been there- you have a large organization who has out-of-date contact information. What do you do? You could go around to each department and ask them nicely to update their information, or send out an org-wide email prompting people to do so. However, this is tedious and oftentimes a pointless task. By the time you update one department, you're running to fix another. What if you could put the power back in the department's hands to do so? This is a struggle I faced recently as I was trying to find was I could conjure up some updated contact information for each department. As I did my research, I found that I was not alone in this endeavour as it seems that many IT professionals would love to make this process a little bit less painful. With this in mind, I introduce to you my latest flow! This flow will allow you to encourage users to update their contact information, without the overhead that comes with manual effort. In addition to this, this flow utilizes t...

Using Custom Connectors and Microsoft Graph API's to Manage Licenses in Power Automate - Part Two

Hello again! Didn't I promise you that I'd be back to wrap this up? Well, here I am to give you the second tidbit of information that you need to get this started. If you haven't already, take a look at my previous post where I go into depth about creating a custom connector in Power Automate to retrieve the latest sign-in and also gather the user's licenses. Now that we have the custom connector ready, we can now get into the meat n' potatoes of this series. In this post, I will show you the flow that makes this possible and how you can use the custom connector you have created to tie it all together! Hope you enjoy. Understanding the Logic Before we can begin creating the flow, we should first understand how the flow will work. I designed this to flow to be triggered manually, but you may want to schedule it or use another trigger. The trigger will depend on your organization's policies, so please adjust accordingly. Once triggered, the flow will use the Entra...

Using Custom Connectors and Microsoft Graph API's to Manage Licenses in Power Automate - Part One

Happy June folks! I come to you with another post, but this time I wanted to change it up and show you something else I have just finished working on. As a SysAdmin, one of the most common issues we run into is managing licenses. Working at a post-secondary institution makes this an even greater challenge, as you have both students, staff and faculty constantly coming as well as going. Managing to keep up with this constant change can introduce great administrative overhead which takes away time from important upkeep of other systems and initiatives. You may also notice this same issue in large corporations or in other government organizations. To help combat this, I wanted to create a flow that can do the following: Get the user and their licenses Determine their last sign-in and the date Conditional to determine if the user is past the "cutoff" date Remove the user from a group where the license is assigned The only problem with doing this is that Power Automate does not ha...