Skip to content
Demiton

Securing Azure

One client secret holding Sites.FullControl.All can read and change every SharePoint site in your tenant. An administrator grants that with one click, the wizard accepts it, and Test Connection goes green either way. This section is how the IT team or managed service provider running your Azure keeps that secret, and everything around it, as small as the job allows, and then proves it.

This page applies to every customer who connects a Microsoft system. If Demiton runs in your own Azure subscription, Azure in your own subscription applies too. Auditing Azure checks both with read-only commands.

Read the diagram top to bottom. Each arrow names what crosses the boundary, and how it authenticates.

YOUR ENTRA TENANT (every customer)
Person ──── signs in, your MFA ────► Demiton sign-in app
Connector ─ client secret ─────────► Connector app registration
App reg ─── app permissions ───────► Graph, Dynamics
YOUR SUBSCRIPTION (dedicated deployment only)
App ─────── password over TLS ─────► PostgreSQL
App ─────── account key ───────────► Blob storage
Browser ─── 15-minute signed link ─► Blob storage
App ─────── API key ───────────────► Azure OpenAI
App ─────── identity, AcrPull ─────► Container registry
Deploy ──── AcrPush, Contributor ──► Registry and apps

The credentials in that diagram are the limits of what you can tighten today, because Demiton uses them as drawn. Where a control would break one, these pages say so.

A stolen administrator session undoes every other control on this page, so start here.

Tenant baseline
IDControlSettingLicence
T1MFA for every personConditional Access requiring MFA for all users, or Security Defaults if you have no P1Free or P1
T2Phishing-resistant MFA for administratorsConditional Access authentication strength on every admin roleP1
T3Legacy authentication blockedConditional Access block on other clients, already included in Security DefaultsFree or P1
T4Few Global AdministratorsTwo to four, plus two monitored break-glass accounts excluded from Conditional AccessFree
T5Standing admin rights removedPrivileged Identity Management: roles eligible, activated for a time-boxed window with a reasonP2
T6Users cannot consent to appsUser consent off, admin consent workflow onFree
T7Users cannot register appsUsers can register applications set to NoFree
T8Guest invitations limitedAdmins and Guest Inviters onlyFree

Create one app registration per system, per environment. Business Central UAT and Business Central Production get separate registrations and separate secrets, so a leaked UAT secret cannot reach production. Make them single-tenant, name them so a stranger could tell what they do (demiton-bc-prod), and give each two named owners.

Expire every secret at 90 days. Connectors authenticate with a tenant ID, client ID and client secret. They do not support certificates or federated credentials today, so a short secret is your main defence. To rotate without an outage:

  1. Add a second secret to the app registration
  2. Paste it into the connector on the Systems page and run Test Connection
  3. Delete the old secret in Entra

This is what each connector calls for:

Grant the least the job needs
SystemGrantLeave out, and why
Business CentralApplication access, with an Entra application record in BC carrying only the permission sets your workflows use (typically Jobs, Purchase, Vendor)SUPER. See the Business Central guide
Finance & OperationsAn Entra application record mapped to a user holding only the data entities you needSystem administrator. See the F&O guide
DataverseAn application user with a custom security role on the tables your workflows useSystem Administrator. See the Dataverse guide
SharePoint, reading documentsAsk Demiton for the delegated sign-in route: Sites.Read.All, Files.Read.All, User.Read and offline_access, which reach only what the signed-in person can already open. For app-only, try Sites.Selected with a read grant on each siteSites.FullControl.All
SharePoint, creating sites and librariesSites.FullControl.All, on its own app registration, used only by the project scaffolding workflowsDo not share this registration with the read connector
Shared mailboxMail.Read, limited to that mailbox with RBAC for Applications in Exchange OnlineUnscoped Mail.Read, which reads every mailbox. Application Access Policies still work, but Microsoft now treats them as legacy
Entra ID, reading the directoryUser.Read.All, Group.Read.AllThe security audit and write permissions, until you run those workflows
Entra ID, workforce lifecycleAdd GroupMember.ReadWrite.All, and Group.ReadWrite.All if workflows create groupsUser.ReadWrite.All: the HR-attribute update that needs it has no live caller
Microsoft TeamsThe webhook delivery route, which needs no Graph permissionGraph permissions, unless you need direct messages. See the Teams guide

Restricting connectors to known IP addresses is optional. Conditional Access for workload identities can block a single-tenant service principal from outside known IP ranges. It needs a Workload Identities Premium licence and a fixed outbound address. Run the policy in report-only mode first: if the outbound address changes while it is enforced, every connector under it stops.

The sign-in app asks for openid, email, profile and User.Read. It needs nothing else, so any wider grant on it is a finding.

Signing in to Demiton
IDControlSetting
S1Your Conditional Access covers DemitonMFA policies target All resources, or name the Demiton enterprise app
S2Only the right people can sign inEnterprise app → Properties → Assignment required set to Yes, assigned to a group
S3Leavers lose access at the sourceDisabling the Entra account ends Microsoft sign-in. Remove the person in HQ → Users too
S4Dedicated deployment only: the app is yoursSingle-tenant registration, with HTTPS redirect URIs on your own hostnames only

Assignment required also applies to the Outlook add-in, so add its users to the same group.


Talk to the team

Tell us what you run - your ERP, field, payroll and document systems - and we will show you the registers Demiton would fill from them, on your data, in a 30-minute call.

Book a 30-minute callStart free