Skill: Dataverse Security Model
When to Use
Trigger when designing security roles, field-level security, row-level access, team structures, business unit hierarchies, or any access control design for Dataverse/Power Platform solutions.
Security Model Overview
Entra ID (Authentication) └── Confirms identity ("who are you?") Dataverse Security (Authorization) ├── Security Roles → Table-level CRUD + access depth ├── Column Security → Field-level read/update control ├── Row-Level Security → Record ownership + sharing ├── Business Units → Organizational hierarchy ├── Teams → Group-based access └── Hierarchy Security → Manager/position chain visibility
⚠️ REQUIRED: Load Sub-Files Before Implementation
SKILL.md is a summary only — it is NOT sufficient for implementation.
The detailed content (complete payloads, XML templates, working examples, edge-case handling) lives in sub-files in the same directory as this SKILL.md. Before writing any code, you MUST use read_file on the sub-files relevant to your task:
- Roles & Privileges — Access levels (User/BU/Parent:Child/Org), privileges (CRUD + Append/AppendTo/Assign/Share), standard role patterns, minimum viable privileges
- Row & Column Security — Column security profiles, field permissions, row-level patterns (ownership, sharing, hierarchy)
- Business Units & Teams — BU hierarchy design, owner teams, access teams, Azure AD Group Teams, record sharing (GrantAccess/RevokeAccess)
- Web API Management — Security role CRUD via Web API, privilege queries, role assignment to users/teams, field security profile management
Security Design Checklist
markdown## Security Model Design: [Solution Name] ### Tables & Access Matrix | Table | App Admin | App Manager | App User | App Reader | |---|---|---|---|---| | contoso_project | Org CRUD | BU CRUD | User CRW | Org R | | contoso_task | Org CRUD | BU CRUD | User CRUD | Org R | | contoso_resource | Org CRUD | BU R | User R | Org R | ### Column Security | Table | Column | Who Can Read | Who Can Update | |---|---|---|---| | contoso_project | contoso_budget | Finance Team, App Admin | Finance Team | | contact | contoso_salary | HR Team | HR Team | ### Validation - [ ] Test as each role — verify CRUD boundaries - [ ] Test cross-BU access — verify isolation - [ ] Test column security — verify restricted fields masked - [ ] Test with no roles — verify access denied - [ ] Verify lookup target tables have Read access - [ ] Verify AppendTo on lookup target tables
Power Pages Table Permissions Audit
When auditing table permissions for a Power Pages site, run these 7 check categories:
- Missing Permissions (Critical) — Table used in code but no permission exists (403)
- Overly Broad Scope (Warning) — Global scope with write/delete enabled
- Missing Append/AppendTo (Critical) — Tables with lookups need append on source, appendto on target
- Orphaned Permissions (Info) — Permission exists but table not used in code
- Missing Web Role Association (Warning) — Permission without web role has no effect
- Parent Chain Integrity (Critical) — Parent scope with broken parent reference grants no access
- CRUD Excess (Warning) — More privileges than code uses (principle of least privilege)
Anti-Patterns
- Giving users System Administrator role ("just make it work")
- Single security role for all users (no least-privilege)
- Not testing access as each role type
- Missing AppendTo on lookup target tables (causes confusing save errors)
- Not scoping environment variables/connection references with appropriate read access
- Creating security roles in root BU when they should be BU-scoped
- Over-sharing records (share individually instead of using teams)
- Not using Azure AD Group Teams when Entra ID groups already exist
- Column security without a clear policy (inconsistent protection)
- Cascade delete configured without considering security implications
- Org-owned tables when row-level isolation is needed
- Using hierarchy security without clear organizational structure
Related Skills
dataverse— Table and relationship design that security roles protectdataverse-web-api— Security role and privilege management via APIpower-pages— Table permissions and web roles for portal securitytesting— Security role testing strategyplugins— Plugin execution context and impersonation


