Compute is where Microsoft's security portfolio is at its most layered, and the exam exploits that by offering you four real controls and asking which one belongs at this layer. Keep asking: is this about the platform (Defender plans, Azure Policy), the machine (encryption, trusted launch, agents), the network path (Bastion, JIT, access restrictions) or the application (authentication, WAF, API Management)?
3.1 Security for AI — the short version
This sub-skill spans five products and eleven bullet points in the skills measured. Here is the map; the AI & agent security deep dive works through every item in detail, and you should read it before the exam rather than relying on this summary.
| Objective | Product | One-line answer |
|---|---|---|
| Identify overexposure of data in SharePoint | SharePoint Advanced Management + Purview | Data access governance reports and the content management assessment to find it; Restricted Content Discovery and Restricted Access Control to contain it. |
| Identify Copilot and AI app risks | Microsoft Purview DSPM | Data risk assessments, activity explorer, and one-click DLP and labelling policies. |
| Real-time protection for Copilot Studio agents | Microsoft Defender | Defender portal → Security for AI → connect Copilot Studio, toggle real-time protection, then finish onboarding in Power Platform with a shared app ID. |
| Conditional Access for Entra Agent ID | Microsoft Entra | Target agent identities for app-only flows; target users and groups for on-behalf-of flows. Agent risk is a condition. |
| Analyse blast radius | Defender XDR | Agent inventory plus Exposure Management: what the agent's identity can reach if the agent is subverted. |
| Manage Entra Agent ID access | Microsoft Entra ID Governance | Sponsors and owners, access packages, lifecycle and expiry for agent identities. |
| AI Gateway in API Management for Foundry | Microsoft Foundry + APIM | Foundry portal → Manage → AI Gateway. Token-per-minute limits return 429; total token quota returns 403. |
| Defender for AI Services | Defender for Cloud | A cloud workload protection plan — runtime detection of jailbreaks, prompt injection, data exposure and wallet abuse. |
| Guardrails for agent security in Foundry | Microsoft Foundry | A guardrail is a named set of controls assigned to models and agents. An agent's guardrail overrides the model's. |
| Data and AI security dashboard | Defender for Cloud | Needs Defender CSPM with sensitive data discovery, Defender for Storage, Defender for Databases and AI threat protection. |
| Manage agents in the Microsoft 365 admin center | Microsoft 365 | Inventory, ownership, availability and lifecycle for agents across Microsoft 365. |
This sub-skill moves faster than the study guide
Agent security for Copilot Studio and Foundry agents has been consolidating under Microsoft Agent 365, and the licensing and portal paths have shifted since the skills measured were published. Learn the objective as written — it is what the exam item was authored against — but read the deep dive for where the product has actually landed, because the names on screen may not match the names in the bullet list.
3.2 Servers and virtual machines
Disk encryption
flowchart TB
Q["Choosing disk encryption for a virtual machine"] --> A{"Do you have to hold and rotate the key yourself?"}
A -->|"No"| SSE["Server-side encryption, platform-managed key<br/>On by default on every managed disk"]
A -->|"Yes"| B{"Where must the encryption be applied?"}
B -->|"At the host — OS and data disks,<br/>the temporary disk and host caches"| HOST["Encryption at host<br/>plus a disk encryption set<br/>No agent, no performance cost"]
B -->|"In the guest, because policy<br/>names BitLocker or dm-crypt"| ADE["Azure Disk Encryption<br/>A VM extension; keys and<br/>secrets live in Key Vault"]
B -->|"So the Azure host itself<br/>cannot read the disk"| CONF["Confidential VM<br/>Key bound to the hardware<br/>trusted execution environment"]| Option | Encrypts | Requires |
|---|---|---|
| SSE with platform-managed key | OS and data disks, snapshots, images at rest | Nothing — always on |
| SSE with customer-managed key | The same, with your key | A disk encryption set and a key vault with soft delete and purge protection |
| Encryption at host | Everything above plus the temporary disk and host caches, encrypted before it leaves the host | The feature registered on the subscription and a supported VM size |
| Azure Disk Encryption | Volumes inside the guest, using BitLocker or dm-crypt | A VM extension, a key vault with the disk encryption access policy, and a supported OS |
| Confidential disk encryption | The OS disk, with the key protected by the VM's own TEE so the host cannot read it | A confidential VM size |
Azure Bastion
Bastion gives RDP and SSH over TLS on port 443 from the portal or a native client, so VMs need no public IP, no agent and no open management ports. Dedicated SKUs need a subnet named exactly AzureBastionSubnet, sized /26 or larger.
| Feature | Developer | Basic | Standard | Premium |
|---|---|---|---|---|
| Cost | Free | Paid | Paid | Paid |
| Dedicated host / virtual network peering | ❌ shared, one VM at a time | ✅ | ✅ | ✅ |
| Native client, file transfer, shareable links, IP-based connections, custom ports | ❌ | ❌ | ✅ | ✅ |
| Host scaling (2–50 instances) | ❌ | ❌ fixed at 2 | ✅ | ✅ |
| Session recording | ❌ | ❌ | ❌ | ✅ |
| Private-only deployment (no public IP) | ❌ | ❌ | ❌ | ✅ |
SKUs can be upgraded but never downgraded — a downgrade means deleting and recreating the host. "We must keep an audit trail of what administrators did in the session" is Premium, every time.
Just-in-time VM access
- Part of Defender for Servers Plan 2. It keeps management ports closed with a deny rule and opens them, for a named port, source IP and time window, only on approved request.
- Requesting access needs write permission on the VM plus
Microsoft.Security/locations/jitNetworkAccessPolicies/initiate/action. - It edits NSG and Azure Firewall rules for you, then reverts them. It does not remove the public IP — which is why Bastion and JIT are complements, not alternatives.
Azure Arc and Defender for Servers
Azure Arc-enabled servers project a machine outside Azure — on-premises, at the edge, in AWS or GCP — into Azure Resource Manager as a first-class resource. Once projected, it can carry Azure Policy assignments, Machine Configuration, extensions, tags and Defender plans exactly like an Azure VM. When a scenario says "extend these controls to our data-centre servers", Arc is the enabling step.
| Capability | Plan 1 | Plan 2 |
|---|---|---|
| Defender for Endpoint integration — EDR, auto-provisioned | ✅ | ✅ |
| Agent-based vulnerability scanning via the Defender for Endpoint sensor | ✅ | ✅ |
| Agentless scanning — posture, vulnerabilities, secrets and malware from a disk snapshot | ❌ | ✅ |
| Premium Defender Vulnerability Management — certificate and baseline assessment, vulnerable application blocking | ❌ | ✅ |
| Regulatory compliance assessment | ❌ | ✅ (or any other paid plan) |
| OS configuration assessment against cloud security benchmark baselines | ❌ | ✅ |
| File integrity monitoring | ❌ | ✅ — not on by default |
| Just-in-time VM access | ❌ | ✅ |
| Free data ingestion benefit for specified data types | ❌ | ✅ |
Agentless scanning, precisely
Agentless machine scanning takes a snapshot of the disk and analyses it out of band — no agent, no performance impact on the workload — and runs on a fixed 24-hour cycle that cannot be configured. It comes with Defender CSPM or Defender for Servers Plan 2, but agentless malware scanning is Plan 2 only. Individual agentless capabilities cannot be switched on and off separately; the plans you enable decide what you get.
Trusted launch and VM security types
| Security type | Gives you |
|---|---|
| Standard | No platform integrity guarantees. |
| Trusted launch (the default for new Gen 2 VMs) | Secure boot — only signed bootloaders and drivers may load, defeating rootkits and bootkits. vTPM — a virtualised TPM 2.0 that measures the boot chain and stores keys. Integrity monitoring — attestation of those measurements, surfaced as a Defender for Cloud alert when boot integrity fails. |
| Confidential VM | Everything trusted launch gives, plus memory encrypted in hardware so the hypervisor and host operator cannot read the VM's memory or OS disk. |
Integrity monitoring requires vTPM, and vTPM requires trusted launch — a chain worth remembering, because a question will describe the requirement and expect you to name all three.
Azure Machine Configuration
Formerly Azure Policy guest configuration. It audits — and, with the right assignment, remediates — settings inside the operating system: password policy, installed applications, certificates, registry keys, running services, and the Microsoft cloud security benchmark compute baselines. It needs the Machine Configuration extension plus a system-assigned managed identity on each machine, and works identically on Azure VMs and Arc-enabled servers. Audit-only policies are free; Apply (remediating) configurations are charged per machine.
Which tool for which layer
Azure Policy governs the VM resource's properties — the SKU, whether the disk is encrypted, whether boot diagnostics are on. Machine Configuration governs what is true inside the guest.Defender for Servers detects what is happening at runtime. A question about "ensure the password complexity policy on 400 Windows servers" is Machine Configuration, not Azure Policy on its own and not Defender.
3.3 Containers, AKS and the registry
flowchart TB BUILD["Build — image pushed to Azure Container Registry"] --> SCAN["Agentless vulnerability assessment of registry images,<br/>by Microsoft Defender Vulnerability Management"] SCAN --> POL["Admission — the Azure Policy add-on for Kubernetes audits or denies:<br/>no privileged containers, approved registries only, no host path mounts"] POL --> RUN["Run — the workload executes on a node"] RUN --> SENSOR["Defender sensor on each node — runtime threat detection and binary drift"] RUN --> DISC["Agentless discovery — cluster and API server configuration,<br/>and the images actually running"]
Microsoft Defender for Containers
- Agentless discovery for Kubernetes — reads the cluster and API configuration through the API server, with no components installed, and feeds the security graph and attack path analysis.
- Agentless vulnerability assessment — scans images in Azure Container Registry and the images actually running in clusters, using Microsoft Defender Vulnerability Management.
- Defender sensor — a DaemonSet on each node providing runtime threat detection: crypto-mining, reverse shells, container escape attempts, and binary drift (a binary running that was never in the image).
- Azure Policy add-on for Kubernetes — enforces data-plane rules at admission via Gatekeeper: no privileged containers, no host networking, approved registries only, required resource limits. Effects are audit or deny.
Hardening AKS
| Control | What it does |
|---|---|
| Microsoft Entra integration + Azure RBAC for Kubernetes authorization | Cluster authentication and authorisation both come from Entra, so Kubernetes permissions become ordinary Azure role assignments and can go through PIM. |
| Disable local accounts | Removes the cluster-admin certificate that bypasses Entra entirely. Essential — otherwise your carefully built RBAC has a back door. |
| Private cluster | The API server gets a private endpoint and no public address. |
| Authorized IP ranges | The lighter alternative when the API server must stay public. |
| Network policies | Pod-to-pod filtering — Azure Network Policy Manager, Calico or Cilium. NSGs do not see pod traffic. |
| Workload identity | Federates a Kubernetes service account to a Microsoft Entra identity, so pods get tokens without secrets. |
| Key Vault provider for Secrets Store CSI driver | Mounts secrets from Key Vault into the pod rather than storing them as Kubernetes secrets. |
| Node image and Kubernetes auto-upgrade | Patching the node OS and the control plane on a channel rather than by hand. |
Azure Container Registry
- Disable the admin user. It is a shared username and password with push rights and no identity — the container-registry equivalent of a storage account key.
- Use Entra roles —
AcrPullfor the AKS kubelet identity,AcrPushfor pipelines — and disable anonymous pull. - Tokens and scope maps give repository-scoped, expiring credentials when a partner needs one repository and nothing else.
- Premium tier unlocks private endpoints, customer-managed keys, content trust (image signing), quarantine (an image stays unpullable until it passes a scan), geo-replication and dedicated agent pools.
- Defender for Containers scans pushed images and continually reassesses them as new vulnerabilities are published.
3.4 The application platform
flowchart TB C["Client request"] --> AR["Access restrictions — allow and deny rules<br/>by IP address, service tag or virtual network"] AR --> PE["Private endpoint — an inbound private IP for the app<br/>set public network access to Disabled alongside it"] PE --> APP["App Service or Function app<br/>sign-in handled by built-in authentication"] APP --> VI["Virtual network integration — the only outbound<br/>control of the three, letting the app reach your network"] VI --> BE["Private backends — Azure SQL, Key Vault and<br/>storage behind their own private endpoints"]
App Service and Azure Functions
| Control | Detail |
|---|---|
| Built-in authentication ("Easy Auth") | Turns on sign-in with Microsoft Entra or another provider without a line of code, and can be set to require authentication so unauthenticated requests never reach your code. |
| Access restrictions | Ordered allow/deny rules by IP range, service tag or virtual network, applied to the app and separately to the scm (Kudu) site — which people forget, leaving the deployment endpoint open. |
| Private endpoint | Inbound private IP. Pair with public network access disabled. |
| Virtual network integration | Outbound only — how the app reaches a database or key vault behind a private endpoint. |
| Managed identity | Removes connection strings. App settings can also reference Key Vault directly with @Microsoft.KeyVault(...). |
| HTTPS only, minimum TLS version, client certificates | The transport basics. Client certificates give mutual TLS for machine-to-machine callers. |
| Disable FTP/FTPS and basic publishing credentials | Force deployment through Entra-authenticated paths only. |
| Defender for App Service | Detects attacks against the app — dangling DNS takeover, suspicious process execution, web shell upload. |
Function keys are not authentication
An HTTP-triggered function's authorization level of function, admin or anonymous uses shared function, host or master keys passed in a query string or header. They identify nobody, they appear in logs and browser history, and the master key grants administrative access to the whole function app. For anything that matters, set the authorization level to anonymous and put built-in authentication or API Management in front instead. Store any remaining keys in Key Vault and never in source.
Azure Logic Apps
- A Consumption logic app with a Request trigger exposes a callback URL containing a SAS signature. Anyone with the URL can run the workflow. Controls: restrict trigger access by IP range, restrict run history contents access by IP range, regenerate the access key to invalidate issued URLs, or switch the trigger to Microsoft Entra OAuth and validate the token.
- Use a managed identity on connections rather than stored credentials in an API connection.
- Mark sensitive parameters as secure inputs and outputs so values are redacted in run history — a common place for secrets to sit in plain sight.
- Standard logic apps run on the App Service platform, so they get private endpoints, virtual network integration and access restrictions. Consumption logic apps do not.
Azure Web Application Firewall
| On Application Gateway | On Azure Front Door | |
|---|---|---|
| Scope | Regional, inside your virtual network | Global, at the edge |
| Rule set | OWASP Core Rule Set (CRS) | Default Rule Set (DRS) |
| Modes | Detection logs matches only; Prevention blocks them. Always start in Detection and tune before switching. | |
| Also offers | Per-site and per-URI policies | Rate limiting, geo-filtering and bot protection at the edge, closest to the attacker |
Tuning is done with exclusions (ignore a named header, cookie or argument for a rule) and custom rules, which are evaluated before the managed rule set and are how you implement allow-lists, geo-blocking and rate limits. Disabling a whole rule because one request tripped it is the wrong answer; an exclusion scoped to that parameter is the right one.
API Management as the back-end protection layer
APIM's security is expressed as policies in the inbound, backend, outbound and on-error pipelines, applied at global, product, API or operation scope.
<inbound>
<!-- Reject anything without a valid Microsoft Entra token for this API. -->
<validate-jwt header-name="Authorization"
failed-validation-httpcode="401"
failed-validation-error-message="Unauthorized">
<openid-config url="https://login.microsoftonline.com/{tenant-id}/v2.0/.well-known/openid-configuration" />
<audiences>
<audience>api://contoso-orders</audience>
</audiences>
<required-claims>
<claim name="roles" match="any">
<value>Orders.Read</value>
</claim>
</required-claims>
</validate-jwt>
<!-- Then throttle per caller, so a valid token cannot be used to flood the backend. -->
<rate-limit-by-key calls="120" renewal-period="60"
counter-key="@(context.Subscription?.Id ?? context.Request.IpAddress)" />
<ip-filter action="allow">
<address-range from="203.0.113.0" to="203.0.113.255" />
</ip-filter>
</inbound>| Concern | Policy or feature |
|---|---|
| Who is calling | validate-jwt against Microsoft Entra, OAuth 2.0 / OpenID Connect, client certificates for mutual TLS, or subscription keys for low-assurance cases |
| How much they may call | rate-limit-by-key and quota-by-key |
| From where | ip-filter, plus network mode — external or internal virtual network injection, or a private endpoint |
| What they may see | validate-content and validate-headers for schema enforcement, and outbound transformation to strip internal detail |
| How APIM reaches the backend | A managed identity, with secrets held in Key Vault as named values |
| Generative AI backends | The LLM policies — llm-token-limit, llm-emit-token-metric, llm-content-safety and the semantic cache pair. See the AI deep dive. |
Subscription keys are not identity either
An APIM subscription key says which subscription is calling, not who. When a scenario demands per-user authorisation, role-based access to specific operations, or a token that expires, the answer is validate-jwt with Microsoft Entra — the subscription key is a rate-limiting and metering handle, not an authentication mechanism.
Skill 3 checklist
- Encryption at host for a customer-managed key with no agent; Azure Disk Encryption only when BitLocker or dm-crypt is named; confidential VM when the host must be untrusted.
- Bastion Premium for session recording and private-only deployment;
AzureBastionSubnetat /26 or larger; SKUs upgrade but never downgrade. - JIT is Defender for Servers Plan 2 and edits NSG and firewall rules — it does not remove public IPs.
- Agentless scanning comes with Defender CSPM or Servers P2; agentless malware scanning is P2 only; it runs every 24 hours.
- Integrity monitoring needs vTPM needs trusted launch.
- Machine Configuration for in-guest settings; Azure Policy for resource properties.
- AKS: Entra plus Azure RBAC for Kubernetes, and disable local accounts, or the back door remains.
- ACR: disable the admin user, use
AcrPull, and remember quarantine and content trust are Premium. - Access restrictions and private endpoints are inbound; virtual network integration is outbound.
- WAF: Detection first, tune with exclusions and custom rules, then Prevention.
Next: Skill 4, where all of this becomes telemetry.