What it does
Quarantine is an admin-set state on a canvas app that stops end users running it while leaving the maker able to open and fix it. Alongside it sit two related controls: conditional access on individual apps, and app access control at the Dataverse authentication layer that allows or blocks whole client applications from reaching an environment.
Key facts
- Quarantine is PowerShell only:
Set-AppAsQuarantined,Set-AppAsUnquarantined,Get-AppQuarantineState, each taking-EnvironmentNameand-AppName. - Canvas apps: generally available. Model-driven apps: not supported.
- A quarantined app stays visible to admins in the admin centre and to makers in make.powerapps.com, and can still be opened in Studio for editing. Only end users are stopped.
- A user who has never launched the app is blocked outright. A user who has played it before may get a few seconds of use before the block bites — worth knowing if you're quarantining something because it's leaking data.
- Conditional access on individual apps uses Entra authentication context IDs set on the app by an admin. Makers can't edit them. Canvas apps only, in preview; model-driven not supported. Requires a managed environment.
- Authentication contexts don't travel with the app in a solution. That's deliberate, so UAT and production can carry different policies, and the target environment's context is preserved on import.
- Multiple authentication contexts on one app means the user must pass the union of all the policies they map to.
- App access control (Security > Identity and access > App access control) validates the client application ID in the user's token against allow and block lists. Four modes: AuditMode, Enabled, Enabled for roles, Disabled. Changes can take up to an hour.
- Microsoft's own suggested block list for data exfiltration includes Power Query for Excel desktop, the Access client, XrmToolBox, PowerShell and Power BI. The Dataverse app itself (
00000007-0000-0000-c000-000000000000) is always allowed.
When to use / skip
Quarantine is an incident tool, not a governance tool. The scenarios where you'd actually reach for it: an app is shipping data somewhere it shouldn't and you need it stopped in minutes without deleting anything; an app is hammering a data source and causing throttling for everyone else; legal has asked for something to be pulled pending review. For anything routine — an app that's out of date, an owner who's left, a maker who won't respond — unsharing or removing the security role is cleaner and reversible in the UI. App access control is a different animal and worth setting up properly for regulated clients: audit mode for a week, then blocking Excel Power Query and XrmToolBox, is a genuinely useful control that costs almost nothing.
Configuration decisions
- Whether quarantine is part of the client's incident runbook at all, and who holds the credentials to run the cmdlets at 2am.
- For app access control, which mode: audit-only to build the picture, Enabled to block, or Enabled for roles where you also want to restrict which security roles can use an allowed app.
- Which client apps go on the block list. The exfiltration-heavy ones are the obvious starting point, but blocking Power BI has consequences you need to check first.
- Whether conditional access on individual apps is worth the preview risk, given it's canvas-only and admin-managed.
- How you communicate a quarantine to users, since the built-in message tells them nothing useful.
Gotchas
- The maker experience is unchanged. A maker can keep editing and publishing a quarantined app without ever noticing it's quarantined — check state explicitly rather than assuming a maker would have said something.
- No model-driven support, for either quarantine or conditional access on individual apps. If the client's critical apps are model-driven, this whole page is less useful than it sounds and you're back to security roles.
- App access control needs auditing turned on in the environment, including Log access, before audit mode produces anything.
- App access control isn't applied to first-party apps making service-to-service calls, or to partner apps doing the same. To stop those you deactivate or delete the application user.
- Removing a system app you didn't add from the environment application list can be undone automatically by the platform. Only delete entries you created.
Consultant notes
- Position quarantine as a break-glass control in the security workshop. Clients like hearing there's a kill switch; they need to hear it's PowerShell-only and canvas-only.
- Run app access control in audit mode for at least a week in a non-production environment before enabling it anywhere real. The list of client apps hitting a Dataverse environment is always longer than anyone expects.
- Warn that blocking PowerShell as a client app will also block the tooling your own team uses. Get that agreed before you flip it.
- If the client is asking for per-app MFA, set expectations early: preview, canvas only, admin-managed contexts, and the maker can't see or set it.
Sticky note: check whether model-driven quarantine has shipped, and whether conditional access on individual apps has come out of preview.