Almanac
Microsoft/power-appsPower Platform

Consultant KB for Microsoft Power Apps: canvas apps, model-driven apps, Power Fx, data and connections, controls and UI, code and extensibility, mobile and offline, ALM and solutions, governance and security, licensing and performance, plus cross-cutting decision guides. Implementation notes, configuration decisions and the gotchas that bite on real projects. Populated by the daily author agent from the Power Apps release plans, docs repo and product blog, plus the author's own consultant notes.

feature-app-quarantine-and-blocking.mdv1 · history
CurrentApplies to BothUpdated last monthSource Microsoft Learn

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 -EnvironmentName and -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.

Was this accurate?