Catalog and publisher
Identify the exact app, publisher, app ID, distribution source, current version, support owner, certification information, and whether it is Microsoft-provided, third-party, custom, or a Copilot agent.
Determine who can use each Teams app or agent, which control model is authoritative, what data permissions were granted, and whether deployment, external participation, monitoring, and rollback match the approved business use.
Microsoft is replacing Teams app permission policies with app-centric management and is also unifying app availability between the Teams and Microsoft 365 admin centers. A credible review first identifies the tenant's active model, then proves the resulting experience for representative users.
Identify the exact app, publisher, app ID, distribution source, current version, support owner, certification information, and whether it is Microsoft-provided, third-party, custom, or a Copilot agent.
Record org-wide defaults, individual app status, active app availability, and any unresolved difference between the Teams admin center and Microsoft 365 Integrated apps.
Prove whether access is Everyone, Specific users or groups, or No one—or, in a legacy tenant, which permission policy applies to each user and what the policy permits.
Separate app availability from Microsoft Graph delegated or application permissions, resource-specific consent, user consent, admin consent, and any new permission introduced by an app update.
Check app setup policy, admin preinstallation, pinning, personal, chat, channel, and meeting scopes, custom upload authority, and behavior for guests, external users, and anonymous attendees.
Retain approval, risk decision, assignment source, test result, audit events, owner, review date, support data, version-change trigger, incident action, and a practical disable or revoke path.
Do not document both models as simultaneously authoritative. The Teams admin center itself is the primary evidence: migrated tenants no longer use permission policies for app access, while tenants that still display usable policies can continue with them until migration.
| Control question | App-centric management | Legacy permission policies | Evidence to retain |
|---|---|---|---|
| Where user access is defined | Per app on the Users and groups tab | Global or custom permission policy assigned to a user | Tenant mode, admin-center capture, export, review date |
| Available scopes | Everyone, Specific users or groups, or No one | Allow all, allow specific, block specific, or block all by Microsoft, third-party, and custom categories | App ID, assignment source, exact users/groups or policy name |
| Group support | Supported security, Microsoft 365, dynamic-user, nested, and distribution groups; guests are excluded from Specific users or groups | App permission policies do not support group policy assignment | Group type, membership owner, dynamic rule, exceptions |
| Migration behavior | Permission policies are replaced and the migration cannot be reversed | Inventory all assigned policies and conflicting app decisions before migration | Before/after exports, conflict decisions, auto-created groups, pilot tests |
| Propagation | Changes can take up to 24 hours and, rarely, longer in clients | Policy changes can take several hours | Change timestamp, validation window, client and user tests |
Capture whether app-centric management is active, whether permission policies remain usable, and whether unified app management has synchronized Teams and Microsoft 365 admin centers.
Export the app and agent catalog. Record app ID, publisher, type, status, availability, certification, permissions indicator, owner, business purpose, and risk tier.
Document defaults for Microsoft, third-party, and custom apps. Identify apps individually managed outside those defaults and all apps set to No one or a restricted population.
For app-centric tenants, map users/groups to each critical app. For legacy tenants, export global/custom policies and every direct user assignment.
Review Graph delegated and application permissions, admin consent, user-consent policy, resource-specific consent, app registration, service principal, and version changes.
Compare access with setup policies, preinstall and pinning, custom-upload controls, team-level upload settings, and app availability in each supported scope.
Validate allowed, denied, new, guest, external, anonymous, and privileged populations across web, desktop, mobile, channel, chat, and meeting contexts as applicable.
Assign approval, technical owner, data owner, support path, review date, evidence location, monitoring trigger, incident action, and rollback decision for every critical app.
| App family | What to inventory | Practical default | Escalation triggers | Proof to retain |
|---|---|---|---|---|
| Microsoft apps and agents | Business purpose, included service, data locations, user population, new feature exposure | Allow required workloads; restrict high-impact or unapproved experiences by population when supported | New agent, new scope, sensitive meeting/chat use, license or compliance change | Service owner, assignment, accepted data use, client test |
| Third-party apps | Publisher identity, certification, permissions, terms, privacy, data processor, support, renewal, usage | Default-deny or controlled-request model for regulated environments; scoped pilot before broad access | Broad Graph permission, external storage, unverified publisher, dormant owner, material update | Risk review, legal/privacy decision, consent record, scope, expiry |
| Custom apps | Source owner, app package and manifest, endpoints, credentials, RSC, release pipeline, support, rollback package | Separate development/test tenant; admin-published production package; least-privilege availability and upload rights | Manifest permission change, new domain, unsigned or unexpected package, owner departure | Hash/version, approval, test result, publisher, deployment record |
| Meeting apps and external bots | Host organization, participant type, recording/transcription behavior, data export, lobby/bot detection, organizer control | Permit only approved meeting use; require organizer awareness and separate external-bot controls | Recording, transcription, automated note storage, anonymous use, external-hosted meeting | Meeting policy, app availability, organizer guidance, incident procedure |
Teams app availability controls who can add or use an app. Microsoft Entra consent controls the Graph permissions granted to its service principal. Resource-specific consent can let a team or chat owner authorize access to that particular resource. These layers must be reviewed together, but they must not be conflated.
A custom app can enter the tenant through user submission for approval, an admin upload to the organization catalog, or permitted user upload for personal or team testing. Each route has different authority and risk.
Users can submit apps for admin approval. Route each request to a named service owner, require a business purpose and population, and prevent a support ticket from becoming implicit security approval.
Use a separate development tenant when possible. Validate the manifest, app ID, domains, endpoints, secrets, permissions, RSC, bot behavior, and failure mode before production publication.
Retain the approved package and version, hash, publisher, release note, consent decision, assignment, validation evidence, support contacts, and rollback package.
Scope upload rights through app setup policy, then reconcile the team-level setting that determines whether members may upload into a particular team. Test personal and team contexts separately.
Compare every manifest and permission change. New Graph permissions can require new admin consent; new domains, data flows, meeting capabilities, or RSC should reopen the risk decision.
Remove availability, uninstall where required, revoke consent, disable or delete the service principal only after dependency analysis, retire credentials/endpoints, preserve evidence, and confirm vendor-side data deletion.
| Participant or context | What to test | Why it matters | Related control |
|---|---|---|---|
| Guest | Whether the app is blocked org-wide, added by an internal user, available through setup policy, or exposed in personal/team context | Guests can't browse and add from the host store, but can use apps added by host users in supported contexts | Host org app settings, guest access, setup policy |
| External-access user | Group chat and meeting chat with a host-added app; bot, tab, and message-extension interaction | External users can't add host apps, but can interact with apps added to a host conversation | Host policy, external access policy, app data practices |
| Anonymous attendee | Interaction with an existing meeting app or Adaptive Card and the anonymous-app meeting setting | Anonymous participants can't add apps but may interact with existing apps when allowed | Meeting settings and the global default app control |
| External meeting bot | Detection, lobby placement, organizer approval, recording/transcription notice, storage destination, and incident action | External bots are participants and require a separate meeting-policy control; app allow/block alone is not sufficient | External bot access mode, lobby roles, organizer guidance |
An app can appear blocked, allowed, pinned, or consented in one interface while the user's real access is determined elsewhere. Treat the following as control defects requiring reconciliation and evidence.
The review documents legacy permission policies after app-centric migration, or assumes migration occurred without checking the tenant.
Teams and Microsoft 365 availability differ before unified management, and one control plane silently defeats the intended result.
The app is scoped correctly, but broad Graph or application consent remains from an earlier approval.
A dynamic rule, nested group, distribution list, or auto-created migration group expands access beyond the approved population.
A publisher adds new permissions, domains, agents, or data flows without reopening security, privacy, or support review.
App setup policy or team-level upload settings let a development package enter production collaboration contexts without catalog approval.
The app is tested only with internal users; guest, external, anonymous, or external-bot behavior exposes data or breaks meetings.
The incident plan says “block the app” but omits assignment removal, uninstall, consent revocation, service-principal action, token/session impact, and vendor data.
An unused app retains consent and availability because the sponsor left, renewal dates were not tracked, or telemetry was never reviewed.
Percentage of available apps with an owner, purpose, data classification, risk tier, approved population, permissions record, support path, and next review date.
Count of apps whose documented scope matches effective access for representative users, including direct, group-derived, and exception assignments.
Apps with high-impact application permissions, tenant-wide consent, owner-granted RSC, stale service principals, or permissions changed since approval.
Median age of user app requests, percentage with complete risk packets, approval/denial reasons, and repeated requests for the same business capability.
Unused apps, expired exceptions, orphaned custom apps, outdated versions, dormant owners, unresolved vendor notices, and decommission actions overdue.
Critical apps with tested disable, unassign, uninstall, consent-revoke, investigation, communication, and vendor-data containment steps.
No. Microsoft is migrating tenants to app-centric management, which replaces permission policies with per-app availability for Everyone, Specific users or groups, or No one. If the Teams admin center still shows usable permission policies, the tenant can continue using them until migration. Always document the tenant's actual state.
No. App availability and permission consent are separate. A user may be allowed to access an app while required Graph consent is missing; an app may also retain broad Entra consent even when Teams availability is restricted. Review both the Teams app and its enterprise application.
No. App setup policies control installation and pinning, but they do not override an app that is unavailable to the user or blocked by the organization. Validate availability first, then setup policy and client placement.
Yes. Microsoft supports security groups, Microsoft 365 groups, dynamic user membership groups, nested groups, and distribution lists for specific app availability. Guest users cannot use an app through the Specific users or groups option even if assigned. Group ownership and membership logic therefore belong in the review.
In supported contexts, yes. Guests and external users cannot add apps from the host organization's store in the same way as native users, but they may interact with apps added by host users in chats, channels, or meetings. Anonymous attendees can interact with existing meeting apps when the relevant meeting setting allows it.
At minimum: tenant control model, catalog export, app and publisher IDs, owner and purpose, availability, user/group or policy assignment, setup policy, permissions and consent, RSC, external-context tests, audit events, risk approval, support owner, review date, and a tested disable and rollback sequence.
IT Perfection can inventory Teams apps and agents, identify the tenant's active access model, reconcile Teams and Microsoft 365 controls, review permissions and custom apps, test representative users and meeting contexts, and establish a practical approval, monitoring, incident, and rollback runbook for Orange County and Southern California organizations.
This guide is for initial guidance only and does not replace a professional cybersecurity audit, compliance assessment, penetration test, legal/privacy review, software-vendor due diligence, or tenant-specific change-control process. Created by Ali Hassani, CISO — 25+ years of IT, cybersecurity, compliance, and infrastructure experience.
We use necessary cookies and limited analytics and advertising-measurement cookies. Select Accept to allow optional cookies or Deny to continue with necessary cookies only. No name or email is required. You may close this website at any time.