Business Problem
IDSentinel Solutions' quarterly security audit flagged a critical gap in its identity governance program: privileged group membership had never been formally reviewed since initial provisioning. GRP-SEC-PrivilegedUsers — granting elevated access to security tooling, audit logs, and sensitive configuration portals — had accumulated 188 members across Security, IT, Legal, Sales, HR, and other departments with no documented recertification and no process to remove access when a member's role changed.
A pre-review Graph API audit confirmed a secondary finding: the manager attribute was unpopulated for all 188 members in Active Directory — a common gap in hybrid environments where AD user objects are provisioned without the Organization tab fully populated — meaning no reviewer routing was possible until remediated.
Risk
- 188-member privileged group unreviewed since provisioning — stale access accumulating across role changes and departures
- No documented approval trail for ongoing group membership
- Manager attribute unpopulated in AD — all review decisions would fall to a single fallback reviewer without remediation
- SOC 2 Type II finding — CC6.3 and CC6.2 non-compliant
- Hybrid limitation: Entra Access Reviews cannot write back removals to AD-synced groups — on-prem remediation required
Scope
| Field | Detail |
|---|---|
| Review target | GRP-SEC-PrivilegedUsers — AD-synced privileged access group |
| Members reviewed | 188 |
| Platform | Microsoft Entra ID Access Reviews (Identity Governance) |
| Cadence | Quarterly — recurring, automated scheduling |
| Reviewer type | Manager of each member (manager approval required) |
| Fallback reviewer | Group owner (Cleveland Oliver) for members without manager set |
| Outcome enforcement | Auto-apply results on review completion |
| Hybrid limitation | Access removal for AD-synced groups requires on-prem AD remediation after review — Entra enforces cloud group state only |
| Compliance target | SOC 2 Type II — CC6.2, CC6.3 |
Solution Design — 3 Workstreams
Group Baseline and Manager Remediation
Graph API audit to document 188-member pre-review state as SOC 2 evidence. Identify and remediate manager attribute gap in AD via PowerShell, sync to Entra via delta sync. Confirm reviewer routing before launch.
Access Review Configuration
Entra ID Access Review configured with quarterly recurrence, manager approval with group owner fallback, auto-apply of review decisions, and justification required for all decisions.
Review Execution and Audit Trail
Execute first review cycle — 188 reviewed, 182 approved, 6 denied. Document hybrid enforcement limitation. Remediate denied members via on-prem AD PowerShell + delta sync. Export audit trail as SOC 2 evidence.

Implementation
-
01
Confirm Group in Entra ID
GRP-SEC-PrivilegedUsers confirmed as an AD-synced Assigned Security group with 188 members. A second cloud-only Dynamic group also exists — the AD-synced Assigned group is the correct target as Dynamic groups cannot be scoped for manager-approval review workflows.
// 01-group-created
-
02
Pre-Review Baseline Audit (Graph API)
Baseline script using
Get-MgGroupMemberAsUserbatch-retrieved all 188 member properties in a single Graph API call — avoiding per-member call timeouts on large groups. CSV exported as the SOC 2 "before" evidence.PowerShell.\scripts\Get-PrivilegedGroupBaseline.ps1
// 02-pre-review-baseline
-
03
Manager Attribute Remediation
Finding: 188/188 members — manager attribute NOT SET. All review items would route to group owner fallback without remediation. Manager attribute set via AD PowerShell and synced to Entra via delta sync. Security department confirmed with manager set; remaining departments route to fallback as expected.
PowerShell — remediate + sync.\scripts\Set-SecurityGroupManagers.ps1 -WhatIf # Preview .\scripts\Set-SecurityGroupManagers.ps1 # Apply Start-ADSyncSyncCycle -PolicyType Delta # Sync to Entra
// 03-manager-verification
-
04
Access Review Configured
Entra ID Access Review configured with quarterly recurrence, manager approval with group owner fallback, auto-apply of review decisions, and justification required for all decisions.
Setting Value Reviewer type Manager of each member Fallback reviewer Group owner (Cleveland Oliver) Frequency Quarterly — perpetual recurring series Duration 14 days Auto apply results Enabled If reviewer doesn't respond Remove access Justification required Yes // 04-access-reviews-portal
// 05-review-scope
// 06-reviewer-config
// 07-recurrence-settings
// 08-auto-enforcement
// 09-review-active
-
05
Review Executed via MyAccess Portal
Reviewer notification email received within minutes of activation. All 188 members reviewed at myaccess.microsoft.com with mandatory justification for each decision — 182 approved, 6 denied. 100% reviewer response rate.
// 10-reviewer-email
// 11a-approval-decision
// 11b-denial-decision
-
06
Hybrid Enforcement Finding and Remediation
- Finding: Review status shows "Results Applied" but member count remains at 188 in Entra
- Root cause: GRP-SEC-PrivilegedUsers is AD-synced — Entra Access Reviews auto-apply cannot remove members from AD-sourced groups
- Lab remediation: 6 denied members removed via AD PowerShell + delta sync. Member count confirmed at 182
- Production path: Automate post-review PowerShell reading denied decisions from Graph API and applying AD group changes, or migrate privileged groups to cloud-only membership
// 12-post-review-membership
-
07
Audit Trail Export + Membership Delta Report
All review decisions, justifications, reviewer identities, and timestamps exported via Graph API. Post-review delta report confirmed: 182 RETAINED, 6 REMOVED, 0 unexpected additions.
// 13-audit-trail-export
// 14-membership-delta
Outcome
Review Results
| Metric | Result |
|---|---|
| Members reviewed | 188 |
| Access approved | 182 |
| Access denied | 6 |
| Non-response | 0 (100% completion rate) |
| Total access removed | 6 |
| Hybrid enforcement gap identified | ✅ Yes — documented |
| On-prem remediation completed | ✅ Yes |
| SOC 2 evidence generated | ✅ CC6.2, CC6.3 |
| Next review scheduled | Q3 2026 (auto-triggered) |
Hybrid Environment Notes
- Manager attribute gap: AD user objects provisioned without the Organization tab populated will have no manager set in Entra ID. In production: enforce manager population as part of the JML joiner process, or use HR system integration to auto-populate the attribute.
- Access Reviews write-back limitation: Entra Access Reviews auto-apply enforcement only works for cloud-native groups. AD-synced groups require a separate on-prem remediation step. In production: automate via post-review PowerShell reading denied decisions from Graph API.
Files
-
scripts/Get-PrivilegedGroupBaseline.ps1Batch member retrieval via Graph API — pre/post baseline audit -
scripts/Set-SecurityGroupManagers.ps1Manager attribute remediation on Domain Controller -
scripts/Export-AccessReviewAuditTrail.ps1Exports all review decisions, justifications, and timestamps via Graph API -
scripts/Get-PostReviewMembershipDelta.ps1Before/after membership comparison using pre-review baseline CSV -
diagrams/access-review-flow.pngAccess review workflow diagram -
evidence/SOC 2 CC6.2/CC6.3 audit trail export and pre/post membership delta CSVs -
screenshots/Evidence of implementation at each stage — group baseline, review configuration, decisions, audit export