Video summary
Designing an IAM Strategy for your Engineering Platform -
Main summary
Key takeaways
Overview
Henry (developer & architect from the Netherlands) shares a case-study style IAM strategy based on lessons learned from real customers over ~2.5 years (four different customers).
The talk focuses on moving from complex, hard-to-change access models toward a design that:
- Improves engineer productivity
- Remains audit/compliance-friendly
- Starts with ISO 27001 requirements
Core problem / challenge
IAM often forces a trade-off between:
- Engineers need to start working on day one (fast onboarding of access).
- Organizations must ensure people only have the access they need (governance, review, audit, approvals).
Failure modes by organization size
Large enterprises (e.g., ~10,000 engineers)
- Access via Entra ID groups / group nesting becomes extremely complex.
- Group membership grows over time; permissions aren’t effectively “refueled” (re-evaluated).
- Access reviews may exist, but effective permissions are hard to predict due to nesting and rarely-reviewed structures.
- Refactoring stalls because changes to authorization structures create unintended side effects (“it grows over time”).
Small organizations (e.g., ~10 engineers)
- Everything is reactive: “give Henry database access because we trust him.”
- Little to no governance, review, or auditing—access tends to become permanent.
Key design principles (what the system must achieve)
- Engineer productivity: access should be easy to request and obtain.
- Provability / auditability: explain who has what access and why.
- Approval responsibility
- Access should be decided by the asset/product owner (or responsible manager), not a generic centralized admin.
- The speaker frames this as an organizational/business-risk decision, not “admin-only” decision-making.
- The solution must be:
- Explainable to engineers
- Extensible
- Compliant, starting with ISO 27001
The “three ingredients” solution (Microsoft-focused)
- Microsoft Entra ID Privileged Identity Management (PIM)
- Microsoft Entra ID Access Packages
- A custom design layer: a role × product scoped access model
The speaker notes this can be adapted to other IAM stacks, but the demo/implementation is in Entra ID, Azure DevOps, and Azure.
Ingredient 1: PIM recap (security pattern)
With PIM, users are typically eligible for a privileged role, but must activate it to gain the privileges.
Benefits emphasized
- Reduced blast radius: privileges aren’t automatically active if credentials are misused.
- Additional activation conditions, such as:
- MFA
- Device compliance
- Authentication context labels
Demo highlights
- Protecting roles like Global Administrator
- Enforcing MFA for activation (MFA cannot be disabled in the demo context)
- Using authentication context labels with conditional access to require conditions like:
- Compliant device
- Corporate network
Approval flow
- Requests become pending approval
- Standing admins can approve requests and include a reason for auditing
Whether approvals can be required 24/7 is a business decision (risk vs. speed), not purely technical.
Ingredient 2: Access Packages (governed bundles of authorizations)
Access Packages are defined as a named bundle of authorizations plus governance about using them.
What Access Packages can include
They can grant things like:
- Group membership
- Group ownership
- App roles / app permissions
- (Speaker includes SharePoint in examples)
- Access packages can include Entra ID roles (noted as a later update)
Governance includes
- Request rules (e.g., ticket number, manager approval, approval by members of a group)
- Approval rules and stages (speaker advises against too many)
- Lifecycle rules (e.g., requiring periodic access reviews)
- Expiration/recertification patterns
- Speaker prefers access review/refueling rather than “auto-expiring” blindly
Licensing notes
- Access Packages require Entra ID P2 (as mentioned by the speaker).
- Some capabilities require Entra ID Governance licensing; otherwise it may still work indirectly via groups.
Demo highlights
- Creating an access package (name/description)
- Adding resources (group membership, app/API permissions)
- Configuring self-service requests via myaccess.microsoft.com, including approvals/denials
Ingredient 3 (main architecture): role × product scoped access packages
This is the core “design” effort.
Organizational constructs used
- Every person should have a clearly defined role, e.g.:
- Product Owner
- Engineer (with a critical distinction—see below)
- Stakeholder / others (want/need visibility but not change)
Engineer split: non-production vs production
The design separates for engineers:
- Production work / exceptional privileges (when something is broken and needs manual intervention)
- Non-production day-to-day work
Claim: you shouldn’t be both simultaneously; privilege is temporary/conditional.
Product scoping / “long-lived assets”
- Access governance is aligned to products (long-lived software/IT products), not ad-hoc projects.
- The design proposes one access package per combination of role and product.
Authorizations mapped using Entra ID groups
A deliberate pattern:
- Create Entra ID groups named by:
- Product scope
- Target system (e.g., Azure DevOps vs Azure)
- Authorization type
- When an access package is approved, it grants group membership.
- Target systems use those groups to enforce permissions.
Example flow: “All Products Administrator”
- Approved access package → user becomes member of Entra ID groups
- Entra ID: global administrator role assignment (often eligible via PIM)
- Azure DevOps: project collection administrator permissions via group membership
- Azure: root management group owner permissions via group membership
- Also uses a bootstrap approver/reviewer group:
- People responsible for approvals are included in an “approver” group
- Product owners can delegate review/approval for their product
Mapping the role model into real engineering permissions
For each product, different access packages map to permissions such as:
-
Product Owner
- Approval rights
- Often needs cost visibility (speaker notes product owners “always want to know what stuff costs”)
-
Stakeholder
- Typically read-only (visibility into repositories/work items/pipelines but no change rights)
-
Engineer (non-production)
- More permissive in non-production (e.g., contributor on appropriate scopes)
-
Engineer (production)
- Owner-level permissions on production subscriptions
- Framed as deliberate and time-bound/exceptional
- Speaker argues production owner rights should be rare—only when “stuff hits the fan,” because owner rights are risky
Key Azure DevOps / Azure assumptions in the design
- Prefer one team project in Azure DevOps to reduce cross-project complexity.
- Prefer subscription per workload/deployment (a “subscription democratization” model).
- Use contributor vs owner carefully:
- Non-production engineers get contributor (can change, but not grant access freely).
- Production engineers are given owner to enable emergency remediation when permission breaks occur.
Results / experiences (what worked and what didn’t)
Positive outcomes
- Product owners decide access (key governance/pet peeve solved).
- Engineer onboarding speed:
- New engineers can request multiple access packages quickly
- Setup can happen within minutes
- Auditability and audit record quality:
- Decisions are tied to access packages and PIM flows
- Includes recorded reasons
- Privilege escalation is controlled and still requires justification.
- Access reviews are enforced via tooling (replacing manual Excel-based workflows).
Issues / limitations observed
-
Review results aren’t immediate
- During the review window, revocations may not apply until the end
- Example: access that needed revocation wasn’t effective yet; PO “paused” extension instead of recognizing timing effects
-
Multiple reviewers confusion
- A deputy PO may take over during absences
- The original PO may not later see what happened
-
App registration access not fully supported as a resource
- Some access types (e.g., app registrations) still require manual steps due to inability to assign group as owner
-
Effective-time revocation delay
- Revocations may not apply instantly
- Requires additional operational time to fully remove access
Main speakers / sources (as requested)
- Main speaker: Henry
- Developer & architect from the Netherlands
- Presenter and identity/IAM strategist for engineering platforms
- Primary referenced product/features: Microsoft Entra ID
- Specifically Privileged Identity Management (PIM) and Access Packages
- Integrated into Azure and Azure DevOps