SC-500 Application Platform Security: AKS, Containers, Functions, App Service, WAF and API Management
Application platform security on SC-500 is the set of controls that protect Azure's managed hosting services: container workloads (Defender for Containers, AKS, Container Registry, Container Instances, Container Apps), serverless and web apps (Functions, Logic Apps, App Service), and the layers in front of them (Web Application Firewall and API Management). Each service has its own switches for who can reach it, how callers and the service itself authenticate, and where secrets live, and most questions turn on choosing the one control whose scope matches the requirement. This lesson walks through each service in the order of the official skills outline.
On this page10 sections
- How Defender for Containers detects misconfigurations and runtime threats
- AKS authentication and authorization with Microsoft Entra ID
- AKS network exposure, network policies and workload identity
- Azure Container Registry access and network controls
- Securing Azure Container Instances and Azure Container Apps
- Azure Functions authentication and network access
- Azure Logic Apps: trigger access, run history and secure data
- Azure App Service access restrictions, publishing credentials and TLS
- Azure Web Application Firewall on Application Gateway and Front Door
- Protecting back-end APIs with Azure API Management policies
- Explain which Defender for Containers detections are agentless and which need the Defender sensor, and choose between Azure Policy for Kubernetes and gated deployment to block risky workloads at admission
- Secure AKS access with Entra integration, disabled local accounts, certificate rotation, Azure RBAC roles at namespace scope, private clusters or authorized IP ranges, network policies and Workload ID
- Authenticate to Azure Container Registry at least privilege (AcrPull, attach-acr, tokens and scope maps) and apply its Premium-only network controls
- Protect secrets and network exposure in Container Instances and Container Apps, including ingress modes, IP restrictions and Key Vault reference secrets
- Configure Azure Functions and Logic Apps authentication, plan-dependent network access, identity-based connections and run-history protection
- Harden App Service with access restrictions, Front Door header filters, SCM rules, publishing credentials, HTTPS Only and minimum TLS
- Configure WAF modes, tiers, exclusions and custom rules, and API Management policies that throttle, validate tokens and authenticate to the back end
How Defender for Containers detects misconfigurations and runtime threats
Defender for Containers protects container workloads with a mix of agentless components and one in-cluster sensor, and which detection you get depends on which component is running. Registry scanning, cluster discovery and Kubernetes audit-log analysis need nothing installed in the cluster. Anything that has to watch processes inside running containers needs the Defender sensor.
| Component | How it works | What it gives you |
|---|---|---|
| Agentless container vulnerability assessment | Scans images in Azure Container Registry (and other supported registries) without anything in the cluster | Vulnerability findings per image, available before a pod ever starts |
| Agentless discovery for Kubernetes | Reads cluster configuration through Azure APIs | Inventory, posture recommendations and attack paths (with Defender CSPM) |
| Kubernetes audit-log detections | Analyses control-plane audit logs collected by Defender | Alerts on suspicious API activity, such as a new privileged role binding |
| Defender sensor | A DaemonSet (eBPF-based) on every node | Runtime threat detection on processes, files and network activity inside containers (for example a crypto-miner starting in a pod), binary drift detection and blocking, and the admission enforcement used by gated deployment |
| Azure Policy for Kubernetes add-on | An admission controller (Gatekeeper) that checks every request to the API server | Data-plane hardening: audit or deny pod specs that break policy, such as privileged containers or host access |
Each component covers its own signal, so a missing alert type points at the component that produces it: runtime threats seen inside a node, such as a malicious process, need the sensor, while vulnerability findings and control-plane alerts arrive without it. Container insights (Azure Monitor) is a monitoring feature, not a Defender threat-detection component.
Blocking risky workloads at admission
Two controls stop a deployment before it runs, and they decide on different evidence:
- Azure Policy for Kubernetes decides on the pod specification. Assign a built-in definition such as "Kubernetes cluster should not allow privileged containers" with the Deny effect and the API server rejects a privileged pod spec; with Audit it only reports. A policy that restricts images to allowed registries controls where an image comes from, not whether it is vulnerable.
- Gated deployment decides on the image's vulnerability findings. Defender for Cloud security rules (audit or deny) are evaluated at admission against the findings that agentless registry scanning already produced, so an image with critical CVEs can be stopped at deploy time. It needs both the registry findings and the sensor, which performs the admission check.
Other runtime and posture tools act at different moments: binary drift blocking stops unexpected executables from running inside a container after it starts, and the Defender CSPM cloud security explorer and attack paths find and prioritise risk but never reject a request. Node-level scanning by Defender for Servers covers the node VM operating system, not the container images deployed to it.
AKS network exposure, network policies and workload identity
AKS network security has two layers: how the API server (control plane) is exposed, and which pods may talk to each other. Workload identity then decides how pods authenticate to Azure services without stored secrets.
API server: private cluster vs authorized IP ranges
| Private cluster | API server authorized IP ranges | |
|---|---|---|
| Public endpoint | None; the API server has a private IP in the virtual network | Kept, but only listed CIDRs can connect |
| Who can reach it | Clients in the VNet, peered networks or connected on-premises networks | Listed public IP ranges, including internet-hosted CI services |
| Typical requirement | "No public control-plane endpoint" | "Block every other internet source" on a cluster that must stay public |
| Existing cluster | Normally chosen at creation | Set or changed with az aks update --api-server-authorized-ip-ranges |
The managed control plane isn't in the node subnet, so an NSG on that subnet doesn't change API server exposure. Disabling local accounts is an identity control and doesn't restrict network sources.
Pod-to-pod traffic: Kubernetes network policies
Network policies select pods by label and namespace and allow or deny traffic between them, including pods on the same node. They need a policy engine, such as Azure CNI powered by Cilium or Calico. NSGs and Azure Firewall work at subnet, NIC or egress boundaries and can't see pod labels or traffic inside a node. Pod Security Admission restricts what a pod spec may request (privileges, host access); it doesn't filter connections.
Microsoft Entra Workload ID
Workload ID lets one pod obtain an Entra token for one managed identity (or app registration) through identity federation, with no secret stored in the cluster. It replaced pod-managed identity, now deprecated and retired, (AzureIdentity and AzureIdentityBinding). The pieces:
- Enable the cluster's OIDC issuer and workload identity (
--enable-oidc-issuer --enable-workload-identity). - Create a Kubernetes service account annotated with the identity's client ID (
azure.workload.identity/client-id). - Add a federated identity credential on the identity with the cluster's issuer URL, subject
system:serviceaccount:<namespace>:<service-account>and audienceapi://AzureADTokenExchange. - Label the pod
azure.workload.identity/use: "true". The mutating webhook then injects variables such asAZURE_FEDERATED_TOKEN_FILEand the projected token. - Grant the identity its data role, for example Key Vault Secrets User.
Troubleshooting follows that order. If the token file is injected, the webhook and label worked. An Entra error such as AADSTS70021 (no matching federated identity record) means the issuer, subject or audience in the federated credential doesn't match what the pod's token carries; compare each of the three values character for character. A missing role shows up later, as an authorization error from the target service after a token was issued. Avoid the kubelet managed identity for application access: every pod on the node can use it.
Azure Container Registry access and network controls
Azure Container Registry security comes down to authenticating pulls and pushes with Entra identities at least privilege, and closing network access, which needs the Premium tier.
Authentication options
| Option | Use it when | Limits |
|---|---|---|
| Entra identity + AcrPull | A cluster, app or pipeline only pulls images | Needs an Entra identity |
| Entra identity + AcrPush | A build system pushes (AcrPush includes pull) | More than a pull-only consumer needs |
az aks update --attach-acr | AKS must pull from a registry | Grants the cluster's kubelet identity AcrPull on that registry; no image pull secrets |
| Admin user | Avoid; it's disabled by default | One shared username and password with full rights to every repository |
| Tokens with scope maps | A client can't use Entra ID and needs docker login with a name and password | Repository-scoped actions (content/read, content/write, content/delete, metadata/read, metadata/write), wildcards such as vendor/*; each token can be disabled or deleted on its own. Available on all tiers; can't be assigned to Entra identities. |
| Entra ABAC repository permissions | Entra identities must be limited to certain repositories | Role assignment conditions scope access by repository, but the caller still needs an Entra identity |
Contributor on the registry adds management rights and is never the least-privilege answer for pulling or pushing.
Network controls are Premium-only
Private endpoints, public IP network rules, service endpoint access (preview) and customer-managed keys require the Premium tier. To give build agents a private IP path and close the internet: move to Premium, create a private endpoint, then disable public network access. IP rules only filter the public endpoint, and the service-endpoint option still targets the registry's public address. The Allow trusted Microsoft services exception lets selected Azure services (for example ACR Tasks or Defender scanning) bypass network rules; it gives your own clients no private path.
Securing Azure Container Instances and Azure Container Apps
Container Instances (ACI) and Container Apps run containers without a cluster to manage, so their security controls are settings on the container group or app: how secrets reach the container, whether it is on a virtual network, and who can reach its endpoint.
Azure Container Instances
- Secure environment variables (
secureValuein YAML,--secure-environment-variablesin the CLI) reach the container as normal environment variables but aren't returned in the container group's properties in the portal oraz container show. A plainvalueis visible there. - Secret volumes deliver values as files (backed by tmpfs) mounted into the container. Use them when the app reads files; they don't satisfy an app that must read an environment variable. Azure Files mounts also deliver files and put data in a storage share.
- Virtual network deployment: a container group deployed into a subnet delegated to Container Instances gets a private IP and no public IP, and can reach private endpoints in that network. A service endpoint doesn't put the group inside the VNet.
- Managed identity (system- or user-assigned) authenticates the container to Key Vault, Storage or ACR without stored credentials. It solves authentication, not network reachability.
Azure Container Apps ingress
Two settings combine. The environment is external (public load balancer) or internal (internal load balancer in your VNet). Each app's ingress is either:
| App ingress setting | External environment | Internal environment |
|---|---|---|
| Accepting traffic from anywhere (external ingress) | Reachable from the internet | Reachable from the whole virtual network |
| Limited to Container Apps Environment (internal ingress) | Only other apps in the same environment | Only other apps in the same environment |
| Ingress disabled | No inbound HTTP traffic, even from other apps | No inbound HTTP traffic, even from other apps |
Further per-app controls:
- IP ingress restrictions: per-app allow or deny rules for source IP ranges (all rules on an app use the same mode). They restrict one app while its neighbours stay public; an NSG on the environment subnet would affect every app in the environment.
- Built-in authentication (Easy Auth) requires sign-in with an identity provider; it checks identity, not source address.
- Key Vault reference secrets: define an app secret whose value is a Key Vault secret URI read with the app's managed identity, then map it to an environment variable with
secretRef. The identity needs only Key Vault Secrets User (RBAC model); Secrets Officer adds write and delete. A versionless URI lets the app pick up new versions automatically (Microsoft documents within about 30 minutes) and restarts revisions that use it as an environment variable; a versioned URI pins one version. The@Microsoft.KeyVault(...)syntax belongs to App Service and Functions app settings; Container Apps would pass it to the container as a literal string.
Azure Functions authentication and network access
Securing Azure Functions means choosing how callers authenticate (App Service Authentication or access keys), which network features the hosting plan allows, and how the app authenticates to its own dependencies.
Authentication: Easy Auth vs access keys
HTTP triggers have an authorization level: anonymous, function (a function key or host key) or admin (the master key). Keys are shared secrets that identify an app, not a user, and anything in a browser can be read. The master key grants admin access to the whole function app. When every request must carry an Entra token and developers won't write validation code, use App Service Authentication (Easy Auth) with the Microsoft identity provider: the platform validates the token before the request reaches the function. CORS only tells browsers which origins may call; it authenticates nothing.
Network features depend on the hosting plan
| Plan | Inbound access restrictions | Inbound private endpoint | Outbound VNet integration | Scale to zero / per-execution billing |
|---|---|---|---|---|
| Consumption | Yes | No | No | Yes |
| Flex Consumption | Yes | Yes | Yes | Yes |
| Elastic Premium | Yes | Yes | Yes | No; at least one instance stays warm and billed |
| Dedicated (App Service plan) | Yes | Yes | Yes | No |
Access restrictions filter callers of the public endpoint; they never give the app a private IP. Inbound and outbound are separate: a private endpoint on the app governs traffic to it, while VNet integration gives the app an outbound path into a network. To reach a storage account whose public access is disabled, the app needs VNet integration plus DNS that resolves the account to its private endpoint, which means linking the privatelink.blob.core.windows.net private DNS zone to the integrated network. A service endpoint targets the public endpoint, which a disabled account refuses. (General Private Link design is covered in the networking lesson.)
Identity-based connections and Key Vault references
- Replace the host storage connection string with
AzureWebJobsStorage__accountName(or the service URI settings) so the host connects with its managed identity, and grant a data-plane role such as Storage Blob Data Owner (plus queue or table roles if triggers need them). Storage Account Contributor is a management role with no blob data actions. - On Consumption and Elastic Premium, the Azure Files content share setting (
WEBSITE_CONTENTAZUREFILECONNECTIONSTRING) still needs a connection string, because Azure Files doesn't support identity-based connections for it. - Key Vault references (
@Microsoft.KeyVault(SecretUri=...)in an app setting) keep secret values out of configuration, but a referenced account key or SAS token is still a shared secret. Use them when a secret is unavoidable, and identity-based connections when the target supports Entra ID.
Azure Logic Apps: trigger access, run history and secure data
Logic Apps security controls who can start a workflow (trigger authorization and IP restrictions) and who can see the data that flows through it (run history access and secure inputs and outputs).
Request trigger authorization
- Shared access signature (SAS): the callback URL copied from the designer contains SAS query parameters (
sp,sv,sig). Anyone with the URL can call. Regenerating access keys invalidates old URLs. - OAuth with Microsoft Entra ID (Consumption): add an authorization policy with claims such as issuer and audience; callers send a bearer token. A request may use only one scheme: a call that carries both SAS parameters and a bearer token fails, so OAuth callers must use the trigger URL without the SAS parameters. To refuse SAS altogether on a Consumption workflow, disable it through
sasAuthenticationPolicyunderaccessControl. - Standard (single-tenant) workflows can use App Service Authentication (Easy Auth) for Request triggers, and also support private endpoints for inbound traffic and VNet integration for outbound.
IP access control: triggers vs run history
| Setting (workflow settings, Access control) | What it restricts |
|---|---|
| Allowed inbound IP addresses for triggers | Which source addresses may call the Request trigger. Options: any IP, only other Logic Apps, or specific IP ranges |
| Allowed inbound IP addresses for run history content | Which addresses may view the inputs and outputs of every step in run history |
The two are independent. "Only other Logic Apps" accepts only parent workflows that call through the built-in Azure Logic Apps action; everything else is rejected, including API Management and even a logic app that uses the HTTP action. The run-history restriction hides all steps' data from callers outside the range.
Secure inputs and secure outputs
These per-step settings obscure data in run history (and in run history API responses) for one trigger or action. Secure inputs hides what the step received; secure outputs hides what it returned. Securing the outputs of a step also obscures the inputs of later actions that explicitly use them. Choose the half that matches the data you must protect: securing both when only one side is sensitive hides more of the run history than the requirement asks for, which slows troubleshooting. Neither setting changes who can start the workflow.
Azure App Service access restrictions, publishing credentials and TLS
App Service security settings control which sources reach the app and its deployment (SCM/Kudu) site, how deployments authenticate, and which protocols browsers may use.
Access restrictions
Access restriction rules allow or deny traffic by IP range, virtual network subnet (service endpoint) or service tag, evaluated by priority. When rules exist, the unmatched rule action decides the rest, and adding the first rule of any kind makes unmatched traffic default to deny unless the unmatched rule action is set to Allow. Rules can also carry HTTP header filters, limited to X-Forwarded-For, X-Forwarded-Host, X-Azure-FDID and X-FD-HealthProbe; they can't match an arbitrary custom header.
- Locking an app to one Front Door profile: the
AzureFrontDoor.Backendtag covers the addresses every customer's Front Door uses to reach origins, so add anX-Azure-FDIDfilter with your profile's ID to the same rule.AzureFrontDoor.Frontendis the wrong address set (what clients connect to), andX-Forwarded-Hostcan be set by any profile owner. - The same reasoning applies to the
ApiManagementservice tag: it matches every customer's APIM instances, so it doesn't prove a call came through yours. - Advanced tool site (SCM/Kudu): it can inherit the main site's rules or have its own. To keep the app public while limiting Kudu to build agents, give the advanced tool site its own Allow rule and don't use the main site rules. Disabling public network access or adding a private endpoint closes the whole app, not just Kudu.
Basic auth publishing credentials
Publish profiles hold a username and password. Two separate switches control them:
| Setting | Blocks |
|---|---|
| FTP Basic Auth Publishing Credentials off | FTP and FTPS sign-ins with basic credentials (the separate FTP state can also be Disabled or FTPS only) |
| SCM Basic Auth Publishing Credentials off | Web Deploy and other SCM-site sign-ins with basic credentials |
Deployments that authenticate with Microsoft Entra ID, such as GitHub Actions with OpenID Connect, keep working. Resetting the publish profile only rotates the credentials, and a network rule that denies the SCM site also blocks legitimate deployment through it.
HTTPS, TLS and client certificates
- HTTPS Only redirects plain HTTP requests to HTTPS.
- Minimum Inbound TLS Version rejects clients that negotiate older TLS on the site; SCM Minimum Inbound TLS Version is the separate setting for the Kudu site.
- Client certificate mode (Required, Optional, Optional interactive user) asks clients for a certificate (mutual TLS). App Service forwards the certificate to the app (in the
X-ARR-ClientCertheader); validating which certificate is acceptable is the app code's job. - Access restrictions filter by source, not by port, so they can't redirect HTTP.
Azure Web Application Firewall on Application Gateway and Front Door
Azure Web Application Firewall (WAF) inspects HTTP requests against managed rule sets and your own custom rules, on Application Gateway (regional) or Azure Front Door (global edge), and its policy mode decides whether matches are blocked or only logged.
Mode and tier
- Detection mode logs matches and lets every request through; Prevention mode takes the rule action (block, for example). Detection is the usual starting mode for tuning false positives before switching to Prevention. This applies to custom rules as well as managed rules.
- Application Gateway WAF v2 supports the Microsoft Default Rule Set (DRS) or OWASP CRS, a bot protection rule set, custom rules and request body inspection settings.
- On Front Door, Standard supports custom rules (including geo-filtering and rate limiting); the Microsoft-managed rule set and bot protection need Premium. A profile can be upgraded from Standard to Premium. Application Gateway WAF policies can't be attached to Front Door.
Tuning false positives without losing coverage
- Exclusions stop managed rules inspecting a named request attribute (a header, cookie, query argument or request body field). Scope them to the one rule that misfires (per-rule exclusion) rather than the whole rule set, so other rules still inspect that field. Exclusions apply to managed rules and request attributes; they can't exempt a client IP.
- Per-site and per-URI policies (Application Gateway WAF v2): associate a separate WAF policy with a listener or a path-based rule such as
/support/*. That policy replaces the global one for that path, so it should otherwise mirror the global managed rules and settings. - Avoid broad fixes: disabling a rule globally, turning off request body inspection, or an Allow custom rule on a path all remove far more protection than the false positive needs.
Custom rules
Custom rules have a match condition (IP, geo location, request URI, headers and so on), an action (Allow, Block, Log, Redirect on Front Door) and a priority. They are evaluated before managed rules, in ascending priority number: a lower number runs first. Allow and Block stop further processing; Log records the match and continues. So an allow-list exception must have a lower priority number than the block rule it overrides, and an Allow match also skips managed rule evaluation for that request.
- Rate limit rules count requests per client over a time window and act once the threshold is crossed. Front Door Standard and Premium count by client socket IP over a one- or five-minute window; Application Gateway WAF v2 supports them too (on CRS 3.2 or later), grouping by client address, geolocation or the X-Forwarded-For header; add a match condition to target, say, a login path. Like any rule, they only block in Prevention mode.
- Geo-filtering blocks or allows by country, which also affects legitimate users in that country; it isn't a rate control. Bot protection classifies bots by signature and reputation rather than enforcing a request ceiling.
Protecting back-end APIs with Azure API Management policies
API Management protects a back end in two directions: inbound policies decide which client requests are allowed through and how many, and back-end authentication proves to the API that a call came from your APIM instance. (AI Gateway policies for model endpoints are covered in the AI security lesson.)
Inbound protection
| Policy | What it does |
|---|---|
rate-limit / quota | Limit calls per subscription; with no subscriptions there's no per-client counter |
rate-limit-by-key / quota-by-key | Keep a separate counter per expression you choose, for example counter-key="@(context.Request.IpAddress)" for anonymous callers. A constant key (such as the service name) creates one shared counter. |
ip-filter | Allow or forbid listed addresses; an allow/deny control, not a throttle |
validate-jwt | Validate a JWT from any OpenID Connect provider: signing keys from an openid-config URL (or listed keys), plus required audiences, issuers and claims |
validate-azure-ad-token | Validate tokens issued by Microsoft Entra ID only (tenant ID, audiences, client application IDs); simpler for Entra, unusable for Okta or other issuers |
validate-client-certificate | Check the certificate a client presents to APIM |
check-header | Confirm a header exists or has listed values; it doesn't verify a token |
<inbound>
<rate-limit-by-key calls="20" renewal-period="10"
counter-key="@(context.Request.IpAddress)" />
</inbound>
Back-end authentication
authentication-managed-identity: APIM obtains an Entra token for its own managed identity for the resource you name and attaches it to the back-end call. Pair it with App Service Authentication on the back end, configured to accept that audience and only APIM's identity, and the API rejects calls that don't come through this instance, with no code change and no secret to store or rotate.authentication-certificate: APIM presents a client certificate on the TLS connection to the back end (mutual TLS). Add the certificate to APIM as a Key Vault reference read with APIM's managed identity so renewed versions are picked up automatically; an uploaded PFX must be replaced by hand. A back end that requires mutual TLS rejects a token-only call.- Network-only approaches have limits: the
ApiManagementservice tag is shared by all customers' instances, and App Service header filters can't match a custom shared-secret header (which would also need rotating). Private networking between APIM and the back end is the network-layer alternative.
Tip. Expect short Microsoft-style scenarios: a company, one application platform service and a requirement, followed by which setting, role, policy or deployment choice to configure. Questions turn on near-twin controls whose scope differs: the Defender sensor vs agentless components, Azure Policy for Kubernetes vs gated deployment, private cluster vs authorized IP ranges, AKS RBAC roles vs the Cluster User Role, AcrPull vs AcrPush vs tokens and scope maps, internal vs external Container Apps ingress, Functions hosting plans and inbound vs outbound networking, SAS vs OAuth on Logic Apps triggers, secure inputs vs secure outputs, FTP vs SCM basic auth and site vs SCM TLS, Front Door Standard vs Premium, Detection vs Prevention and custom rule priority, and validate-jwt vs validate-azure-ad-token or managed identity vs certificate back-end authentication. Constraints such as least privilege, no stored secrets, no code change or keeping other apps public usually decide the answer, and some items ask you to select two.
- Defender for Containers: registry scanning, discovery and audit-log alerts are agentless; process-level runtime detection, drift blocking and gated deployment need the Defender sensor.
- Azure Policy for Kubernetes blocks pod specs (privileged, host access) at admission; gated deployment blocks images on their existing vulnerability findings.
- Disable AKS local accounts so access goes through Entra ID, and on an existing cluster rotate certificates to revoke admin kubeconfigs already issued.
- AKS RBAC Reader/Writer/Admin roles can be scoped to a namespace; the Cluster User Role only downloads a kubeconfig.
- Private cluster = no public API endpoint; authorized IP ranges = a public endpoint filtered to listed CIDRs, settable on an existing cluster.
- Workload ID federates a service account to one identity: subject system:serviceaccount:<namespace>:<name>, audience api://AzureADTokenExchange; pod-managed identity is deprecated and retired.
- ACR: AcrPull via attach-acr for clusters, tokens with scope maps for non-Entra clients, and private endpoints or IP rules only on Premium.
- Functions: Consumption has no private endpoint or VNet integration; Flex Consumption adds both and still scales to zero; outbound to a private endpoint needs VNet integration plus the private DNS zone.
- Logic Apps: one auth scheme per Request-trigger call, separate IP controls for triggers and run history, secure inputs vs secure outputs per step.
- WAF only blocks in Prevention mode; Front Door managed rules and bot protection need Premium; custom rules run lowest priority number first and Allow stops evaluation.
Frequently asked questions
Why doesn't Defender for Containers alert on a malicious process inside a pod?
Process-level runtime threat detection in Defender for Containers comes from the Defender sensor, a DaemonSet that runs on every node. Agentless components such as registry vulnerability scanning, Kubernetes discovery and audit-log analysis keep working without it, but they can't see processes inside containers, so a cluster without the sensor produces no runtime alert for something like a crypto-miner starting in a pod.
What is the difference between an AKS private cluster and API server authorized IP ranges?
A private AKS cluster gives the Kubernetes API server a private IP address in the virtual network, so there is no public control-plane endpoint. Authorized IP ranges keep the public endpoint but accept connections only from listed CIDR ranges, which suits clusters that internet-hosted tools must still reach, and they can be applied to an existing cluster with az aks update.
How do you stop AKS admin kubeconfigs from bypassing Microsoft Entra ID?
Disable local accounts on the Entra-integrated cluster with az aks update --disable-local-accounts, which stops anyone downloading a new static admin kubeconfig. On an existing cluster, also rotate the cluster certificates with az aks rotate-certs, because kubeconfigs issued before the change keep working until the certificates are replaced.
When should you use Azure Container Registry tokens and scope maps?
Use a registry token with a scope map when a client can't authenticate with Microsoft Entra ID and must use docker login with a name and password. The scope map limits the token to specific repositories and actions, such as content/read and content/write on vendor/*, and each token can be disabled on its own. Tokens work on every ACR tier, while Entra identities with AcrPull or AcrPush remain the preferred option for clients that support them.
Which Azure Functions hosting plans support private endpoints?
Flex Consumption, Elastic Premium and Dedicated (App Service) plans support inbound private endpoints and outbound virtual network integration. The Consumption plan supports only inbound access restrictions on the public endpoint. Flex Consumption is the option that combines private networking with per-execution billing and scale to zero.
How do you allow only your own Azure Front Door profile to reach an App Service app?
Add an access restriction rule that allows the AzureFrontDoor.Backend service tag and add an X-Azure-FDID header filter containing your Front Door profile's ID. The service tag alone matches traffic from every customer's Front Door, while the X-Azure-FDID header carries the unique ID of the profile that forwarded the request.
What is the difference between WAF Detection and Prevention modes?
In Detection mode Azure Web Application Firewall evaluates managed and custom rules and logs matches but lets every request through. In Prevention mode it takes each matching rule's action, such as blocking the request. A policy whose logs show matches while attacks still reach the back end is in Detection mode.
What is the difference between validate-jwt and validate-azure-ad-token in API Management?
validate-azure-ad-token validates only tokens issued by Microsoft Entra ID, using the tenant ID, audiences and client application IDs you specify. validate-jwt validates JSON Web Tokens from any OpenID Connect provider, such as Okta, by fetching signing keys from the provider's openid-config discovery URL and enforcing the required audiences, issuers and claims.
Source
This lesson covers the "Secure compute" domain of the official SC-500 exam guide. Vendors revise their guides — check the source for the current version.
- Microsoft SC-500 study guide — Microsoft Learn
Sign up free to mark lessons complete, bookmark topics and track your exam readiness.