Verification & Testing: Control 1.18 — Application-Level Authorization and RBAC
Last Updated: April 2026 Estimated Time: 2–3 hours per environment (Zone 3); 30–60 minutes (Zone 1/2) Cadence: Quarterly (Zone 3), semi-annual (Zone 2), annual (Zone 1), plus ad-hoc on role-change events
Purpose
This playbook is the auditor-facing verification procedure for Control 1.18. It is structured for FINRA Rule 4511 / 3110 supervisory review, SEC 17a-4 examination evidence, and SOX 404 ICFR walkthroughs. Every test produces an artifact that can be filed in the control evidence repository.
Pair with the bootstrap script. The PowerShell
Validate-Control-1.18.ps1script confirms the bootstrap (groups + PIM eligibility). The portal-based tests in this playbook confirm the runtime enforcement of Dataverse roles, column security, agent action consent, and connected-agent restrictions, which the bootstrap script cannot verify.
Verification Checklist (Auditor Quick Reference)
| # | Check | Pass criteria | Evidence artifact |
|---|---|---|---|
| C1 | Custom Dataverse roles exist (FSI - Agent Publisher / Viewer / Tester) |
All three roles present in target environment with documented privileges | Screenshot + role privilege export |
| C2 | Roles assigned via groups (not direct user assignment) | Direct user-role assignments = 0 outside break-glass list | Dataverse systemuserroles_association export |
| C3 | Viewer role is read-only | Viewer cannot create/modify/delete agents (negative test) | Test-account screen recording or screenshots |
| C4 | PIM-for-Groups configured on admin group | Eligible assignments > 0; active assignments minimised | Entra > PIM > Groups export |
| C5 | PIM activation requires approval + MFA + justification | Test activation produces approval request and audit entry | Audit log entry + approval-workflow screenshot |
| C6 | Column-level security enforces NPI/PII restrictions | Unauthorised user sees masked or hidden values | Side-by-side test screenshots |
| C7 | Access reviews are scheduled and within cadence | Last review ≤ cadence window; next review scheduled | Entra > Identity Governance export |
| C8 | Agent action consent enabled on all published agents | Every tool on every published Zone 2/3 agent has "Ask the user before running this action" enabled | Per-agent screenshot or PPAC compliance report |
| C9 | Connected agents disabled by default | Inventory of agents with "Let other agents connect" enabled matches approved-exception list | Copilot Studio settings export |
| C10 | Environment admin count below threshold | < 10 environment-level System Administrators per Zone 3 environment | PPAC user-list export with role filter |
| C11 | Service principals not assigned admin roles | No service principal in System Administrator or Environment Admin |
Filtered user-list export (Principal Type = Application) |
| C12 | Service principal credential rotation | Last credential rotation ≤ 90 days for every SPN with Power Platform access (Zone 3) | Entra app-credential export |
| C13 | Role-change events forwarded to SIEM (Zone 3) | Sentinel/SIEM contains entries for last 30 days of role assignments and PIM activations | SIEM query result export |
Manual Verification Steps
Test 1 — Viewer role is read-only (negative test)
- Sign in as a test user assigned only to
SG-CopilotStudio-Viewers-Prod. - Open Copilot Studio at https://copilotstudio.microsoft.com.
- Attempt the following actions:
- Create a new agent → Expected: "+ New agent" button hidden or returns "You don't have permission" error.
- Open an existing agent and modify a topic → Expected: Save / publish controls disabled.
- Delete an agent → Expected: Delete option absent or denied.
- Evidence: Screenshot of denied action; record test-account UPN and timestamp.
Test 2 — PIM activation gate
- Sign in as a test admin who is eligible (not active) for
SG-PowerPlatform-Admins-Prod. - Without activating PIM, navigate to PPAC > Environments > [Zone 3 environment] > Settings.
- Attempt to modify the environment (e.g., change DLP policy assignment).
- Expected: Action denied or settings hidden because the eligible role is not active.
- Activate PIM via the Entra portal: provide MFA, justification, and ticket reference.
- Expected: Approval request appears for the configured approver(s); on approval, role becomes active for ≤ 4 hours.
- Evidence: Approval workflow screenshot, MFA challenge timestamp, Entra audit log entry showing
RoleManagement.ReadWrite.Directoryactivation.
Test 3 — Column-level security on PII
- Identify a Dataverse table with a column-secured PII field (e.g.,
account.creditscore). - Sign in as User A who has the field-security profile assigned.
- Open a record → Expected: PII value visible.
- Sign in as User B who does not have the profile.
- Open the same record → Expected: Field hidden, masked (
***), or shows "No access". - Evidence: Side-by-side screenshots with timestamps and test-account UPNs.
Test 4 — Access review cadence
- Open Entra Admin Center > Identity governance > Access reviews.
- Locate reviews for each FSI security group.
- Confirm:
- Frequency matches Zone requirement (Zone 3: quarterly; Zone 2: semi-annual; Zone 1: annual).
- Reviewers are the group owners or designated compliance reviewers.
- On non-response = "Remove access" for Zone 3 (or "Take recommendations" with documented review of recommendations).
- Last completed review date is within the cadence window.
- Evidence: Export the access-review series to CSV or capture a full-page screenshot showing the schedule and last completion date.
Test 5 — Service principal admin scrub
- In PPAC > Environments > [target] > Settings > Users + permissions > Users.
- Filter by User type = Application (or sort by Type column).
- Cross-reference any returned principals against the System Administrator and Environment Admin role membership.
- Expected: Zero application principals in admin roles. Application principals should hold only purpose-built custom roles (e.g.,
FSI - Service - DataReader). - Evidence: Filtered user export (CSV) annotated with the approved SPN list.
Test 6 — Agent action consent enforcement
- In Copilot Studio, open each published agent in Zone 2/3 environments.
- Open Tools and inspect each tool's "Ask the user before running this action" setting.
- Expected: Setting is Enabled for every tool. For tools where consent is intentionally suppressed, an approved exception should exist in the agent governance log.
- Evidence: Per-agent screenshot of the Tools list with consent status visible. For large estates, use the agent-inventory PowerShell export and confirm the consent flag.
Test 7 — Connected-agent inventory
- In Copilot Studio, open each agent in a Zone 2/3 environment.
- Navigate to Settings > Connected Agents (Preview).
- Inspect the toggle "Let other agents connect to and use this one".
- Expected: Disabled, unless the agent is on the approved cross-agent connectivity list (filed with the AI Governance Lead).
- Evidence: Settings screenshot per agent + the current approved-exception list with sign-off dates.
Audit Test Cases
| Test ID | Scenario | Expected result | Pass / Fail | Notes |
|---|---|---|---|---|
| TC-1.18-01 | Viewer cannot create agent | Action blocked | ||
| TC-1.18-02 | Eligible admin cannot perform privileged action without PIM activation | Denied until activated | ||
| TC-1.18-03 | PIM activation enforces approver + MFA + justification | Workflow + audit entry produced | ||
| TC-1.18-04 | User without column-security profile cannot read PII column | Value hidden / masked | ||
| TC-1.18-05 | Quarterly access review completed within cadence (Zone 3) | Last completion ≤ 90 days | ||
| TC-1.18-06 | No service principals in System Administrator role | Count = 0 | ||
| TC-1.18-07 | Environment admin count < 10 (Zone 3) | Count < 10 per environment | ||
| TC-1.18-08 | Agent action consent enabled on all published agents | All tools = enabled | ||
| TC-1.18-09 | Connected agents disabled or on approved list | Inventory matches approved list | ||
| TC-1.18-10 | SPN credential rotation ≤ 90 days (Zone 3) | All SPNs within window | ||
| TC-1.18-11 | Role-change events present in SIEM (Zone 3) | Last 30 days of events queryable | ||
| TC-1.18-12 | Bootstrap PowerShell Validate-Control-1.18.ps1 exits 0 |
Validation passes |
Evidence Collection Checklist
For each evidence artifact: capture at original resolution, embed timestamp, hash with SHA-256, and store in the control evidence repository under 1.18/<YYYY-Q#>/.
- Custom Dataverse role privilege export (one per role: Publisher, Viewer, Tester)
- Group-based role assignment matrix (
systemuserjoined tosystemuserroles_association) - PIM-for-Groups configuration screenshot (activation duration, approver list, MFA setting)
- PIM activation audit log sample (last quarter)
- Column security profile configuration + assignment list
- Negative-test screenshot pack (Viewer role; missing column-security profile)
- Access review schedule + last completion proof per group
- PPAC environment user export with role and principal-type columns
- Service principal credential age report
- Agent action consent inventory (per-agent or PPAC compliance report)
- Connected-agent enablement inventory + approved-exception list
- Sentinel/SIEM query proof for
Operation = AdministrativeUnit*andPrivilegedRoleAssignment*(Zone 3) - Signed attestation (template below)
Auditor Evidence Pack — Regulatory Mapping
When packaging evidence for an examination or internal audit, label artifacts with the regulation each one supports:
| Regulation / standard | Artifact(s) supporting the assertion |
|---|---|
| FINRA 4511 — books and records integrity | Group-based role assignment matrix; access review completion proof; PIM activation audit log |
| FINRA 3110 — supervisory procedures | Approved-exception list (connected agents); attestation; access review reviewer list |
| FINRA 25-07 — AI system access controls | Custom role privilege exports; agent action consent inventory; connected-agent inventory |
| SEC 17a-3/4 — access documentation | PPAC user export; SPN credential age report; SIEM query proof |
| SOX 302/404 — ICFR / segregation of duties | Negative-test screenshot pack; PIM approval workflow; service-principal admin scrub |
| GLBA 501(b) — Safeguards | Column security configuration + assignment; field-level negative test |
| NIST SP 800-53 AC-2/AC-3/AC-5/AC-6 | Bootstrap validation script output; PIM eligibility export; access review schedule |
Attestation Statement Template
## Control 1.18 Attestation — Application-Level Authorization and RBAC
**Organization:** [Organization Name]
**Environment(s) in scope:** [PROD-NAME (Zone 3), TEAM-NAME (Zone 2)]
**Control Owner:** [Name / Role]
**Reviewer:** [Independent reviewer — must differ from operator]
**Reporting period:** [YYYY Q#]
**Attestation date:** [YYYY-MM-DD]
I attest that, for the reporting period above:
1. Custom Dataverse security roles (Agent Publisher, Viewer, Tester) are implemented with documented least-privilege scope.
2. All role assignments are made through Entra security groups; direct user-role assignments are limited to the documented break-glass account list.
3. Privileged Identity Management for Groups is enforced on the Power Platform admin group with:
- Maximum activation: [Duration]
- Approval required: [Yes/No, approver list]
- MFA on activation: [Yes/No]
4. Column-level security is enforced on the documented set of NPI/PII columns; negative test (Test 3) was completed on [Date].
5. Access reviews completed on schedule for the period:
- Zone 1: [Last completion date]
- Zone 2: [Last completion date]
- Zone 3: [Last completion date]
6. Agent action consent is enabled on every published agent in Zone 2/3 (or documented exceptions are filed).
7. Connected-agent enablement matches the approved-exception list as of the attestation date.
8. Service principal credentials with Power Platform access were rotated within 90 days (Zone 3).
9. Role-change events have been forwarded to [SIEM name] for the entire reporting period (Zone 3).
**Evidence pack reference:** [Repository path / SharePoint link]
**Bootstrap validation script result:** PASS / FAIL — [link to log]
**Operator signature:** _______________________ **Date:** ___________
**Reviewer signature:** _______________________ **Date:** ___________
SSPM Configuration Verification
Security Posture Assessment Test Cases
The following test cases validate configuration points flagged by security posture assessments. Each test maps to a specific setting in the Configuration Hardening Baseline.
| Test ID | Configuration Point | Expected Result | Portal Path | Evidence |
|---|---|---|---|---|
| SSPM-1.18-01 | Agent tool consent | Enabled for all published agents | Copilot Studio > Agent > Tools > "Ask the user before running this action" | Per-agent screenshot |
| SSPM-1.18-02 | Connected agents | Disabled or restricted to approved list | Copilot Studio > Agent > Settings > Connected Agents (Preview) | Per-agent screenshot |
| SSPM-1.18-03 | Admin count | < 10 environment-level admins per environment | PPAC > Environments > [env] > Settings > Users + permissions > Security roles > System Administrator | Filtered user export |
| SSPM-1.18-04 | RPA / SPN admin roles | No service principals in admin roles | PPAC > Environments > [env] > Settings > Users + permissions > Users (filter Type = Application) | Filtered user export |
Test procedures
SSPM-1.18-01 — Agent action consent
- Open Copilot Studio > select agent > Tools.
- For each tool, confirm "Ask the user before running this action" = Enabled.
- Pass criteria: Every tool on every published Zone 2/3 agent has the consent prompt enabled.
- Evidence: Screenshot of the Tools list with the consent toggle visible.
SSPM-1.18-02 — Connected agents
- Open Copilot Studio > select agent > Settings > Connected Agents (Preview).
- Confirm "Let other agents connect to and use this one" = Disabled, or that the agent is on the documented approved-exception list.
- Pass criteria: Connected-agent enablement matches the approved-exception list.
- Evidence: Settings screenshot + approved-exception list reference.
SSPM-1.18-03 — Admin count
- Navigate to PPAC > Environments > [env] > Settings > Users + permissions > Security roles > System Administrator.
- Count assigned users.
- Pass criteria: < 10 named admins per Zone 3 environment.
- Evidence: Screenshot or CSV export with member count.
SSPM-1.18-04 — RPA / SPN admin scrub
- Navigate to PPAC > Environments > [env] > Settings > Users + permissions > Users.
- Filter or sort by Type = Application.
- Cross-reference returned principals against the System Administrator and Environment Admin role members.
- Pass criteria: Zero application principals in admin roles.
- Evidence: Filtered CSV export annotated against the approved SPN list.
Updated: April 2026 | Version: v1.4.0 | Classification: Verification Testing
Back to Control 1.18 | Portal Walkthrough | PowerShell Setup | Troubleshooting