Least privilege is a principle that most security teams understand in theory and most Power Platform tenants violate in practice. The path of least resistance β€” granting System Administrator because it makes things work β€” is also the path to a security posture you cannot defend.

The roles that matter

Power Platform has several built-in security roles. The ones most tenants need to think carefully about:

Building custom security roles

Custom security roles let you define exactly what a user can do with each Dataverse table: create, read, write, delete, append, append to, assign, share. At what scope β€” user, business unit, parent and child, organisation.

The process I follow:

  1. Start with the minimum role needed for the job
  2. Add permissions only as needed, one at a time
  3. Test with a test user account, not your admin account
  4. Document every permission granted and why
  5. Review quarterly

Service accounts and flows

Flows run as the user whose connection is attached. This means every production flow is effectively running with that user's permissions on every system it touches. Service accounts for production flows should:

The question to ask for every permission you grant: what is the worst thing that happens if this account is compromised? If the answer is "everything breaks" or "all our customer data is exposed," the permission scope is too broad.

Quarterly access reviews

System Administrator assignments should be reviewed quarterly. Environment Maker assignments should be reviewed when someone leaves the organisation or changes role. Custom security role assignments should be reviewed when the business process they support changes.

Set a calendar reminder right now: every quarter, pull a report from your CoE kit or admin centre showing all System Administrator role assignments. Anyone who does not actively need that level of access should be downgraded.