<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>rss.livelink.threads-in-node</title>
    <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/ct-p/cis</link>
    <description>rss.livelink.threads-in-node</description>
    <pubDate>Mon, 11 May 2026 06:10:32 GMT</pubDate>
    <dc:creator>cis</dc:creator>
    <dc:date>2026-05-11T06:10:32Z</dc:date>
    <item>
      <title>Purpose For Your PKI (Practical PKI Part 3)</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/purpose-for-your-pki-practical-pki-part-3/ba-p/4512518</link>
      <description>&lt;P&gt;My name is Ron Arestia, and I am a Security Researcher with Microsoft’s Detection and Response Team (DART). We respond to customer cybersecurity incidents to assist with containment and recovery from threat actors. In this brief blog post, we will discuss the “why” behind your PKI. This is part 3 of a series on practical PKI implementation based on my experience with customer interactions working as a Microsoft engineer.&lt;/P&gt;
&lt;P&gt;Feel free to catch up on previous blog posts or jump right into this one&lt;/P&gt;
&lt;P&gt;&lt;A href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/secure-configuration-and-hardening-of-active-directory-certificate-services/4463240" target="_blank" rel="noopener"&gt;Secure Configuration and Hardening of Active Directory Certificate Services&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/implementing-and-managing-an-adcs-offline-root-certificate-authority-part-1/4468175" target="_blank" rel="noopener"&gt;Implementing and Managing an ADCS Offline Root Certificate Authority (Practical PKI Part 1)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/crl--aia-publishing-guidance-practical-pki-part-2/4485713" target="_blank" rel="noopener"&gt;CRL &amp;amp; AIA Publishing Guidance (Practical PKI Part 2)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;In Part 3 of our series, understanding why you are implementing and managing PKI is critical to understanding the level of effort you should endeavor to start using one or keep one going. This brief non-technical discussion is meant as a primer to determine if what you are about to implement is truly going to benefit your organization as a whole.&lt;/P&gt;
&lt;H1&gt;Determine Your Technical Outcomes&lt;/H1&gt;
&lt;P&gt;This subject is the target of much debate and disagreement across my peer groups. On the one side, you have engineers who argue for or against the very provisioning of a PKI while on the other side, you have engineers who argue that regardless of purpose, administration is more important. Far be it for me to be a fence-sitter, so I stand firmly in the former group arguing that if you do not need it, you should not bother standing it up in the first place.&lt;/P&gt;
&lt;P&gt;A few years ago, I was working with a customer with a substantial PKI presence: three issuing CAs, fully redundant HTTP CRL publishing, CEP/CES, and cross-forest publishing. When we were assessing their environment, I noticed immediately that they had a scant few templates published across those three issuers, but they had over 100,000 issued, active certificates. I dug deeper and noticed that every one of their templates except two were configured with autoenrollment. Every user and every computer in their organization was getting a certificate that was published to Active Directory. They were issuing server authentication certificates with enrollee-supplied Subject Alternative Names (SANs) without manager approval. And they were even issuing code signing certificates without manager approval albeit to a constrained group.&lt;/P&gt;
&lt;P&gt;After lengthy discussions with them about their reasons for managing a PKI, I discovered a few very telling things:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Despite aspirations to use 802.1x for user and computer authentication, the infrastructure was never implemented and remained in a state of development for the last few years.&lt;/LI&gt;
&lt;LI&gt;Despite a project to setup smart card authentication, they never moved past a pilot group of developers and administrators who were not bothering to leverage this powerful method of authentication across most of their enterprise anyway.&lt;/LI&gt;
&lt;LI&gt;Approximately 90% of their certificates issued for web endpoints were either development endpoints that never made it to production or misconfigured certificates that had to be reissued to correct spelling errors or to add or remove nodes from SANs that were not in the original configuration.&lt;/LI&gt;
&lt;LI&gt;More than 1,000 code signing certificates were issued, but no official code was signed by their recollection.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;By the end of the engagement, they realized how much administrative overhead was going into maintaining a massive solution with little actual value for the organization. They had short root CA CRL lifetimes requiring quarterly “signing parties,” and despite a very astute team of engineers maintaining the PKI, they had built in “automation” paths that left their environment vulnerable to attack if a threat actor ever found their way in. All told, we determined that less than 2% of the total number of issued certificates (approximately 2,500) were actively used for a regular production task.&lt;/P&gt;
&lt;P&gt;Even after discussing options to downsize, streamline, and harden their PKI infrastructure, we eventually discussed options to offload much of their certificate needs to third-party solutions. Why would I convince a customer to rid themselves of an in-house PKI?&lt;/P&gt;
&lt;H1&gt;Are You Experienced?&lt;/H1&gt;
&lt;P&gt;I believe the most important fundamental question to ask as an enterprise is if you have the staff to manage and maintain a PKI, and if so, to what extent? I would argue that having at least two engineers dedicated to this task is critical for personnel fault tolerance. If one engineer goes on vacation or suddenly resigns, you have someone who can continue to operate the environment to the same level of fidelity expected of it. This guidance scales upwards the larger your PKI grows. If you are a multinational enterprise with issuing CAs spread around the globe, you need, at the least, regional expertise to navigate administration and maintenance tasks. Ideally, you would have a resource local to each environment to ensure someone can put hands on the systems without relying on global networking.&lt;/P&gt;
&lt;P&gt;The second fundamental question you should ask: what is the primary purpose of my public key infrastructure? Are you using it to manage an 802.1x authentication scheme across your enterprise? Are you managing smart cards or certificate-based authentication for your organization? Are you looking to issue a large number of server authentication certificates to support internal web endpoints or development efforts? Or do you believe that by maintaining your own PKI you are maintaining some level of sovereignty over your cryptographic operations that you do not want to offload to a third-party or a cloud provider?&lt;/P&gt;
&lt;P&gt;All of these are perfectly valid reasons to maintain your own PKI, but each comes with challenges and interoperability requirements that should be documented and thoroughly understood. In 802.1x configurations, you should ensure all of your subordinate infrastructure is prepared and up to the task of handling authentication traffic and overall maintenance. One network appliance outage overnight could mean an entire office is unable to work the next morning. Smartcard and certificate-based authentication require a robust infrastructure and a team of individuals dedicated to the task of identity attribution for assignment and provisioning of those certificates. Web endpoint certificate management can quickly grow into a full-time role for an engineer in an environment with rapid iteration, and there is a delicate balance to be struck between reasonable validity periods and the possibility of regular revocation due to changes that can balloon a CRL. Finally, the decision to maintain sovereignty over certificates is often driven by cost. A true cost-benefit analysis can aid in reinforcing or diminishing from the need to stand up a dedicated PKI, and the reality is that having publicly-trusted certificates is often a much simpler solution than relying on visibility to internal publishing endpoints that require a number of security solutions.&lt;/P&gt;
&lt;H1&gt;Decisions, Decisions&lt;/H1&gt;
&lt;P&gt;The decision to stand up a dedicated, in-house PKI is not one that should be taken lightly. Sit down with your management and leadership team to outline the high-level outcomes expected of the solution and be the sober voice in the room to explain both the benefits and disadvantages of the proposed solution. If the determination to proceed is not grounded in realistic capabilities of the enterprise, do not be afraid to pull the security card, at a minimum. The security of your PKI is paramount. Without it, you are paying money to power infrastructure that is, at best, churning out unnecessary certificates, and at worst, putting your entire enterprise at risk of a cybersecurity incident.&lt;/P&gt;
&lt;P&gt;How do we secure and maintain your PKI once the decision is made to deploy one? In Part 4, we will get back into the technical discussions about your PKI security and how to maximize your security without compromising functionality.&lt;/P&gt;</description>
      <pubDate>Mon, 04 May 2026 04:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/purpose-for-your-pki-practical-pki-part-3/ba-p/4512518</guid>
      <dc:creator>RonArestia</dc:creator>
      <dc:date>2026-05-04T04:00:00Z</dc:date>
    </item>
    <item>
      <title>Hardening OpenClaw on AKS: Mitigating Container Escapes with Kata microVM Isolation</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/hardening-openclaw-on-aks-mitigating-container-escapes-with-kata/ba-p/4516030</link>
      <description>&lt;H2&gt;What is OpenClaw, and what security challenges does it pose with container escapes?&lt;/H2&gt;
&lt;P&gt;OpenClaw is an open-source autonomous AI agent designed for power users and developers to automate tasks, such as managing emails, files, and scheduling via chat apps like WhatsApp or Telegram.&lt;/P&gt;
&lt;P&gt;While OpenClaw functions as a powerful autonomous assistant, its &lt;STRONG&gt;runtime model&lt;/STRONG&gt; creates a massive security paradox: to be truly useful, the agent requires broad permissions to your filesystem and APIs, yet this "God Mode" access often lacks the rigorous &lt;STRONG&gt;containerized isolation&lt;/STRONG&gt; typical of enterprise workloads. Because many users run the framework natively rather than within a hardened sandbox, the primary &lt;STRONG&gt;security challenge&lt;/STRONG&gt; is that a single malicious "Skill" or an indirect prompt injection can escalate into full system compromise. This structural vulnerability, exemplified by high-profile exploits like &lt;STRONG&gt;CVE-2026-25253&lt;/STRONG&gt;, transforms the agent from a helpful tool into a high-risk entry point for lateral movement and data exfiltration within a private network.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Why container escapes matter in OpenClaw-style deployments&lt;/STRONG&gt;: because containers share the host kernel, a successful container escape turns a single compromised container into a host compromise (or at least a compromise of other co-located workloads). This is especially important when OpenClaw runs code from many tenants, many teams, or varying trust levels on the same worker nodes. That soft isolation is often &lt;STRONG&gt;permeable&lt;/STRONG&gt; due to the following structural and configuration-based weaknesses:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Shared-kernel attack surface&lt;/STRONG&gt;: the container boundary is not a hypervisor boundary. Kernel vulnerabilities (e.g., privilege escalation bugs) can allow a process in a container to gain host-level privileges.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Excessive privileges / misconfiguration&lt;/STRONG&gt;: running with &lt;EM&gt;--privileged&lt;/EM&gt;, broad Linux capabilities, hostPath mounts, access to the Docker socket, or device passthrough (e.g., /dev/kvm, /dev/fuse) can provide direct paths to host control.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Filesystem and namespace boundary breaks&lt;/STRONG&gt;: mount namespace confusion, writable host mounts, or mistakes in chroot/pivot_root handling can expose host files and credentials.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Supply-chain and image risk&lt;/STRONG&gt;: a malicious image or dependency can execute within the container and then attempt escalation/escape.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Blast radius&lt;/STRONG&gt;: once the host is compromised, attackers can access node-level secrets (service account tokens, registry creds), tamper with the runtime, sniff traffic, or pivot to other containers and the broader cluster.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In short, OpenClaw’s security challenge is not that containers are inherently insecure, but that the isolation boundary is thinner than a VM boundary. When the threat model includes adversarial code execution, a “container-only” isolation strategy often requires additional hardening or a stronger sandbox.&lt;/P&gt;
&lt;H2&gt;What are MicroVMs and Kata Containers, and how do they help mitigate OpenClaw container-escape risks?&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;MicroVMs&lt;/STRONG&gt; are lightweight virtual machines optimized for running short-lived or container-like workloads with much lower overhead than traditional VMs. They use hardware virtualization (via a hypervisor such as KVM) but keep the device model and boot path minimal, reducing startup time and the overall attack surface compared to a full general-purpose VM.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Kata Containers&lt;/STRONG&gt; is an “OCI-compatible containers in a VM” approach: it runs each container (or pod sandbox) inside a dedicated microVM by default (implementation varies by runtime/config). To the orchestration layer (e.g., Kubernetes), it still looks like a container runtime, but isolation is provided by a hypervisor boundary rather than only namespaces/cgroups.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Stronger isolation boundary&lt;/STRONG&gt;: a container escape that relies on Linux kernel exploitation is far less likely to directly compromise the host, because the workload’s “host” kernel is typically the guest kernel inside the microVM.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Reduced blast radius&lt;/STRONG&gt;: compromise is contained to the microVM/pod sandbox; lateral movement to other workloads on the same node becomes significantly harder.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Smaller and more controllable attack surface&lt;/STRONG&gt;: minimal device models, tighter default privileges, and fewer host mounts/devices exposed to the workload.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Defense-in-depth with container controls&lt;/STRONG&gt;: you still can (and should) apply seccomp, capabilities dropping, read-only root filesystems, and LSMs inside the guest, but the hypervisor boundary becomes an additional layer.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Better fit for hostile multi-tenant workloads&lt;/STRONG&gt;: when OpenClaw executes third-party jobs/plugins, Kata-style sandboxing aligns better with an adversarial threat model.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Solution overview&lt;/H2&gt;
&lt;P&gt;Figure 1 illustrates a Kubernetes-based sandboxing architecture for running OpenClaw workloads with stronger isolation. The design keeps the developer experience and packaging model of containers (OCI images, Kubernetes scheduling) while ensuring that untrusted agent code executes inside a microVM boundary using Kata Containers. This reduces the likelihood that a container escape can compromise the underlying node or other co-located workloads.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Key components&lt;/STRONG&gt;: (1) &lt;STRONG&gt;Application gateway &lt;/STRONG&gt;for HTTPS traffic to the backend, (2) &lt;STRONG&gt;Kubernetes&lt;/STRONG&gt; as the orchestration, scheduling and policy enforcement plane, (3) a &lt;STRONG&gt;container runtime&lt;/STRONG&gt; (e.g., containerd) configured with a &lt;STRONG&gt;Kata Containers runtime class&lt;/STRONG&gt;, (4) &lt;STRONG&gt;KVM-backed microVMs&lt;/STRONG&gt; that provide the isolation boundary for each untrusted workload and (5) &lt;STRONG&gt;Azure files &lt;/STRONG&gt;for persistent storage which allows scaling of OpenClaw.&lt;/P&gt;
&lt;img&gt;
&lt;P&gt;&lt;EM&gt;Figure 1: Solution architecture diagram&lt;/EM&gt;&lt;/P&gt;
&lt;/img&gt;
&lt;P&gt;&lt;STRONG&gt;End-to-end flow&lt;/STRONG&gt;:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Traffic Entry via Application Gateway&lt;/STRONG&gt;: Incoming user requests (e.g., from WhatsApp or Discord) first hit the &lt;STRONG&gt;Azure Application Gateway&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Orchestration in AKS&lt;/STRONG&gt;: The traffic is routed into an &lt;STRONG&gt;Azure Kubernetes Service (AKS)&lt;/STRONG&gt; cluster, which manages the lifecycle of the OpenClaw agent and its associated "Skills."&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Hardened Execution via Kata Containers&lt;/STRONG&gt;: Instead of running in standard shared-kernel containers, the &lt;STRONG&gt;OpenClaw agent&lt;/STRONG&gt;&amp;nbsp;runs inside &lt;STRONG&gt;Kata Containers&lt;/STRONG&gt;. This provides a dedicated lightweight VM for the agent, creating a hardware-level isolation boundary that prevents "container escapes" from compromising the host.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Stateful Storage in Azure Files&lt;/STRONG&gt;: The agent interacts with &lt;STRONG&gt;Azure Files&lt;/STRONG&gt; to read and write persistent data, such as conversation history, configuration files, and downloaded assets, ensuring data remains available even if the container is restarted.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Security posture&lt;/STRONG&gt;: by shifting isolation from “shared-kernel containers” to “containers inside microVMs,” the architecture limits the blast radius of kernel-level exploits and common escape paths. Even if an attacker achieves code execution within an OpenClaw container, they must additionally break the microVM/hypervisor boundary to affect the node or neighboring workloads, providing a strong defense-in-depth improvement over standard container alone.&lt;/P&gt;
&lt;H2&gt;Implement the solution&lt;/H2&gt;
&lt;P&gt;This section describes how to deploy the solution architecture.&lt;/P&gt;
&lt;P&gt;In this post, you’ll perform the following tasks:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Create a Kata VM-isolated AKS node pool&lt;/LI&gt;
&lt;LI&gt;Mount a NFS persistent storage&lt;/LI&gt;
&lt;LI&gt;Create the application ConfigMap&lt;/LI&gt;
&lt;LI&gt;Deploy the OpenClaw gateway&lt;/LI&gt;
&lt;LI&gt;Expose the gateway internally&lt;/LI&gt;
&lt;LI&gt;Set up TLS termination&lt;/LI&gt;
&lt;LI&gt;Route external traffic through the Azure application gateway for containers.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Ensure that you have the following prerequisites deployed before moving to the next section:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;An &lt;A href="https://learn.microsoft.com/en-us/azure/aks/learn/quick-kubernetes-deploy-cli" target="_blank"&gt;AKS cluster&lt;/A&gt; provisioned in Azure&lt;/LI&gt;
&lt;LI&gt;An Azure NFS &lt;A href="https://learn.microsoft.com/en-us/azure/storage/files/create-file-share?tabs=azure-portal" target="_blank"&gt;File Share&lt;/A&gt; with private link enabled.&lt;/LI&gt;
&lt;LI&gt;An &lt;A href="https://learn.microsoft.com/en-us/azure/application-gateway/for-containers/quickstart-create-application-gateway-for-containers-managed-by-alb-controller?tabs=new-subnet-aks-vnet" target="_blank"&gt;Application gateway for containers&lt;/A&gt; managed by ALB controller&lt;/LI&gt;
&lt;LI&gt;Kubectl configured and pointing to the cluster&lt;/LI&gt;
&lt;LI&gt;Az CLI authenticated with the correct subscription&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Initialise environment variables&lt;/H2&gt;
&lt;P&gt;In your Linux terminal, export these variables with your own values. They will be used in later commands.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;export cluster_name=&amp;lt;CLUSTER_NAME&amp;gt;
export resource_group=&amp;lt;RESOURCE_GROUP&amp;gt;
&lt;/LI-CODE&gt;
&lt;H2&gt;Create the AKS Node Pool with Kata VM Isolation&lt;/H2&gt;
&lt;P&gt;The OpenClaw gateway pods require Kata VM isolation (runtimeClassName: kata-vm-isolation). You must create a dedicated AKS node pool that supports this runtime before deploying any workloads.&lt;/P&gt;
&lt;P&gt;Use the Azure CLI to add a node pool with the Kata VM isolation workload runtime to your existing AKS cluster:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;az aks nodepool add \
  --resource-group $resource_group \
  --cluster-name $cluster_name \
  --name katanp \
  --node-count 2 \
  --node-vm-size Standard_D4s_v3 \
  --os-sku AzureLinux \
  --workload-runtime KataMshvVmIsolation \
  --labels agentpool=katanp
&lt;/LI-CODE&gt;
&lt;P&gt;&lt;STRONG&gt;**Important:**&lt;/STRONG&gt; The `--workload-runtime KataMshvVmIsolation` flag enables the `kata-vm-isolation` runtime class on the node pool. The VM size must support nested virtualization (D-series v3/v5, E-series v3/v5, etc.).&lt;/P&gt;
&lt;H2&gt;Create NFS Persistent Volume&lt;/H2&gt;
&lt;P&gt;The deployment uses an Azure Files NFS share for persistent workspace storage. The PersistentVolume must exist before the PVC can bind to it. Replace volumeHandle and volumeAttributes with your own Azure Files values.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;cat &amp;lt;&amp;lt;EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
  name: openclaw-nfs-pv
spec:
  capacity:
    storage: 100Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  mountOptions:
    - sec=sys
    - noresvport
    - actimeo=30
  csi:
    driver: file.csi.azure.com
    volumeHandle: &amp;lt;resource-group&amp;gt;#&amp;lt;storage-account&amp;gt;#&amp;lt;share-name&amp;gt;
    volumeAttributes:
      resourceGroup: &amp;lt;resource-group&amp;gt;
      shareName: &amp;lt;share-name&amp;gt;
      protocol: nfs
      server: &amp;lt;storage-account&amp;gt;.privatelink.file.core.windows.net
EOF
&lt;/LI-CODE&gt;
&lt;P&gt;Verify that the persistent volume is created.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;kubectl get pv openclaw-nfs-pv&lt;/LI-CODE&gt;&lt;img&gt;
&lt;P&gt;&lt;EM&gt;Figure 2: Persistent volume&lt;/EM&gt;&lt;/P&gt;
&lt;/img&gt;
&lt;H2&gt;Create the NFS PersistentVolumeClaim&lt;/H2&gt;
&lt;P&gt;The PVC binds to the PV created. The deployment references this PVC by name (`pvc-openclaw-nfs`).&lt;/P&gt;
&lt;LI-CODE lang=""&gt;cat &amp;lt;&amp;lt;EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  # The name of the PVC
  name: pvc-openclaw-nfs
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      # The real storage capacity in the claim
      storage: 50Gi
  # This field must be the same as the storage class name in StorageClass
  storageClassName: ""
  volumeName: openclaw-nfs-pv
EOF
&lt;/LI-CODE&gt;
&lt;P&gt;Verify that the persistent volume claim is created successfully. The status should show bound.&lt;/P&gt;
&lt;img&gt;
&lt;P&gt;&lt;EM&gt;Figure 3: Persistent Volume Claim&lt;/EM&gt;&lt;/P&gt;
&lt;/img&gt;
&lt;H2&gt;Create the ConfigMap&lt;/H2&gt;
&lt;P&gt;The ConfigMap provides the openclaw.json configuration file to the gateway pods. It configures allowed CORS origins for the control UI and the gateway token. Replace the allowed origins with your own ALB frontend URL. The ConfigMap also stores the gateway auth token, so &lt;STRONG&gt;&lt;U&gt;DO NOT&lt;/U&gt;&lt;/STRONG&gt; hardcode your token here. Always keep it as a variable rather than storing it in plain text so that, if attackers gain access to this file, they cannot see the OpenClaw gateway auth token.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;cat &amp;lt;&amp;lt;EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
  name: openclaw-config
data:
  openclaw.json: |
    {
      "gateway": {
        "auth": {
          "token": "${AUTH_TOKEN}"
        },
        "controlUi": {
          "allowedOrigins": [
            "https://&amp;lt;YOUR ALB FRONTEND URL&amp;gt;.alb.azure.com"
          ]
        }
      }
    }
EOF
&lt;/LI-CODE&gt;
&lt;H2&gt;Create the Auth Token Secret&lt;/H2&gt;
&lt;P&gt;The OpenClaw gateway requires an authentication token to secure access. The deployment references a Kubernetes Secret named openclaw-auth-token and injects it into the container as the AUTH_TOKEN environment variable via secretKeyRef.&lt;/P&gt;
&lt;P&gt;Generate a random token (or use an existing one) and create the kubernetes secret.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;# Generate a random 32-byte hex token
AUTH_TOKEN=$(openssl rand -hex 32)
echo "$AUTH_TOKEN"   # save this — you'll need it to authenticate with the gateway

kubectl create secret generic openclaw-auth-token \
  --from-literal=token="$AUTH_TOKEN"
&lt;/LI-CODE&gt;
&lt;P&gt;If the secret does not exist when the deployment is applied, pods will fail with `CreateContainerConfigError`.&lt;/P&gt;
&lt;H2&gt;Deploy the OpenClaw Gateway&lt;/H2&gt;
&lt;P&gt;This is the main application deployment. It depends on all previous steps:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; - &lt;STRONG&gt;Kata node pool&lt;/STRONG&gt;&amp;nbsp;(pods require runtimeClassName: kata-vm-isolation and nodeSelector: agentpool=katanp)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; - &lt;STRONG&gt;PVC&lt;/STRONG&gt;&amp;nbsp;(pvc-openclaw-nfs for persistent workspace data)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; - &lt;STRONG&gt;ConfigMap&lt;/STRONG&gt;&amp;nbsp;(openclaw-config for openclaw.json)&lt;/P&gt;
&lt;P&gt;Key details:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; - Runs &lt;STRONG&gt;2 replicas&lt;/STRONG&gt;&amp;nbsp;with a rolling update strategy&lt;/P&gt;
&lt;P&gt;&amp;nbsp; - Uses an &lt;STRONG&gt;init container&lt;/STRONG&gt;&amp;nbsp;to copy the config file to a writable volume&lt;/P&gt;
&lt;P&gt;&amp;nbsp; - Exposes port &lt;STRONG&gt;18789&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; - Includes liveness and readiness probes on /health&lt;/P&gt;
&lt;P&gt;&amp;nbsp; - Resource requests: 500m CPU, 512Mi memory&lt;/P&gt;
&lt;P&gt;&amp;nbsp; - Resource limits: 2 CPU, 2Gi memory&lt;/P&gt;
&lt;LI-CODE lang=""&gt;cat &amp;lt;&amp;lt;EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
  name: openclaw-gateway
spec:
  replicas: 2
  selector:
    matchLabels:
      app: openclaw-gateway
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  template:
    metadata:
      labels:
        app: openclaw-gateway
    spec:
      runtimeClassName: kata-vm-isolation
      nodeSelector:
        agentpool: katanp
      securityContext:
        fsGroup: 1000
      initContainers:
        - name: copy-openclaw-config
          image: alpine/openclaw:latest
          env:
            - name: HOME
              value: /writable
          command:
            - sh
            - -c
            - |
              cp /config/openclaw.json /writable/openclaw.json \
              &amp;amp;&amp;amp; chown 1000:1000 /writable/openclaw.json \
              &amp;amp;&amp;amp; echo "--- Config file contents ---" \
              &amp;amp;&amp;amp; cat /writable/openclaw.json
          volumeMounts:
            - name: openclaw-config-volume
              mountPath: /config
            - name: openclaw-writable
              mountPath: /writable
      containers:
        - name: gateway
          image: alpine/openclaw:latest
          ports:
            - containerPort: 18789
          env:
            - name: NODE_OPTIONS
              value: "--max-old-space-size=4096"
            - name: AUTH_TOKEN
              valueFrom:
                secretKeyRef:
                  name: openclaw-auth-token
                  key: token
          # Start gateway the way the tutorial indicates
          command: ["openclaw", "gateway"]
          args: ["run", "--allow-unconfigured", "--bind", "lan"]
          volumeMounts:
            - name: openclaw-writable
              mountPath: /home/node/.openclaw
            - name: openclaw-data
              mountPath: /home/node/workspace
              subPath: workspace
          resources:
            requests:
              cpu: "500m"
              memory: "2Gi"
            limits:
              cpu: "1000m"
              memory: "4Gi"
          livenessProbe:
            httpGet:
              path: /health
              port: 18789
            initialDelaySeconds: 60
            periodSeconds: 15
            failureThreshold: 3
          readinessProbe:
            httpGet:
              path: /health
              port: 18789
            initialDelaySeconds: 10
            periodSeconds: 5
      volumes:
        - name: openclaw-data
          persistentVolumeClaim:
            claimName: pvc-openclaw-nfs
        - name: openclaw-config-volume
          configMap:
            name: openclaw-config
            items:
              - key: openclaw.json
                path: openclaw.json
        - name: openclaw-writable
          emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: openclaw-gateway-service
spec:
  type: ClusterIP
  selector:
    app: openclaw-gateway
  ports:
    - protocol: TCP
      port: 18789
      targetPort: 18789
EOF
&lt;/LI-CODE&gt;
&lt;P&gt;Verify that the deployment succeeds. Wait until all pods show `Running` and `READY 2/2`.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;kubectl get deployment openclaw-gateway
kubectl get pods -l app=openclaw-gateway
&lt;/LI-CODE&gt;&lt;img&gt;
&lt;P&gt;&lt;EM&gt;Figure 4: OpenClaw deployment&lt;/EM&gt;&lt;/P&gt;
&lt;/img&gt;
&lt;H2&gt;Create the TLS secret (for HTTPS)&lt;/H2&gt;
&lt;P&gt;The Application Gateway for Containers references a TLS secret (gateway-tls-secret) for HTTPS termination. This blog post uses a self-signed certificate; in a production environment, use a certificate signed by a certificate authority.&amp;nbsp;Replace `&amp;lt;path-to-tls-cert&amp;gt;` and `&amp;lt;path-to-tls-key&amp;gt;` with paths to your TLS certificate and private key files.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;kubectl create secret tls gateway-tls-secret \
  --cert=&amp;lt;path-to-tls-cert&amp;gt; \
  --key=&amp;lt;path-to-tls-key&amp;gt; 
&lt;/LI-CODE&gt;
&lt;H2&gt;Create the Gateway&lt;/H2&gt;
&lt;P&gt;The Gateway resource defines the HTTPS listener on the Azure Application Load Balancer (ALB). Update the &lt;STRONG&gt;`alb.network.azure.com/application-gateway-id&lt;/STRONG&gt;` annotation to match your ALB traffic controller resource ID. You will also need to reference the gateway-tls-secret to enable HTTPS.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;cat &amp;lt;&amp;lt;EOF | kubectl apply -f -
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: https
  annotations:
    alb.network.azure.com/application-gateway-id: /subscriptions/&amp;lt;subscription id&amp;gt;/resourceGroups/mc_openclaw_openclaw-cluster_centralus/providers/Microsoft.ServiceNetworking/trafficControllers/&amp;lt;alb id&amp;gt;
    alb.networking.azure.io/alb-namespace: default
    alb.networking.azure.io/alb-name: alb-openclaw
spec:
  gatewayClassName: azure-alb-external
  listeners:
    - name: https
      protocol: HTTPS
      port: 443
      allowedRoutes:
        namespaces:
          from: All
      tls:
        mode: Terminate
        certificateRefs:
        - kind: Secret
          group: ""
          name: gateway-tls-secret
EOF
&lt;/LI-CODE&gt;&lt;LI-CODE lang=""&gt;kubectl get gateway https&lt;/LI-CODE&gt;
&lt;P&gt;Wait until the Gateway shows a `Programmed=True` condition.&lt;/P&gt;
&lt;H2&gt;Create the HTTPRoute&lt;/H2&gt;
&lt;P&gt;The HTTPRoute connects the Gateway to the backend Service. It routes all traffic (`/` prefix) from the HTTPS Gateway to `openclaw-gateway-service` on port 18789.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;cat &amp;lt;&amp;lt;EOF | kubectl apply -f -
kind: HTTPRoute
apiVersion: gateway.networking.k8s.io/v1
metadata:
  name: http-route
spec:
  parentRefs:
    - name: https
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /  
    backendRefs:
    - name: openclaw-gateway-service
      kind: Service
      namespace: default
      port: 18789
EOF
&lt;/LI-CODE&gt;
&lt;H2&gt;Test OpenClaw application&lt;/H2&gt;
&lt;P&gt;Get the external endpoint.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;kubectl get gateway https -o jsonpath='{.status.addresses[0].value}'&lt;/LI-CODE&gt;
&lt;P&gt;Paste the endpoint into your browser to reach the OpenClaw application. If you are using a self-signed certificate, you will see a “Not secure” warning; click &lt;EM&gt;Advanced&lt;/EM&gt; to proceed. In a production environment with a certificate signed by a certificate authority, you should not see that warning.&lt;/P&gt;
&lt;img&gt;
&lt;P&gt;&lt;EM&gt;Figure 5: OpenClaw Authentication&lt;/EM&gt;&lt;/P&gt;
&lt;/img&gt;
&lt;P&gt;Paste in your Gateway Token (the auth token created earlier). You will notice that even though the token is valid, it throws back a “pairing required” error. Pairing is required in OpenClaw whenever a new device, browser profile, or CLI client attempts to connect to the gateway for the first time, ensuring only authorized clients can control the AI agent.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;POD=$(kubectl get pod -l app=openclaw-gateway -o jsonpath='{.items[0].metadata.name}')
POD2=$(kubectl get pod -l app=openclaw-gateway -o jsonpath='{.items[1].metadata.name}')
TOKEN=$(kubectl get secret openclaw-auth-token -o jsonpath='{.data.token}' | base64 -d)

kubectl exec "$POD" -c gateway -- openclaw devices approve --latest --token "$TOKEN"
kubectl exec "$POD2" -c gateway -- openclaw devices approve --latest --token "$TOKEN"
&lt;/LI-CODE&gt;
&lt;P&gt;You should see a message like the one in the image below. You can now open the OpenClaw application and start using it.&lt;/P&gt;
&lt;img&gt;
&lt;P&gt;&lt;EM&gt;Figure 6: OpenClaw pairing success message&lt;/EM&gt;&lt;/P&gt;
&lt;/img&gt;&lt;img&gt;
&lt;P&gt;&lt;EM&gt;Figure 7: OpenClaw Application&lt;/EM&gt;&lt;/P&gt;
&lt;/img&gt;
&lt;P&gt;You have successfully deployed OpenClaw within a microVM hosted on Azure Kubernetes Service.&lt;/P&gt;
&lt;H2&gt;Test microVM kernel isolation&lt;/H2&gt;
&lt;P&gt;From within the OpenClaw pod, try to read the host’s root filesystem via /proc/1/root. You should see an error like: ls: cannot access '/proc/1/root/etc/kubernetes': No such file or directory.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;kubectl exec -it "$POD" -c gateway -- ls /proc/1/root/etc/kubernetes 2&amp;gt;&amp;amp;1&lt;/LI-CODE&gt;
&lt;P&gt;In a standard container deployment, PID 1 inside the container is still running on the&amp;nbsp;&lt;STRONG&gt;host kernel&lt;/STRONG&gt;, so traversing&amp;nbsp;/proc/1/root/&amp;nbsp;exposes the host's root filesystem — including sensitive paths like&amp;nbsp;/etc/kubernetes&amp;nbsp;(which holds kubelet credentials). With Kata VM isolation, the picture is completely different. When we run&amp;nbsp;ls /proc/1/root/etc/kubernetes from inside the OpenClaw pod, it returns&amp;nbsp;&lt;STRONG&gt;"No such file or directory"&lt;/STRONG&gt;. This is because PID 1 is no longer a process on the host — it's running inside a dedicated&amp;nbsp;&lt;STRONG&gt;guest VM with its own kernel&lt;/STRONG&gt;. The&amp;nbsp;/proc/1/root/&amp;nbsp;path leads to the microVM's root filesystem, not the host's, and that microVM has no knowledge of the node's Kubernetes configuration or machine identity. The host is simply invisible. This is the core security guarantee of Kata Containers: even if an attacker achieves a full container escape, there is nothing to escape&amp;nbsp;&lt;EM&gt;to&lt;/EM&gt; — they land inside a lightweight VM boundary, not on the shared host, making lateral movement to other pods or the node itself impossible.&lt;/P&gt;
&lt;H2&gt;Conclusion&lt;/H2&gt;
&lt;P&gt;This post discussed why running OpenClaw workloads in standard containers can be risky when the workload includes untrusted or semi-trusted code: containers share the host Linux kernel, so a single container escape or privileged misconfiguration can expand into node-level compromise and a much larger blast radius. To address this, we introduced microVM-based sandboxing with Kata Containers on Azure Kubernetes Service (AKS) and walked through an implementation approach (a node pool with Kata VM isolation, storage, gateway deployment, and ingress). Finally, we validated the isolation properties by demonstrating that common host-visibility techniques (for example, probing&amp;nbsp;&lt;EM&gt;/proc/1/root&lt;/EM&gt;) no longer reveal host paths when the workload runs inside a microVM.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Separate kernel boundary&lt;/STRONG&gt;: Kata runs the container inside a microVM, so the workload executes against a guest kernel rather than the shared host kernel—kernel exploits and escape attempts don’t directly translate into host control.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Host filesystem is no longer “in scope”&lt;/STRONG&gt;: paths that often leak host context in standard containers (for example, traversals via &lt;EM&gt;/proc&lt;/EM&gt;) resolve inside the microVM’s filesystem, not the node’s root filesystem.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Reduced blast radius per workload&lt;/STRONG&gt;: each sandbox has its own VM boundary, making it much harder to pivot from one compromised workload to other pods/containers on the same node.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Stronger default device and privilege separation&lt;/STRONG&gt;: the hypervisor boundary and minimal virtual device model limit exposure to host devices and privileged interfaces that commonly enable breakouts.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Defense-in-depth still applies&lt;/STRONG&gt;: you can keep container hardening (seccomp, capability dropping, read-only filesystems, restricted mounts) while gaining an additional isolation layer that is independent of Linux namespaces/cgroups.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Overall, this post helps you deploy OpenClaw on AKS with Kata microVM isolation so you can run agent workloads with a significantly reduced risk of host-kernel compromise from container escape techniques.&lt;/P&gt;</description>
      <pubDate>Thu, 30 Apr 2026 01:57:02 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/hardening-openclaw-on-aks-mitigating-container-escapes-with-kata/ba-p/4516030</guid>
      <dc:creator>jianshn</dc:creator>
      <dc:date>2026-04-30T01:57:02Z</dc:date>
    </item>
    <item>
      <title>How to Manage RC4 Hardening – Definitive Guide</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/how-to-manage-rc4-hardening-definitive-guide/ba-p/4515923</link>
      <description>&lt;H1&gt;How to Manage RC4 Hardening – Definitive Guide&lt;/H1&gt;
&lt;P&gt;This article is a technical continuation of the RC4 deprecation / Kerberos hardening work I covered in my &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/what-changed-in-rc4-with-the-january-2026-windows-update-and-why-it-is-important/4504732" data-lia-auto-title="previous article" data-lia-auto-title-active="0" target="_blank"&gt;previous article&lt;/A&gt; last month. If you already went through the “why” (risk of RC4, what changes Microsoft is rolling out, and the high-level migration approach), the goal here is to get hands-on and precise: what exactly changes across the three rollout phases, which registry keys and AD attributes drive KDC behavior, what you should expect to see in security logs, and how to turn those signals into concrete remediation steps.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Prerequisites:&lt;/STRONG&gt; ensure the January update that introduces the RC4/Kerberos hardening telemetry is installed on all Domain Controllers. Without that patch, the Security log will not emit the new KDC events (201–209) and the Domain Controllers will not evaluate the related registry keys (&lt;EM&gt;RC4DefaultDisablementPhase&lt;/EM&gt; and &lt;EM&gt;DefaultDomainSupportedEncTypes&lt;/EM&gt;).&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Note: The information in this article applies only to supported operating systems released before 2025. I haven’t had the time to validate how these keys behave on 2025 versions.&lt;/U&gt;&lt;/P&gt;
&lt;H1&gt;Hardening Phases&lt;/H1&gt;
&lt;P&gt;Let's begin with a brief walkthrough of the hardening phases. For a detailed walkthrough of the rollout phases, see my previous article. Below is a technical summary of each phase of the RC4 hardening update.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Phase 1 - Auditing - January 2026&lt;/STRONG&gt;:
&lt;UL&gt;
&lt;LI&gt;starting from the January update, you can create the &lt;EM&gt;RC4DefaultDisablementPhase &lt;/EM&gt;registry key. Set it to&amp;nbsp;&lt;STRONG&gt;1&lt;/STRONG&gt; to enable logging of the new events (&lt;STRONG&gt;201-209&lt;/STRONG&gt;) on domain controllers.&lt;/LI&gt;
&lt;LI&gt;Nothing else changes, for now.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Phase 2 – Soft enforcement – April 2026&lt;/STRONG&gt;: the KDC will reject automatically requests that only support RC4. In this phase:
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;RC4DefaultDisablementPhase&lt;/STRONG&gt; is set to 2 but can be reverted to 1. &lt;U&gt;If the value was previously set to 1, the patch won’t override the value.&lt;/U&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;DefaultDomainSupportedEncTypes&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;: if the value of this key was not set when Phase 2 starts, the value is set to &lt;/SPAN&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;0x18&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt; by default (AES-only). You can roll it back to &lt;/SPAN&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;0x1C &lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;or &lt;/SPAN&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;0x24 &lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;(you will understand the difference between those two values later in this article) if needed. However, &lt;U&gt;if you had previously defined this key, Microsoft will not override it&lt;/U&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Phase 3 – Hard enforcement – July 2026&lt;/STRONG&gt;:
&lt;UL&gt;
&lt;LI&gt;the&amp;nbsp;&lt;EM&gt;RC4DefaultDisablementPhase&lt;/EM&gt; is no longer read&lt;/LI&gt;
&lt;LI&gt;In this phase, the only way to allow RC4 encryption is to manually set the&amp;nbsp;&lt;EM style="color: rgb(30, 30, 30);"&gt;msDS-SupportedEncryptionTypes&lt;/EM&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt; attribute to &lt;/SPAN&gt;&lt;EM style="color: rgb(30, 30, 30);"&gt;0x1C&lt;/EM&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt; (to allow RC4 only for the account) or to set the &lt;EM&gt;DefaultDomainSupportedEncTypes &lt;/EM&gt;to &lt;/SPAN&gt;&lt;EM style="color: rgb(30, 30, 30);"&gt;0x1C or 0x24&lt;/EM&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt; &lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;to allow RC4 for the entire environment.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Note that, if you want to apply the &lt;EM&gt;msDS-SupportedEncryptionTypes&lt;/EM&gt;&lt;STRONG&gt; &lt;/STRONG&gt;to allow RC4 at AD object level, but at the same time have the&amp;nbsp;&lt;EM&gt;DefaultDomainSupportedEncTypes&lt;/EM&gt; set to 0x18 you’ll need to set the &lt;EM&gt;SupportedEcryptionType &lt;/EM&gt;policy for the support of RC4 (more details in the scenarios section of this article).&lt;/P&gt;
&lt;H1&gt;Registry keys and attributes involved&lt;/H1&gt;
&lt;P&gt;In this section, you’ll find the list of all the registry keys, AD attributes, and GPOs involved in this hardening. The values shown are not exhaustive, I have listed only the specific values relevant to this hardening.&lt;/P&gt;
&lt;H3&gt;DefaultDomainSupportedEncTypes:&lt;/H3&gt;
&lt;P&gt;Path: HKLM\System\CurrentControlSet\Services\KDC&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;This key need to be created manually if needed&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Possible values:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;0x27&lt;/STRONG&gt;: enable DES, RC4 and AES session key (default before hardening for pre-2025 OSs)
&lt;UL&gt;
&lt;LI&gt;Flags enabled: DES-CBC-CRC, DES-CBC-MD5, RC4-HMAC, AES256-CTS-HMAC-SHA1-96-SK&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;0x24&lt;/STRONG&gt;: Enable RC4 and AES session key:
&lt;UL&gt;
&lt;LI&gt;Flags Enabled: RC4-HMAC, AES256-CTS-HMAC-SHA1-96-SK&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;0x1C&lt;/STRONG&gt;: allow RC4 and AES:
&lt;UL&gt;
&lt;LI&gt;Flags enabled: RC4-HMAC, AES128-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;0x3C&lt;/STRONG&gt;: enable RC4, AES and AES session key
&lt;UL&gt;
&lt;LI&gt;Flags enabled: RC4-HMAC, AES128-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96-SK&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;0x18&lt;/STRONG&gt;: enable AES only (default value pre hardening for 2025)
&lt;UL&gt;
&lt;LI&gt;Flags enabled: AES128-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;0x38&lt;/STRONG&gt;: enable AES and AES session key
&lt;UL&gt;
&lt;LI&gt;Flags enabled: AES128-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96-SK&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Possible values and their meaning during all the phases:&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Phase 1:&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;The value of this key won’t be changed during phase 1. if the key has not been manually set, you'll have the default value of you operating system during this phase&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;Phase 2:&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;0x18&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;: default value for this phase. Block the use of RC4 encryption, only AES-128 and AES-256 are allowed. &lt;/SPAN&gt;&lt;U style="color: rgb(30, 30, 30);"&gt;If this key was already explicitly set to any other value before the starting of phase 2, the patch won’t override its value&lt;/U&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;0x24, 0x1C and 0x3C&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;: these values can be used for manual rollback to allow RC4, I’ll advise using the value 0x1C for increased security. &lt;STRONG&gt;*&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Phase 3:&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;0x18&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;: default value for this phase. Block the use of RC4 encryption, only AES-128 and AES-256 are allowed. &lt;/SPAN&gt;&lt;U style="color: rgb(30, 30, 30);"&gt;If this was already explicitly set to any other value, the patch won’t override its value&lt;/U&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;0x24, 0x1C and 0x3C&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;: these values can be used for manual rollback to allow RC4, I’ll advise using the value 0x1C for increased security. &lt;STRONG&gt;*&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;U&gt;Later in this article, you’ll find common scenarios to help you choose the right values based on your audit findings.&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;*&lt;/STRONG&gt; In our labs, setting the &lt;EM&gt;DefaultDomainSupportedEncTypes&lt;/EM&gt; to &lt;STRONG&gt;0x1C&lt;/STRONG&gt; caused login issues on &lt;STRONG&gt;Windows Server 2003&lt;/STRONG&gt; and &lt;STRONG&gt;Windows XP&lt;/STRONG&gt;. If you still have these operating systems, test this value carefully in your environment. We tried to set the key to &lt;STRONG&gt;0x24 &lt;/STRONG&gt;and we did not observe the same issues.&lt;/P&gt;
&lt;H3&gt;RC4DefaultDisablementPhase&lt;/H3&gt;
&lt;P&gt;Path: &lt;EM&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters&lt;/EM&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Note that&amp;nbsp;&lt;U&gt;this key must be manually created and set &lt;/U&gt;and will be evaluated only after the installation of the January 2026 update.&amp;nbsp; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here you can find all the &lt;STRONG&gt;possible values during all phases&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;Phase 1&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;:&lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;: audit mode enabled, the events &lt;EM&gt;201-209 &lt;/EM&gt;are logged onto the domain controller when RC4 is being used (see the table below for details)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;2&lt;/STRONG&gt;: Kerberos will start assuming that RC4 has been disabled and will start to negotiate AES encryption by default&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Phase 2:&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;The values are the same reported for phase 1. With the April patch the value will change to 2 &lt;U&gt;only &lt;/U&gt;&lt;U style="color: rgb(30, 30, 30);"&gt;if the key was not explicitly set to 1 during phase 1&lt;/U&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;. Anyway, it can be reverted to 1&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Phase 3:&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;The key is no longer evaluated&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;msDS-SupportedEncryptionTypes&lt;/H3&gt;
&lt;P&gt;This attribute is found on all domain objects in the attribute editor tab.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;STRONG&gt;Value available for the attribute&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Null, not set or 0x0&lt;/STRONG&gt;: the encryption used depends on the value reported on the &lt;EM&gt;DefaultDomainSupportedEncTypes &lt;/EM&gt;key&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;0x3C&lt;/STRONG&gt;: enables RC4 AES and AES encryption key
&lt;UL&gt;
&lt;LI&gt;Flags enabled: RC4-HMAC, AES128-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96-SK&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;0x38&lt;/STRONG&gt;: enables AES and AES encryption key only
&lt;UL&gt;
&lt;LI&gt;Flags enabled: AES128-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96-SK&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;0x18&lt;/STRONG&gt;: enables AES only
&lt;UL&gt;
&lt;LI&gt;Flags enabled: AES128-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;U&gt;See the section reporting the common scenarios to understand how to correctly use this attribute in your environment.&lt;/U&gt;&lt;/P&gt;
&lt;H3&gt;SupportedEncryptionTypes&lt;/H3&gt;
&lt;P&gt;This registry key is populated by a &lt;STRONG&gt;GPO &lt;/STRONG&gt;on the DCs: “&lt;EM&gt;Network security: Configure encryption types allowed for Kerberos&lt;/EM&gt;”. The path of the GPO is "&lt;EM&gt;Computer Configuration &amp;gt; Policies &amp;gt; Windows Settings &amp;gt; Security Settings &amp;gt; Local Policies &amp;gt; Security Options"&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;You can find the related registry key at the path:&amp;nbsp; &lt;EM&gt;HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters\&lt;/EM&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;The values of the registry key depend on the GPO settings. &lt;STRONG&gt;The possible values are&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;0x7FFFFFFC&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;: this configuration is needed to support RC4 in your environment&lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Encryption type supported&lt;/STRONG&gt;: RC4-HMAC, AES128-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96-SK, FAST-supported, Compound-identity-supported, Claims-supported, Resource-SID-compression-disabled, Future encryption types&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;0x7FFFFFF8&lt;/STRONG&gt;: this is value for the recommended configuration
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Encryption types supported&lt;/STRONG&gt;: AES128-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96-SK, FAST-supported, Compound-identity-supported, Claims-supported, Resource-SID-compression-disabled, Future encryption types&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;U&gt;See the section with the common scenarios to understand how to use this key&lt;/U&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Audit&lt;/H1&gt;
&lt;P&gt;This section lists the auditing events for this hardening and briefly explains what each one indicates. Starting in January 2026, some existing events were enhanced to surface additional encryption details, and new events were introduced that are available only after installing the January 2025 patch. Microsoft also made two really helpful scripts to collect and analyze events, you can find more details about those scripts at the end of this section.&lt;/P&gt;
&lt;H3&gt;Existing enhanced events&amp;nbsp;&lt;/H3&gt;
&lt;P&gt;Some existing events has been enhanced, and can be used for the auditing of RC4 usage, like:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;4768&lt;/STRONG&gt;: A TGT ticket has been requested&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;4769&lt;/STRONG&gt;: A Kerberos service ticket has been requested&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;P&gt;Beyond identifying the client and account requesting the ticket, both events include several fields that are useful for analysis:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;msDS-SupportedEncryptionTypes&lt;/STRONG&gt;: show the value of this attribute for the account reported in the event&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Available keys&lt;/STRONG&gt;: shows all the available keys that has been found in AD for that object&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Ticket Encryption Type&lt;/STRONG&gt;: the actual ciphers used for the ticket encryption:
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;0x17&lt;/EM&gt; = RC4&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;0x12 &lt;/EM&gt;or &lt;EM&gt;0x13 &lt;/EM&gt;= AES&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Session Encryption Type&lt;/STRONG&gt;: the actual ciphers used for the session Encryption
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;0x17 &lt;/EM&gt;= RC4&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;0x12 &lt;/EM&gt;or &lt;EM&gt;0x13 &lt;/EM&gt;= AES&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Advertised Etypes&lt;/STRONG&gt;: lists the encryption types the client supports. If you see only RC4 or DES in this field, it means that we are looking at a legacy client; modern clients should advertise both RC4 and AES.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Note&lt;/STRONG&gt;: 4768 events are not correlated with any &lt;STRONG&gt;201-209&lt;/STRONG&gt; event, while for the 4769 events you can find the related 201-209 event to help you during the troubleshooting.&lt;/P&gt;
&lt;H3&gt;New events available&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;During the audit phase &lt;/STRONG&gt;we can see the system event log:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Event ID&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Type/Phase&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Meaning&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;201&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Warning&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The client only supports RC4 and the target service's&amp;nbsp;msDS-SupportedEncryptionTypes&amp;nbsp;is&amp;nbsp;&lt;STRONG&gt;not defined&lt;/STRONG&gt;. This will fail under enforcement.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;202&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Warning&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The target service account's&amp;nbsp;msDS-SupportedEncryptionTypes&amp;nbsp;is&amp;nbsp;&lt;STRONG&gt;not defined&lt;/STRONG&gt;&amp;nbsp;and the&amp;nbsp;&lt;STRONG&gt;service account only has insecure (RC4) keys.&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;205&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Warning&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The KDC detected that the domain controller has&amp;nbsp;DefaultDomainSupportedEncTypes&amp;nbsp;&lt;STRONG&gt;explicitly&lt;/STRONG&gt;&amp;nbsp;defined to include insecure encryption (RC4) Microsoft will&amp;nbsp;&lt;STRONG&gt;not&lt;/STRONG&gt;&amp;nbsp;automatically override this&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;206&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Warning&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The target service's&amp;nbsp;msDS-SupportedEncryptionTypes&amp;nbsp;is explicitly set to&amp;nbsp;&lt;STRONG&gt;AES-only&lt;/STRONG&gt;, but the client doesn't advertise AES-SHA1&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;207&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Warning&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The target service's&amp;nbsp;msDS-SupportedEncryptionTypes&amp;nbsp;is explicitly set to&amp;nbsp;&lt;STRONG&gt;AES-only&lt;/STRONG&gt;, but the service account&amp;nbsp;&lt;STRONG&gt;doesn't have AES-SHA1 keys&lt;/STRONG&gt;&amp;nbsp;(password not reset).&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;During the enforcement phase,&lt;/STRONG&gt; you can find these events in the system event log:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Event ID&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Type/Phase&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Meaning&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;203&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Error&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The KDC&amp;nbsp;&lt;STRONG&gt;blocked&lt;/STRONG&gt;&amp;nbsp;a service ticket because the client only supports insecure types and the service has no explicit encryption config.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;204&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Error&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The KDC&amp;nbsp;&lt;STRONG&gt;blocked&lt;/STRONG&gt;&amp;nbsp;a service ticket because the service account only has insecure keys and has no explicit encryption config.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;205&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Warning&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The KDC detected that the domain controller has&amp;nbsp;DefaultDomainSupportedEncTypes&amp;nbsp;&lt;STRONG&gt;explicitly&lt;/STRONG&gt;&amp;nbsp;defined to include insecure encryption (RC4) Microsoft will&amp;nbsp;&lt;STRONG&gt;not&lt;/STRONG&gt;&amp;nbsp;automatically override this&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;208&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Error&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The KDC&amp;nbsp;&lt;STRONG&gt;denied&lt;/STRONG&gt;&amp;nbsp;a service ticket because the client doesn't support AES-SHA1 and the service requires it.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;209&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Error&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The KDC&amp;nbsp;&lt;STRONG&gt;denied&lt;/STRONG&gt;&amp;nbsp;a service ticket because the service requires AES-SHA1 but has no AES keys.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Below is a list of possible remediation steps based on the events you observe:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;201 and 203&lt;/STRONG&gt;: these events usually indicate that we are looking to a legacy device. My advice is to correlate this finding to the related 4769 event. The goal is understand if the device is legacy or not:
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;The device is legacy&lt;/STRONG&gt;: the device does not support AES and needs to be updated. If the update is not feasible now, you can set the &lt;EM&gt;msDS-SupportedEncryptionTypes &lt;/EM&gt;to 0x1C to allow RC4&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;The device is not legacy&lt;/STRONG&gt;: investigate the reason why the device does not have any AES keys available. Maybe the password of the AD account has not been reset in a long time, or there may be a policy applied to this object to enforce the use of RC4 only&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;202 and 204&lt;/STRONG&gt;: these events usually indicate that the password for the account is too old, so the account cannot generate any AES key for encryption.
&lt;UL&gt;
&lt;LI&gt;Reset the password and try the authentication again to confirm the resolution of the problem.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;206 and 208&lt;/STRONG&gt;: these events usually indicate a mismatch between the client and the account configuration. The account may be set to allow AES only but the client may be legacy one.
&lt;UL&gt;
&lt;LI&gt;You need to update the client, if the update is not feasible now, you can set the &lt;EM&gt;msDS-SupportedEncryptionTypes &lt;/EM&gt;to 0x1C to allow RC4&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;207 and 209&lt;/STRONG&gt;: the account is set to AES but cannot generate an AES ticket.
&lt;UL&gt;
&lt;LI&gt;Usually, you'll need to reset the password of the account to solve this issue.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;See the &lt;STRONG&gt;common scenarios&lt;/STRONG&gt; section for more details&lt;/P&gt;
&lt;H2&gt;Scripts&lt;/H2&gt;
&lt;P&gt;Microsoft provided two scripts to help us investigate the RC4 usage in our environment:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;List-AccountKeys.ps1&lt;/STRONG&gt;&amp;nbsp;to query event logs to enumerate available encryption keys for accounts.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Get-KerbEncryptionUsage.ps1&lt;/STRONG&gt;&amp;nbsp;to identify Kerberos encryption types in use, with filtering options for specific algorithms like RC4.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The scripts are available in this repository: &lt;A href="https://github.com/microsoft/Kerberos-Crypto" target="_blank"&gt;Microsoft's Kerberos-Crypto GitHub repository&lt;/A&gt;&lt;/P&gt;
&lt;H4&gt;Get-KerbEncryptionUsage.ps1&lt;/H4&gt;
&lt;P&gt;This script can identify the usage of RC4 encryption in the environment by analyzing the events recorded on the domain controllers. The info are collected primarily from the events 4768 and 4769. In the output you’ll find date and time of the event, the requestor and the type of ticket and session encryption used.&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;.\Get-KerbEncryptionUsage.ps1 -Encryption RC4 -Searchscope AllKdcs | Export-Csv -Path .\KerbUsage_DC01.csv -NoTypeInformation -Encoding UTF8&lt;/LI-CODE&gt;
&lt;H4&gt;List-AccountKeys.ps1&lt;/H4&gt;
&lt;P&gt;This script is useful to identify which key are available for an object (service account, user, computer account).&lt;/P&gt;
&lt;H2&gt;Event forwarding&lt;/H2&gt;
&lt;P&gt;If you have a SIEM available on your environment: lucky you! There is a wonderful article that explains how to collect and forward the event to the SIEM to analyze them: &lt;A href="https://techcommunity.microsoft.com/blog/askds/so-you-think-you%E2%80%99re-ready-for-enforcing-aes-for-kerberos/4080124" target="_blank"&gt;So, you think you’re ready for enforcing AES for Kerberos? | Microsoft Community Hub&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Common Scenarios&lt;/H1&gt;
&lt;P&gt;This section will cover the common scenarios that we may find in the customer’s environment and how to approach it&lt;/P&gt;
&lt;H3&gt;I have only few objects that are using RC4&lt;/H3&gt;
&lt;P&gt;Scenario:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;During the audit phase I found &lt;STRONG&gt;&lt;U&gt;few &lt;/U&gt;legacy devices and applications not compatible with AES&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;I cannot update those devices/applications before the July 2026 phase (enforcement phase)&lt;/LI&gt;
&lt;LI&gt;I need to leave RC4 enabled for only those objects&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;DOs:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;SupportedEncryptionTypes&lt;/STRONG&gt;: you need to set this key to&amp;nbsp;&lt;STRONG&gt;0x7FFFFFFC &lt;/STRONG&gt;to allow the support of RC4 using the GPO (see the "Registry keys and attributes involved" section of this article), otherwise even if the attribute &lt;STRONG&gt;msDS-SupportedEncryptionTypes &lt;/STRONG&gt;is set to support RC4, the authentication will break, because the KDC won't know how to interpret RC4.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;msDS-SupportedEncryptionTypes&lt;/STRONG&gt;: this attribute needs to be set to 0x1C to support RC4&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;DefaultDomainSupportedEncTypes&lt;/STRONG&gt;: can be set to 0x18, this sets AES as the default encryption type for the domain. So, all the account that have the msDS-SupportedEncryptionTypes not set, will use AES by dafault&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In this scenario, new accounts and computers will use AES by default, while accounts with the attribute &lt;STRONG&gt;msDS-SupportedEncryptionTypes&lt;/STRONG&gt; set to &lt;STRONG&gt;0x1C&lt;/STRONG&gt; will still use RC4. This works because the KDC is configured to allow RC4 even though AES remains the domain’s default.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Note that having devices and applications that rely on RC4, will lower the security posture of your environment, my advice would be to remediate those devices/applications asap&lt;/U&gt;.&lt;/P&gt;
&lt;H3&gt;Many services rely on RC4&lt;/H3&gt;
&lt;P&gt;Scenario:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;During the audit phase I found &lt;STRONG&gt;&lt;U&gt;many &lt;/U&gt;devices not compatible with AES&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;I cannot update those devices/applications before the July 2026 phase (enforcement phase)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;If there are too many devices to be remediated using the &lt;STRONG&gt;msDS-SupportedEncryptionTypes &lt;/STRONG&gt;attribute, you’ll need to keep RC4 enabled by default at the domain level:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;DefaultDomainSupportedEncTypes&lt;/STRONG&gt;: needs to be set to &lt;STRONG&gt;0x1C&lt;/STRONG&gt;&lt;EM&gt; &lt;/EM&gt;to allow both AES and RC4&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;SupportedEncryptionTypes&lt;/STRONG&gt;: needs to be set to &lt;STRONG&gt;0x7FFFFFFC&lt;/STRONG&gt; (see the "Registry keys and attributes involved" section for more information about this setting)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;msDS-SupportedEncryptionTypes&lt;/STRONG&gt;: this attribute does not need to be changed in this scenario.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In this scenario you can evaluate the possibility to use the attribute &lt;STRONG&gt;msDS-SupportedEncryptionType &lt;/STRONG&gt;to secure some critical modern devices and applications by setting the attribute to &lt;STRONG&gt;0x18 &lt;/STRONG&gt;or &lt;STRONG&gt;0x38 &lt;/STRONG&gt;to allow only AES encryption for those objects.&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;No services rely on RC4&lt;/H3&gt;
&lt;P&gt;Congratulations!! This is the best scenario, you don’t have any legacy devices or applications that can rely only on RC4.&lt;/P&gt;
&lt;P&gt;DOs:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;DefaultDomainSupportedEncTypes&lt;/STRONG&gt;: you can leave it to the July 2026 default (&lt;STRONG&gt;0x18&lt;/STRONG&gt;)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;SupportedEncryptionTypes&lt;/STRONG&gt;: can be set to &lt;STRONG&gt;0x7FFFFFF8 &lt;/STRONG&gt;(see the "Registry keys and attributes involved" section for more information about this setting)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;msDS-SupportedEncryptionTypes&lt;/STRONG&gt;: there is no need to change this attribute in this scenario&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Conclusion&lt;/H1&gt;
&lt;P&gt;The RC4 hardening rollout is one of those changes that looks simple on paper “move everything to AES”, but succeeds or fails based on how well you turn Kerberos telemetry into an inventory of real dependencies. Across the three phases (audit, soft enforcement, hard enforcement), the KDC gradually shifts from observing RC4 usage to actively rejecting it, and by Phase 3 the domain-wide “allow RC4” escape hatch is gone.&lt;/P&gt;
&lt;P&gt;Use Phase 1 and the first part of Phase 2 to build a remediation backlog from the new KDC events (201–209) and the enhanced 4768/4769 fields.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also keep in mind the blind spots: the &lt;STRONG&gt;&lt;U&gt;absence of KDCSVC audit events does not guarantee that all systems will function correctly after enforcement&lt;/U&gt;&lt;/STRONG&gt;. These events focus on service ticket requests involving default/implicit encryption behavior; explicitly configured accounts, TGT requests, and non-Windows or embedded Kerberos stacks can still fail in ways that are not surfaced by 201–209 alone.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;FAQs&lt;/H1&gt;
&lt;H5&gt;Are there impacts in the forest trusts?&lt;/H5&gt;
&lt;P&gt;Test external trusts for impact. Trusts between domains in the same forest have used AES since the November 2022 patch. Before enforcing AES-only across a forest, validate that the trusted forest supports AES.&lt;/P&gt;
&lt;H5&gt;I don’t see any 201-209 events in my environment, does it means that my environment won’t be impacted?&lt;/H5&gt;
&lt;P&gt;No, the absence of KDCSVC audit events does not guarantee that all systems will function correctly after enforcement. These events focus on service ticket requests involving default/implicit encryption behavior; explicitly configured accounts, TGT requests, and non-Windows or embedded Kerberos stacks can still fail in ways that are not surfaced by 201–209 alone.&lt;/P&gt;
&lt;H5&gt;Is the msDS-SupportedEncryptionTypes key evaluated by Windows XP and Windows 2003 OSs?&lt;/H5&gt;
&lt;P&gt;No, those operating systems are not capable to read the msDS-SupportedEncryptionTypes key. In this case, to allow the use of RC4 you’ll need to use the DefaultDomainSupportedEncTypes set to 0x24&lt;/P&gt;
&lt;H1&gt;Useful Resources&lt;/H1&gt;
&lt;UL&gt;
&lt;LI&gt;Encryption Type Calculator: &lt;A href="https://strongwind1.github.io/Kerberos/security/etype-calculator.html?utm_source=copilot.com#msds=0x18" target="_blank"&gt;Encryption Type Calculator - Kerberos in Active Directory&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://techcommunity.microsoft.com/blog/askds/what-is-going-on-with-rc4-in-kerberos/4489365" target="_blank"&gt;What is going on with RC4 in Kerberos? | Microsoft Community Hub&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Supported Encryption Types Bit Flags &lt;A href="https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-kile/6cfc7b50-11ed-4b4d-846d-6f08f0812919" target="_blank"&gt;[MS-KILE]: Supported Encryption Types Bit Flags | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;How to manage Kerberos KDC usage of RC4 for service account ticket issuance changes related to CVE-2026-20833 &lt;A href="https://support.microsoft.com/en-us/topic/how-to-manage-kerberos-kdc-usage-of-rc4-for-service-account-ticket-issuance-changes-related-to-cve-2026-20833-1ebcda33-720a-4da8-93c1-b0496e1910dc?preview=true" target="_blank"&gt;How to manage Kerberos KDC usage of RC4 for service account ticket issuance changes related to CVE-2026-20833 - Microsoft Support&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Event 4769: &lt;A href="https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4769" target="_blank"&gt;4769(S, F) A Kerberos service ticket was requested. - Windows 10 | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;How to manage the Kerberos protocol changes related to CVE-2022-37966 &lt;A href="https://support.microsoft.com/en-us/topic/kb5021131-how-to-manage-the-kerberos-protocol-changes-related-to-cve-2022-37966-fd837ac3-cdec-4e76-a6ec-86e67501407d" target="_blank"&gt;KB5021131: How to manage the Kerberos protocol changes related to CVE-2022-37966 - Microsoft Support&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Detect and remediate RC4 usage &lt;A href="https://learn.microsoft.com/en-us/windows-server/security/kerberos/detect-remediate-rc4-kerberos#use-powershell-to-audit-rc4-usage" target="_blank"&gt;Detect and Remediate RC4 Usage in Kerberos | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;Disclaimer&lt;/H4&gt;
&lt;P&gt;The content of this article is based on available public documentation and test performed on a personal lab environment. The information is provided AS IS without a warranty of any kind. Microsoft further disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use of the reported information contained in this documentation remains with you. In no event shall Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the document be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the data in this documentation, even if Microsoft has been advised of the possibility of such damages.&lt;BR /&gt;&lt;U&gt;In short: Every environment is different, please test the changes before the implementation in your production environment&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 29 Apr 2026 15:59:22 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/how-to-manage-rc4-hardening-definitive-guide/ba-p/4515923</guid>
      <dc:creator>Elanor92</dc:creator>
      <dc:date>2026-04-29T15:59:22Z</dc:date>
    </item>
    <item>
      <title>Extracting and Auditing Azure DevOps Permissions at Scale with PowerShell</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/extracting-and-auditing-azure-devops-permissions-at-scale-with/ba-p/4515274</link>
      <description>&lt;H1&gt;Introduction&lt;/H1&gt;
&lt;P&gt;Azure DevOps organizations accumulate permissions over time. Groups are created, users are added, Entra (Azure AD) groups are nested into project groups, and team structures evolve. For organizations subject to compliance requirements, security reviews, or simply wanting to understand who has access to what, the Azure DevOps portal provides a per-group, per-namespace view that does not scale.&lt;/P&gt;
&lt;P&gt;The Azure DevOps REST APIs expose the underlying security model — security namespaces, Access Control Lists (ACLs), Access Control Entries (ACEs), and bitmask-encoded permissions — but consuming these APIs and translating raw data into actionable output requires significant effort.&lt;/P&gt;
&lt;P&gt;The blog post introduces &lt;STRONG&gt;ADO Permissions Output&lt;/STRONG&gt;, an open-source PowerShell toolset that extracts Azure DevOps security permissions across 30+ security namespaces, resolves cryptic tokens and GUIDs into human-readable names, and produces structured JSON and CSV output suitable for auditing, compliance, and import into Power BI.&lt;/P&gt;
&lt;P&gt;The toolset is available on GitHub: &lt;A class="lia-external-url" href="https://github.com/sckissel/ADO-Permissions-Output" target="_blank" rel="noopener"&gt;ADO-Permissions-Output&lt;/A&gt;&lt;/P&gt;
&lt;H1&gt;The Problem&lt;/H1&gt;
&lt;P&gt;Consider a typical Azure DevOps organization with multiple projects, dozens of custom groups, Entra-backed security groups, and permissions set at the repository, build pipeline, release pipeline, area path, and service endpoint levels. An auditor needs to answer questions like:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Which groups have &lt;STRONG&gt;Deny&lt;/STRONG&gt; permissions on a specific Git repository?&lt;/LI&gt;
&lt;LI&gt;Who has &lt;STRONG&gt;Edit build pipeline&lt;/STRONG&gt; access across all projects?&lt;/LI&gt;
&lt;LI&gt;Are there disabled Entra users still showing as members of ADO groups?&lt;/LI&gt;
&lt;LI&gt;Which users have access but have never logged in?&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The ADO portal answers these one group at a time. The REST APIs answer them in bitmasks and GUIDs. This tool bridges the gap.&lt;/P&gt;
&lt;H1&gt;What the Tool Does&lt;/H1&gt;
&lt;P&gt;At a high level, the tool:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Authenticates to Azure DevOps using a Personal Access Token (PAT)&lt;/LI&gt;
&lt;LI&gt;Enumerates all security namespaces in the organization&lt;/LI&gt;
&lt;LI&gt;Fetches all groups, users, and teams&lt;/LI&gt;
&lt;LI&gt;For each namespace, retrieves ACLs with extended info (effective and inherited permissions)&lt;/LI&gt;
&lt;LI&gt;Decodes bitmask permissions against the namespace action list&lt;/LI&gt;
&lt;LI&gt;Resolves security tokens (GUIDs, paths) to friendly names (project names, repo names, query paths, etc.)&lt;/LI&gt;
&lt;LI&gt;Outputs structured JSON per project with Allow, Deny, Effective, and Inherited permissions clearly labeled&lt;/LI&gt;
&lt;LI&gt;Optionally generates a group membership report with user entitlement status&lt;/LI&gt;
&lt;/OL&gt;
&lt;H1&gt;Architecture Overview&lt;/H1&gt;
&lt;img&gt;Flowchart of PowerShell and JSON files, their purposes, the REST API endpoints that are called, and the outputs files.&lt;/img&gt;
&lt;P&gt;The solution consists of three PowerShell files:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN lia-align-left"&gt;&lt;table border="1" style="width: 88.5185%; height: 213px; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;File&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Purpose&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;SecurityMain.ps1&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Entry point — loads modules, sets up directories, orchestrates execution&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;SecurityHelper.psm1&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Core engine — namespace enumeration, ACL fetching, bitmask decoding, token resolution&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;ProjectAndGroup.psm1&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Group membership reporting, user entitlement enrichment, directory setup&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 27.8582%" /&gt;&lt;col style="width: 72.1418%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Configuration is driven by &lt;EM&gt;ProjectDef.json&lt;/EM&gt;, which specifies output directories, filenames, and which namespaces to extract.&lt;/P&gt;
&lt;P&gt;All REST API calls route through a centralized Invoke-AdoRestMethod wrapper that provides automatic retry with exponential back-off for HTTP 429 (throttle) and transient server errors.&lt;/P&gt;
&lt;H1&gt;Setting Up the Pipeline&lt;/H1&gt;
&lt;P&gt;The tool is designed for unattended execution in an Azure Pipelines pipeline. The included `main.yml` defines a parameterized pipeline that can be run manually from the ADO UI. Additionally, a trigger can be configured to run on a schedule.&lt;/P&gt;
&lt;H2&gt;Prerequisites&lt;/H2&gt;
&lt;OL&gt;
&lt;LI&gt;A &lt;STRONG&gt;Personal Access Token&lt;/STRONG&gt; with read permissions across security, graph, build, release, work items, service endpoints, dashboards, and analytics scopes&lt;/LI&gt;
&lt;LI&gt;A &lt;STRONG&gt;Variable Group&lt;/STRONG&gt; named ADOPermissions containing the PAT as a secret variable&lt;/LI&gt;
&lt;LI&gt;The &lt;STRONG&gt;Build Service&lt;/STRONG&gt; identity needs Contribute permission on the repository (for committing output back)&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2&gt;Running the Pipeline&lt;/H2&gt;
&lt;P&gt;When you run the pipeline, the "Run pipeline" dialog presents parameters for the organization name, project name, and optional features like the membership report and AAD group recursion.&lt;/P&gt;
&lt;img&gt;Azure DevOps Pipeline Run dialog from YAML configuration.&lt;/img&gt;
&lt;P&gt;The pipeline extracts permissions, commits the output back to the repository, and optionally publishes the output as a pipeline artifact.&lt;/P&gt;
&lt;H1&gt;Understanding the Permissions Output&lt;/H1&gt;
&lt;P&gt;The primary output is a JSON file per project. Each entry represents a single permission assignment:&lt;/P&gt;
&lt;LI-CODE lang="json"&gt;{
     "Namespace": "Git Repositories",
     "Project": "MyProject",
     "Object": "my-repo",
     "Type": "Group",
     "UserGroupName": "Contributors",
     "PermissionType": "Allow",
     "Permission": "Contribute",
     "Bit": 4
}&lt;/LI-CODE&gt;
&lt;P&gt;Permissions are reported as:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Allow&lt;/STRONG&gt; — Explicitly granted&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Deny&lt;/STRONG&gt; — Explicitly denied&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Allow (Effective)&lt;/STRONG&gt; — Granted through inheritance&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Allow (Inherited)&lt;/STRONG&gt; — Inherited from a parent scope&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Deny (Effective)&lt;/STRONG&gt; and &lt;STRONG&gt;Deny (Inherited)&lt;/STRONG&gt; — Same patterns for deny permissions&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Token Resolution&lt;/H2&gt;
&lt;P&gt;One of the most valuable features is that raw security tokens are resolved inline. Instead of seeing &lt;EM&gt;repoV2/c847308e-d632-4e7f-a7fb-6f4db280bbaa/a1b2c3d4-...&lt;/EM&gt;, the output shows the actual repository name, build definition name, query path, area path, or service endpoint name.&lt;/P&gt;
&lt;P&gt;This resolution covers:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Project names&lt;/LI&gt;
&lt;LI&gt;Git repository names&lt;/LI&gt;
&lt;LI&gt;Build and release definitions&lt;/LI&gt;
&lt;LI&gt;Work item queries (including nested folder paths)&lt;/LI&gt;
&lt;LI&gt;Area paths and iterations&lt;/LI&gt;
&lt;LI&gt;Dashboards (project and team level)&lt;/LI&gt;
&lt;LI&gt;Service endpoints&lt;/LI&gt;
&lt;LI&gt;Variable groups and secure files&lt;/LI&gt;
&lt;LI&gt;Agent pools&lt;/LI&gt;
&lt;LI&gt;Environments&lt;/LI&gt;
&lt;LI&gt;Plans and process templates&lt;/LI&gt;
&lt;LI&gt;Analytics views&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;The Membership Report&lt;/H1&gt;
&lt;P&gt;When &lt;EM&gt;-IncludeMembership&lt;/EM&gt; is enabled, the tool generates a separate report showing who belongs to each group and what parent groups each group belongs to.&lt;/P&gt;
&lt;img&gt;JSON output of user and group memberships per Azure DevOps group.&lt;/img&gt;
&lt;H2&gt;Detecting Stale and Ghost Members&lt;/H2&gt;
&lt;P&gt;The membership report includes &lt;EM&gt;Status &lt;/EM&gt;and &lt;EM&gt;LastAccessedDate &lt;/EM&gt;from the User Entitlements API, along with a &lt;EM&gt;ResolvedVia&lt;/EM&gt; field that indicates how each member was discovered.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 99.2593%; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;ResolvedVia&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Status&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;LastAccessedDate&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Meaning&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;ADO Membership API&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;active&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Recent date&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Active user, using ADO&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;ADO Membership API&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;active&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Null or very old&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Has access, never logged in&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;ADO Membership API&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;disabled&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Any&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Admin disabled their ADO access&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;ADO Membership API&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Null&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Null&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;ADO identity exists but entitlement removed&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Hierarchy Group Expansion&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;active&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Recent date&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Active user, also in an Entra group&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Hierarchy Group Expansion&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Null&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Null&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Ghost member — visible in ADO UI via Entra group but has no ADO entitlement&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 20.3548%" /&gt;&lt;col style="width: 8.21662%" /&gt;&lt;col style="width: 14.4715%" /&gt;&lt;col style="width: 56.9571%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;AAD/Entra Group Recursion&lt;/H2&gt;
&lt;P&gt;When &lt;EM&gt;-RecurseAADGroups&lt;/EM&gt; is enabled, the tool resolves the actual members of Entra (Azure AD) groups that are nested inside ADO groups. This uses the ADO Contribution HierarchyQuery API — the same API that the ADO portal uses to display group members.&lt;/P&gt;
&lt;P&gt;This is significant because the standard ADO Graph Memberships API does not return individual members of Entra groups — it only shows the Entra group itself as a member. The HierarchyQuery approach reveals the real users, including those whose Entra accounts have been disabled or deleted but still appear in the ADO UI through group membership.&lt;/P&gt;
&lt;H1&gt;Importing into Power BI&lt;/H1&gt;
&lt;P&gt;The JSON output is directly importable into Power BI for visualization and analysis.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open Power BI Desktop&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Get Data&lt;/STRONG&gt; &amp;gt; &lt;STRONG&gt;JSON&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Select the permissions or membership JSON file&lt;/LI&gt;
&lt;LI&gt;The data loads as a table ready for filtering, pivoting, and visualization&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Alternatively, use the &lt;EM&gt;-OutputFormat&lt;/EM&gt; &lt;EM&gt;CSV &lt;/EM&gt;parameter to produce CSV files for direct import via &lt;STRONG&gt;Data&lt;/STRONG&gt; &amp;gt; &lt;STRONG&gt;From Text/CSV&lt;/STRONG&gt;.&lt;/P&gt;
&lt;img&gt;Power BI Dashboard layout of Namespaces, project permissions, user and group names, and count of project permissions.&lt;/img&gt;
&lt;P&gt;Common Power BI analyses:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Permission heatmap by namespace and group&lt;/LI&gt;
&lt;LI&gt;Users with Deny permissions across all projects&lt;/LI&gt;
&lt;LI&gt;Group membership overlap between projects&lt;/LI&gt;
&lt;LI&gt;Stale users (active entitlement but no recent access)&lt;/LI&gt;
&lt;LI&gt;Ghost members from Entra group expansion&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;Key Design Decisions&lt;/H1&gt;
&lt;P&gt;&lt;STRONG&gt;Sequential execution.&lt;/STRONG&gt; The tool processes namespaces sequentially rather than in parallel. This avoids the ADO API throttle penalty box (HTTP 429), which can delay an entire pipeline run. The retry wrapper handles transient 429s with &lt;EM&gt;Retry-After&lt;/EM&gt; header respect, but sequential processing prevents them from occurring in the first place.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;PAT authentication only.&lt;/STRONG&gt; The tool uses Personal Access Token authentication with Basic auth headers. This keeps the solution simple — no Entra app registrations, managed identities, or module dependencies. The PAT is stored in an ADO Variable Group marked as secret.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Read-only operation.&lt;/STRONG&gt; The tool does not modify any permissions, groups, or resources. All API calls are GET or POST (for subject lookups and HierarchyQuery). It is safe to run against production organizations.&lt;/P&gt;
&lt;H1&gt;Getting Started&lt;/H1&gt;
&lt;OL&gt;
&lt;LI&gt;Clone the repository: &lt;EM&gt;git clone https://github.com/sckissel/ADO-Permissions-Output.git&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;Create a PAT with the required scopes (see the &lt;A class="lia-external-url" href="https://github.com/sckissel/ADO-Permissions-Output/blob/main/README.md" target="_blank" rel="noopener"&gt;README&lt;/A&gt; for the full list)&lt;/LI&gt;
&lt;LI&gt;For pipeline execution, follow the setup instructions in the README to create the Variable Group and pipeline definition.&lt;/LI&gt;
&lt;LI&gt;For local testing:&lt;/LI&gt;
&lt;/OL&gt;
&lt;LI-CODE lang="powershell"&gt;./SecurityMain.ps1 `
-PAT "&amp;lt;your-pat&amp;gt;" `
-VSTSMasterAcct "yourorg" `
-projectName "YourProject" `
-allProjects "False" `
-DirRoot "C:\ADOSecurity" `
-IncludeMembership "True" `
-RecurseAADGroups "True" `
-OutputFormat "Both"&lt;/LI-CODE&gt;
&lt;H1&gt;Conclusion&lt;/H1&gt;
&lt;P&gt;Auditing Azure DevOps permissions at scale requires more than the portal provides. This toolset bridges the gap between the raw security APIs and actionable audit output, resolving cryptic tokens into readable names, surfacing effective and inherited permissions, and detecting stale or ghost group members through Entra group expansion.&lt;/P&gt;
&lt;P&gt;The tool is open source, requires only PowerShell 7 and a PAT, and is designed for unattended pipeline execution with output committed back to the repository for version-tracked audit history.&lt;/P&gt;
&lt;P&gt;Feedback, issues, and contributions are welcome on GitHub: &lt;A class="lia-external-url" href="https://github.com/sckissel/ADO-Permissions-Output" target="_blank" rel="noopener"&gt;ADO-Permissions-Output&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks for reading!&lt;/P&gt;
&lt;H1&gt;Disclaimer&lt;/H1&gt;
&lt;P&gt;The sample scripts are not supported under any Microsoft standard support program or service. The sample scripts are provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample scripts and documentation remains with you. In no event shall Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the scripts be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample scripts or documentation, even if Microsoft has been advised of the possibility of such damages.&lt;/P&gt;</description>
      <pubDate>Tue, 28 Apr 2026 06:38:27 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/extracting-and-auditing-azure-devops-permissions-at-scale-with/ba-p/4515274</guid>
      <dc:creator>skissel</dc:creator>
      <dc:date>2026-04-28T06:38:27Z</dc:date>
    </item>
    <item>
      <title>Designing Outbound Connectivity for "Private Subnets" in Azure</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/designing-outbound-connectivity-for-quot-private-subnets-quot-in/ba-p/4514258</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Why Private Subnets Change Everything&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Historically, Azure virtual machines relied on &lt;EM&gt;default outbound internet access&lt;/EM&gt;, where the platform automatically assigned a dynamic SNAT IP from a shared pool. This was convenient but problematic:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;❌ No deterministic outbound IP addresses&lt;/LI&gt;
&lt;LI&gt;❌ No traffic inspection or filtering&lt;/LI&gt;
&lt;LI&gt;❌ No FQDN or URL governance&lt;/LI&gt;
&lt;LI&gt;❌ Difficult to audit for compliance&lt;/LI&gt;
&lt;LI&gt;❌ Susceptible to noisy neighbor SNAT exhaustion&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;With private subnets, outbound access is disabled by default. This shifts the responsibility to the architect — deliberately. The result is an environment where:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;✅ Every outbound flow is intentional&lt;/LI&gt;
&lt;LI&gt;✅ Every outbound IP is known and documented&lt;/LI&gt;
&lt;LI&gt;✅ Every egress path can be governed and logged&lt;/LI&gt;
&lt;LI&gt;✅ Compliance evidence is straightforward to produce&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The question is no longer &lt;EM&gt;"does my VM have internet access?"&lt;/EM&gt; but rather &lt;EM&gt;"how exactly does my VM reach the internet, and is that path appropriate for this workload?"&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The Three Outbound Patterns at a Glance&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Option&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Primary Role&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Inspection&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Scale&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Cost&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Best For&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;NAT Gateway&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Managed outbound SNAT&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;❌ None&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;⭐⭐⭐ High&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;💲 Low&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Simple, scalable egress&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Firewall&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Secure governed egress&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;✅ Full L3–L7&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;⭐⭐⭐ High&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;💲💲💲 Higher&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Security boundaries&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Load Balancer&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Legacy SNAT&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;❌ None&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;⭐⭐ Limited&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;💲 Low&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Legacy / transitional&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;STRONG&gt;Scenario 1: NAT Gateway&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What is NAT Gateway?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Azure NAT Gateway is &lt;STRONG&gt;a &lt;/STRONG&gt;fully managed, zone‑resilient, outbound‑only SNAT service. It attaches at the subnet level and automatically handles all outbound flows from that subnet using one or more static public IP addresses or prefixes.&lt;/P&gt;
&lt;P&gt;It is purpose‑built for one thing: providing predictable, scalable outbound internet access — without routing complexity or inline devices.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Key flow are depicted below:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; VM → NAT Gateway: Automatic SNAT (no UDR required)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; NAT Gateway → Internet: Static, deterministic public IP&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Inbound: NOT supported (outbound only)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How it works (step by step)&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;VM initiates an outbound connection (e.g., HTTPS to an API)&lt;/LI&gt;
&lt;LI&gt;NAT Gateway intercepts the flow at the subnet boundary&lt;/LI&gt;
&lt;LI&gt;Source IP is translated to the NAT Gateway's static public IP&lt;/LI&gt;
&lt;LI&gt;The packet is forwarded to the internet&lt;/LI&gt;
&lt;LI&gt;Return traffic is automatically tracked and delivered back to the VM&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;No UDRs. No routing tables. No inline devices. &lt;STRONG&gt;It just works.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Strengths&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Massive SNAT scale&lt;/STRONG&gt; — no port exhaustion concerns at typical enterprise scale&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Deterministic outbound IPs&lt;/STRONG&gt; — easy to allowlist with external services&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Zone resilient&lt;/STRONG&gt; — survives availability zone failures&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Subnet scoped&lt;/STRONG&gt; — applies to all VMs in the subnet automatically&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;No routing configuration required&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Limitations&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;❌ No traffic inspection or filtering&lt;/LI&gt;
&lt;LI&gt;❌ No FQDN or URL policy enforcement&lt;/LI&gt;
&lt;LI&gt;❌ No threat intelligence integration&lt;/LI&gt;
&lt;LI&gt;❌ Cannot restrict &lt;EM&gt;which&lt;/EM&gt; internet destinations are allowed&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Best Fit Use Cases&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;✅ Application tiers calling external SaaS APIs&lt;BR /&gt;✅ VMs requiring OS updates and patch downloads&lt;BR /&gt;✅ CI/CD build agents and pipeline runners&lt;BR /&gt;✅ Spoke VNets in hub‑and‑spoke where east‑west goes through firewall, but simple internet egress is acceptable&lt;BR /&gt;✅ Dev/test environments&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Scenario 2: Azure Firewall&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What is Azure Firewall?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Azure Firewall is a cloud‑native, stateful, L3–L7 network security service. When used for outbound egress, it transforms the egress path from a &lt;EM&gt;connectivity&lt;/EM&gt; function into a &lt;EM&gt;security enforcement boundary&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;Unlike NAT Gateway, Azure Firewall inspects every packet, evaluates it against policy, and either allows or denies it based on network rules, application rules, and threat intelligence feeds.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;KEY Flow are depicted below:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; VM → UDR: Forces ALL outbound traffic to Firewall&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Firewall: Evaluates against policy before allowing&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Firewall → Internet: Only explicitly permitted flows pass&lt;/P&gt;
&lt;P&gt;&amp;nbsp; All denied flows: Logged and alertable&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How it works (step by step)&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;VM initiates an outbound connection&lt;/LI&gt;
&lt;LI&gt;UDR intercepts the flow and redirects to Azure Firewall's private IP&lt;/LI&gt;
&lt;LI&gt;Azure Firewall evaluates the traffic:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Network rules (IP/port match)&lt;/LI&gt;
&lt;LI&gt;Application rules (FQDN/URL match)&lt;/LI&gt;
&lt;LI&gt;Threat intelligence (known malicious IPs/domains)&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;If allowed: traffic is forwarded via Firewall's public IP&lt;/LI&gt;
&lt;LI&gt;If denied: traffic is dropped and logged&lt;/LI&gt;
&lt;LI&gt;All flows (allowed and denied) are logged to Log Analytics / Sentinel&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Strengths&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;✅ &lt;STRONG&gt;Full L3–L7 inspection&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;✅ &lt;STRONG&gt;FQDN and URL‑based filtering&lt;/STRONG&gt; (application rules)&lt;/LI&gt;
&lt;LI&gt;✅ &lt;STRONG&gt;Threat intelligence integration&lt;/STRONG&gt; (Microsoft TI feed)&lt;/LI&gt;
&lt;LI&gt;✅ &lt;STRONG&gt;TLS inspection&lt;/STRONG&gt; (Premium SKU)&lt;/LI&gt;
&lt;LI&gt;✅ &lt;STRONG&gt;Centralized governance&lt;/STRONG&gt; across multiple VNets via Firewall Manager&lt;/LI&gt;
&lt;LI&gt;✅ &lt;STRONG&gt;Rich logging&lt;/STRONG&gt; — every allowed and denied flow is recorded&lt;/LI&gt;
&lt;LI&gt;✅ &lt;STRONG&gt;IDPS&lt;/STRONG&gt; (Intrusion Detection and Prevention) available in Premium&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Limitations&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;❌ Higher cost (hourly + data processing charges)&lt;/LI&gt;
&lt;LI&gt;❌ Requires UDR configuration on each spoke subnet&lt;/LI&gt;
&lt;LI&gt;❌ Adds latency (small but non‑zero)&lt;/LI&gt;
&lt;LI&gt;❌ Requires careful SNAT configuration at scale&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Best Fit Use Cases&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;✅ Regulated industries (financial services, healthcare, government)&lt;BR /&gt;✅ Any workload where outbound internet is a &lt;STRONG&gt;security boundary&lt;/STRONG&gt;&lt;BR /&gt;✅ Environments requiring &lt;STRONG&gt;egress allowlisting&lt;/STRONG&gt; for compliance&lt;BR /&gt;✅ Hub‑and‑spoke architectures with centralized control plane&lt;BR /&gt;✅ SOC environments needing outbound flow telemetry&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Scenario 3: Load Balancer Outbound&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What is Load Balancer Outbound?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Azure Load Balancer outbound rules were historically the primary mechanism for providing SNAT to VMs behind a Standard Load Balancer. While newer patterns (NAT Gateway, Azure Firewall) have largely replaced this approach for new designs, &lt;STRONG&gt;outbound rules remain valid in specific scenarios&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Key flows are depicted below:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; VMs → Load Balancer: Backend pool members get SNAT&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LB Outbound Rules: Define port allocation per VM&lt;/P&gt;
&lt;P&gt;&amp;nbsp; ⚠️ Port exhaustion risk at scale&lt;/P&gt;
&lt;P&gt;&amp;nbsp; ⚠️ No inspection or policy enforcement&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How it works (step by step)&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;VM in the backend pool initiates an outbound connection&lt;/LI&gt;
&lt;LI&gt;Load Balancer applies SNAT using the frontend public IP&lt;/LI&gt;
&lt;LI&gt;Ephemeral ports are allocated per VM from a fixed pool&lt;/LI&gt;
&lt;LI&gt;Return traffic is tracked and delivered back to the correct VM&lt;/LI&gt;
&lt;LI&gt;If port pool is exhausted: connections fail (SNAT exhaustion)&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Strengths&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Lower cost than NAT Gateway or Firewall&lt;/LI&gt;
&lt;LI&gt;Tightly integrated with existing load‑balanced workloads&lt;/LI&gt;
&lt;LI&gt;Familiar operational model for legacy teams&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Limitations&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;❌ SNAT port pool is fixed and must be manually managed&lt;/LI&gt;
&lt;LI&gt;❌ Risk of SNAT exhaustion at scale&lt;/LI&gt;
&lt;LI&gt;❌ No traffic inspection&lt;/LI&gt;
&lt;LI&gt;❌ Less flexible than NAT Gateway&lt;/LI&gt;
&lt;LI&gt;❌ Not recommended for new designs&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Best Fit Use Cases&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;✅ Existing architectures already built around Azure Load Balancer&lt;BR /&gt;✅ Low outbound connection volume workloads&lt;BR /&gt;✅ Transitional architectures during modernization to NAT Gateway&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Decision Framework: Choosing the Right Outbound Pattern&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Common Pitfalls to Avoid&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;⚠️ Pitfall 1: Forgetting SNAT scale limits&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Load Balancer outbound rules allocate a &lt;STRONG&gt;fixed number of ephemeral ports per VM&lt;/STRONG&gt;. At scale this exhausts quickly. Use NAT Gateway instead.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;⚠️ Pitfall 2: Over‑securing low‑risk workloads&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Not every workload needs Azure Firewall for outbound. Dev/test and patch traffic are better served by NAT Gateway — simpler, cheaper, faster.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;⚠️ Pitfall 3: Mixing outbound models in the same subnet&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;NAT Gateway and Load Balancer outbound rules &lt;STRONG&gt;cannot coexist&lt;/STRONG&gt; on the same subnet. NAT Gateway always takes precedence. Plan your subnet boundaries carefully.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;⚠️ Pitfall 4: Blocking Azure platform dependencies&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Many Azure services still use public endpoints (even when Private Link is available). Ensure your outbound policy allows required Azure service tags before enforcing egress controls.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;⚠️ Pitfall 5: Relying on platform defaults&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Default outbound access is &lt;STRONG&gt;retired for new VNets&lt;/STRONG&gt;. Do not assume VMs can reach the internet without explicit configuration.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary and Key Takeaways&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Scenario&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Best Choice&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Why&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Simple internet egress at scale&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;NAT Gateway&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Scalable, predictable, no complexity&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Security boundary for egress&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Firewall&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Inspection, FQDN rules, threat intel&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Legacy load‑balanced workloads&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Load Balancer Outbound&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Transitional only&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Regulated / compliance environments&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Firewall&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Audit logs, policy enforcement&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Dev / test / patch traffic&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;NAT Gateway&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Low cost, low friction&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;STRONG&gt;The core principle&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Private subnets make outbound access intentional. Choose the outbound pattern that matches the risk level of the workload — not the most complex option available.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;References&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;https://learn.microsoft.com/azure/nat-gateway/nat-overview&lt;/LI&gt;
&lt;LI&gt;https://learn.microsoft.com/azure/firewall/overview&lt;/LI&gt;
&lt;LI&gt;https://learn.microsoft.com/azure/load-balancer/outbound-rules&lt;/LI&gt;
&lt;LI&gt;https://azure.microsoft.com/blog/default-outbound-access-for-vms-in-azure-will-be-retired&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Thu, 23 Apr 2026 21:28:09 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/designing-outbound-connectivity-for-quot-private-subnets-quot-in/ba-p/4514258</guid>
      <dc:creator>alexeyn1</dc:creator>
      <dc:date>2026-04-23T21:28:09Z</dc:date>
    </item>
    <item>
      <title>Strengthening Identity Resilience: A Deep Dive into Microsoft Entra Backup and Recovery</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/strengthening-identity-resilience-a-deep-dive-into-microsoft/ba-p/4513401</link>
      <description>&lt;P&gt;In the modern security landscape, we often say that "Identity is the new perimeter." We spend significant resources on Conditional Access, Phishing-Resistant MFA, and Identity Protection to keep the "bad guys" out. But what happens when the threat is already inside, or when a legitimate administrative action goes sideways?&lt;/P&gt;
&lt;P&gt;If our identity data the "brain" of our Microsoft 365 and Azure ecosystem is corrupted or maliciously altered, usr entire security posture collapses. Today, we’re exploring the new &lt;STRONG&gt;Microsoft Entra Backup and Recovery&lt;/STRONG&gt; capability, a native safety net designed to ensure usr identity infrastructure remains resilient against both accidents and attacks.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Why Native Backup Matters&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;For years, Entra ID&amp;nbsp; administrators relied on the &lt;STRONG&gt;Recycle Bin&lt;/STRONG&gt; for deleted objects. However, a major gap existed: &lt;STRONG&gt;Attribute Corruption.&lt;/STRONG&gt; If a script accidentally wipes the department and manager attributes for 10,000 users, or if a malicious actor modifies our most restrictive Conditional Access policies to create a backdoor, the Recycle Bin can't help us the objects aren't deleted; they are just &lt;EM&gt;wrong&lt;/EM&gt;. Restoring these specific states previously required complex PowerShell scripting or expensive third-party tools. Entra Backup and Recovery closes this gap by providing a native, automated way to "roll back" the state of usr objects.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Core Capabilities: How it Works&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The service is currently available in Public Preview for customers with &lt;STRONG&gt;Entra ID P1 or P2 licenses&lt;/STRONG&gt;. It operates on a simple yet powerful "Snapshot" model:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt; Automated Daily Snapshots&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The system automatically captures a point-in-time view of our tenant every day. Currently, the service maintains a &lt;STRONG&gt;5-day retention window&lt;/STRONG&gt;. This allows us to look back at the state of our environment from yesterday or earlier in the week to find a "known good" configuration.&lt;/P&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;&lt;STRONG&gt; Visibility via Difference Reports&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;One of the most powerful features is the &lt;STRONG&gt;Difference Report&lt;/STRONG&gt;. Before committing to a restoration, we can compare a specific snapshot against the live state of our tenant. The report provides a granular view of:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Object ID:&lt;/STRONG&gt; Exactly which user, group, or policy is affected.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Attribute Changes:&lt;/STRONG&gt; A side-by-side comparison showing the "Old Value" (from the backup) versus the "Current Value" (live in the tenant).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Metadata Loading:&lt;/STRONG&gt; While the first report may take a moment to load metadata, subsequent reports are lightning-fast, allowing for quick triaging during an incident.&lt;/LI&gt;
&lt;/UL&gt;
&lt;OL start="3"&gt;
&lt;LI&gt;&lt;STRONG&gt; Granular Restoration&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We aren't forced into an "all or nothing" recovery. We can choose to restore:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;An entire object class (e.g., all Conditional Access Policies).&lt;/LI&gt;
&lt;LI&gt;Specific object types (e.g., only Service Principals).&lt;/LI&gt;
&lt;LI&gt;Individual Object IDs for targeted fixes.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The "Defense in Depth" Identity Strategy&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Entra Backup and Recovery is not a standalone silo; it is the third pillar of a complete identity resilience strategy. To truly harden our tenant, we must coordinate these three features:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Pillar 1: Soft Delete (The Recycle Bin)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Used for &lt;STRONG&gt;Deleted Objects&lt;/STRONG&gt;. If a user or Microsoft 365 group is deleted, it sits in the Recycle Bin for 30 days. We can restore these easily via the portal or Graph API to maintain the original Object ID and SID.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Pillar 2: Protected Actions (The Vault)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;To prevent an attacker from "hard deleting" our objects (purging them from the Recycle Bin so they can't be recovered), we must implement &lt;STRONG&gt;Protected &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Actions&lt;/STRONG&gt;.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;How it works:&lt;/STRONG&gt; we assign a "Conditional Access Authentication Context" to sensitive actions like Microsoft.Directory/deletedItems/delete.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;The Result:&lt;/STRONG&gt; Even a Global Admin cannot permanently purge an object unless they meet strict requirements, such as using a &lt;STRONG&gt;Phishing-Resistant MFA&lt;/STRONG&gt; key or working from a &lt;STRONG&gt;Secure Access Workstation (SAW)&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Pillar 3: Backup and Recovery (The Time Machine)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Used for &lt;STRONG&gt;Corruption and Configuration Drift&lt;/STRONG&gt;. When the object exists but its properties are compromised, this is our "Time Machine" to revert attributes and policy logic to a functional state.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Real-World Scenario: Recovering from a Bulk Logic Error&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Imagine an admin runs a bulk update script intended to update the JobTitle for the Sales team. Due to a logic error in the CSV, the script instead clears the SecurityGroup memberships and ExtensionAttributes for the entire department.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Detection:&lt;/STRONG&gt; Users lose access to apps because their group memberships are gone.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Analysis:&lt;/STRONG&gt; The Admin generates a &lt;STRONG&gt;Difference Report&lt;/STRONG&gt; between today and yesterday’s snapshot.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Validation:&lt;/STRONG&gt; The report confirms that 500 users now have "null" values for the affected attributes.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Recovery:&lt;/STRONG&gt; The Admin selects those 500 User IDs and hits &lt;STRONG&gt;Restore&lt;/STRONG&gt;. Within minutes, the attributes are repopulated, and dynamic group memberships begin to recalculate automatically.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion and Next Steps&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The preview of Microsoft Entra Backup and Recovery is a significant step forward in native tenant protection. By combining it with &lt;STRONG&gt;Protected Actions&lt;/STRONG&gt; and the &lt;STRONG&gt;Recycle Bin&lt;/STRONG&gt;, organizations can finally achieve a "circular" protection model for identity.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Ready to try it?&lt;/STRONG&gt; Navigate to the &lt;STRONG&gt;Microsoft Entra Admin Center&lt;/STRONG&gt;, look for &lt;STRONG&gt;Backup and Recovery&lt;/STRONG&gt; in the left-hand navigation, and explore usr first snapshot today.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 21 Apr 2026 14:49:07 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/strengthening-identity-resilience-a-deep-dive-into-microsoft/ba-p/4513401</guid>
      <dc:creator>Farooque</dc:creator>
      <dc:date>2026-04-21T14:49:07Z</dc:date>
    </item>
    <item>
      <title>Running multimedia AI models on Container Apps with Serverless GPU (A100 &amp; T4)</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/running-multimedia-ai-models-on-container-apps-with-serverless/ba-p/4513063</link>
      <description>&lt;P&gt;A video format is available for watching.&lt;/P&gt;
&lt;div data-video-id="https://www.youtube.com/watch?v=WMYlQNLkMJQ/1776705195051" data-video-remote-vid="https://www.youtube.com/watch?v=WMYlQNLkMJQ/1776705195051" class="lia-video-container lia-media-is-center lia-media-size-large"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FWMYlQNLkMJQ%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DWMYlQNLkMJQ&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FWMYlQNLkMJQ%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;H4&gt;Prerequisites&lt;/H4&gt;
&lt;P&gt;- An Azure account with sufficient permissions to create resources.&lt;/P&gt;
&lt;P&gt;- Terraform installed on your local machine.&lt;/P&gt;
&lt;H4&gt;Infrastructure Provisioning&lt;/H4&gt;
&lt;OL&gt;
&lt;LI&gt;Clone the &lt;A class="lia-external-url" href="https://github.com/HoussemDellai/ai-course/tree/main/555_comfyui_on_aca" target="_blank" rel="noopener"&gt;Github repository&lt;/A&gt; and navigate to the project directory.&lt;/LI&gt;
&lt;LI&gt;Initialize Terraform and apply the configuration to provision the necessary Azure resources, including a resource group, virtual network, log analytics workspace, container app environment, storage account, and container app for downloading models.&lt;/LI&gt;
&lt;/OL&gt;
&lt;LI-CODE lang=""&gt;terraform init
terraform apply --auto-approve&lt;/LI-CODE&gt;
&lt;P&gt;The following resources will be created:&lt;/P&gt;
&lt;img /&gt;
&lt;H4&gt;ComfyUI Deployment&lt;/H4&gt;
&lt;P&gt;The ComfyUI application is deployed as a containerized workload on Azure Container Apps. The deployment includes a job that downloads the necessary models for ComfyUI to function properly.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The&amp;nbsp;&lt;STRONG&gt;aca_job_download_models.tf&lt;/STRONG&gt;&amp;nbsp;file defines a job that runs a container with the necessary commands to download the models for ComfyUI. The job is configured to run on Consumption worksload profile and has a timeout of 1200 seconds.&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;The&amp;nbsp;&lt;STRONG&gt;download-models-comfyui.sh&lt;/STRONG&gt;&amp;nbsp;script contains the commands to download the models from Hugging Face and save them to the appropriate directory in the ComfyUI application.&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;H4&gt;Monitoring and Analytics&lt;/H4&gt;
&lt;P&gt;The Azure Log Analytics workspace is set up to collect logs and metrics from the container app environment. You can use Azure Monitor to view and analyze the logs and metrics for your ComfyUI deployment.&lt;/P&gt;
&lt;P&gt;To view the properties and the usage of the GPU behind Container Apps, the command &lt;STRONG&gt;nvidia-smi&lt;/STRONG&gt; is helpful.&lt;/P&gt;
&lt;img /&gt;
&lt;H4&gt;Start using ComfyUI&lt;/H4&gt;
&lt;P&gt;Now that ComfyUI is provisioned, accessible on the FQDN exposed by Container Apps and the models are downloaded, you can run the Text to Image workflow in ComfyUI. You can also change the parameters as needed like the prompt.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;When ready, click the Run blue button at the top right to start generating the image. It will take some time depending on the size of the image and the complexity of the prompt. Then you should see the generated image in the output node.&lt;/P&gt;
&lt;H4&gt;Using ComfyUI for Text to Video&lt;/H4&gt;
&lt;P&gt;To use ComfyUI for&amp;nbsp;&lt;STRONG&gt;Text to Video&lt;/STRONG&gt;&amp;nbsp;generation, you can select a Text to Video template from the Workflows section. Choose&amp;nbsp;&lt;STRONG&gt;Wan 2.2 Text to Video&lt;/STRONG&gt; as an example. This will open the workflow to generate a video based on a text input.&lt;/P&gt;
&lt;H4&gt;Important Notes&lt;/H4&gt;
&lt;P&gt;The storage account key is required to create the storage link in your Container Apps environment. Container Apps does not support identity-based access to Azure file shares. For that it is mandatory to disable &lt;STRONG&gt;Secure Transfer&lt;/STRONG&gt; at the Storage Account (&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/container-apps/storage-mounts-azure-files?tabs=bash#set-up-a-storage-account" target="_blank" rel="noopener"&gt;more details&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;Because of an issue with the Terraform provider, it won't create the Serverless GPU (A100 &amp;amp; T4) workload profiles. You will need to create them manually in the Azure Portal after running&amp;nbsp;&lt;STRONG&gt;terraform apply&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Azure File Shares supports both&amp;nbsp;&lt;STRONG&gt;SMB&lt;/STRONG&gt;&amp;nbsp;and&amp;nbsp;&lt;STRONG&gt;NFS&lt;/STRONG&gt;. Container Apps also supports both.&lt;/P&gt;
&lt;P&gt;To mount NFS Azure Files, you must use a Container Apps environment with a custom VNet. The Storage account must be configured to allow access from the VNet either using&amp;nbsp;&lt;STRONG&gt;Service Endpoint&lt;/STRONG&gt; or &lt;STRONG&gt;Private Endpoint &lt;/STRONG&gt;(&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/container-apps/storage-mounts?tabs=nfs&amp;amp;pivots=azure-resource-manager#configuration-1" target="_blank" rel="noopener"&gt;more details&lt;/A&gt;)&lt;/P&gt;
&lt;P&gt;The NFS protocol can only be used from a machine inside of a virtual network, that is why we use a Private Endpoint.&lt;/P&gt;
&lt;P&gt;🔍&lt;STRONG&gt; SMB vs NFS — What’s the Difference?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;SMB (Server Message Block) and NFS (Network File System) are two protocols used to provide shared file storage over a network.&lt;/P&gt;
&lt;P&gt;They serve similar purposes but have different strengths, performance characteristics, and typical use cases. NFS is native for Linux.&lt;/P&gt;
&lt;H4&gt;Consumption profile details&lt;/H4&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 100%; height: 186.117px; border-width: 1px;"&gt;&lt;colgroup&gt;&lt;col style="width: 27.4209%" /&gt;&lt;col style="width: 12.5988%" /&gt;&lt;col style="width: 12.4135%" /&gt;&lt;col style="width: 12.9689%" /&gt;&lt;col style="width: 34.5546%" /&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style="height: 34.5333px;"&gt;&lt;td style="height: 34.5333px;"&gt;Profile names&lt;/td&gt;&lt;td style="height: 34.5333px;"&gt;vCPU range&lt;/td&gt;&lt;td style="height: 34.5333px;"&gt;Memory range&lt;/td&gt;&lt;td style="height: 34.5333px;"&gt;GPU type&lt;/td&gt;&lt;td style="height: 34.5333px;"&gt;Regions&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 34.5333px;"&gt;&lt;td style="height: 34.5333px;"&gt;Consumption&lt;/td&gt;&lt;td style="height: 34.5333px;"&gt;0.25 - 4&lt;/td&gt;&lt;td style="height: 34.5333px;"&gt;0.5 - 8 GB&lt;/td&gt;&lt;td style="height: 34.5333px;"&gt;N.A&lt;/td&gt;&lt;td style="height: 34.5333px;"&gt;All supported regions&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 58.525px;"&gt;&lt;td style="height: 58.525px;"&gt;Consumption-GPU-NC8as-T4&lt;/td&gt;&lt;td style="height: 58.525px;"&gt;0.25 - 8&lt;/td&gt;&lt;td style="height: 58.525px;"&gt;0.5 - 56 GB&lt;/td&gt;&lt;td style="height: 58.525px;"&gt;NVIDIA T4&lt;/td&gt;&lt;td rowspan="2" style="height: 117.05px;"&gt;To see a full list of available regions, see&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/container-apps/gpu-serverless-overview#supported-regions" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/azure/container-apps/gpu-serverless-overview#supported-regions"&gt;serverless GPU supported regions&lt;/A&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 58.525px;"&gt;&lt;td style="height: 58.525px;"&gt;Consumption-GPU-NC24-A100&lt;/td&gt;&lt;td style="height: 58.525px;"&gt;0.25 - 24&lt;/td&gt;&lt;td style="height: 58.525px;"&gt;0.5 – 220 GiB&lt;/td&gt;&lt;td style="height: 58.525px;"&gt;NVIDIA A100&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;In Serverless GPU profiles, the GPU cost is in addition to the active usage vCPU and RAM prices for your Container App. You pay for the entire GPU cost, even if your Container App only uses a fraction of the GPU's resources. But, for CPU and Memory, you only pay for the resources your Container App actually reserves. To reduce cost, it is very important to right-size the vCPU and Memory for your Container App when using Serverless GPU profiles. You can use Azure Monitor to track the actual resource usage of your Container App and adjust the vCPU and Memory accordingly.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;To get the supported profiles for a specific region, you can use the Azure CLI command:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;az containerapp env workload-profile list-supported --location swedencentral -o table
# Location       Name
# -------------  -------------------------
# swedencentral  D4
# swedencentral  D8
# swedencentral  D16
# swedencentral  D32
# swedencentral  E4
# swedencentral  E8
# swedencentral  E16
# swedencentral  E32
# swedencentral  Consumption
# swedencentral  Flex
# swedencentral  Consumption-GPU-NC24-A100
# swedencentral  Consumption-GPU-NC8as-T4&lt;/LI-CODE&gt;
&lt;P&gt;Here is the vCPU, Memory and GPU consumption for the NC A100 v4 and NC T4 v3 Serverless GPU profiles with ComfyUI when running typical workloads.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;&lt;img /&gt;&lt;img /&gt;&lt;img /&gt;
&lt;P&gt;You can notice that ComfyUI doesn't consume the entire compute power in terms of vCPU and Memory. That is why in Terraform, it is specified that the resource request is less than what the VM offers. That allows to reduce the cost.&lt;/P&gt;
&lt;H5&gt;Disclaimer&lt;/H5&gt;
&lt;P&gt;The sample scripts are not supported under any Microsoft standard support program or service. The sample scripts are provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample scripts and documentation remains with you. In no event shall Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the scripts be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample scripts or documentation, even if Microsoft has been advised of the possibility of such damages.&lt;/P&gt;</description>
      <pubDate>Mon, 20 Apr 2026 17:14:39 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/running-multimedia-ai-models-on-container-apps-with-serverless/ba-p/4513063</guid>
      <dc:creator>HoussemDellai</dc:creator>
      <dc:date>2026-04-20T17:14:39Z</dc:date>
    </item>
    <item>
      <title>Maintaining Azure Public IP Inventory by Retrieving Exact Deleted Public IP Using Activity Logs</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/maintaining-azure-public-ip-inventory-by-retrieving-exact/ba-p/4512403</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure Activity Logs provide strong visibility into resource lifecycle operations across a subscription. Among these are lifecycle events related to &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Azure Public IP addresses&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;, including creation and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;deletion&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;However, when a Public IP address is&amp;nbsp;deleted, the corresponding delete operation in Azure Activity Logs includes&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;only the Resource ID&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;of the Public IP — not the actual IP address that was assigned to the resource.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Once deletion is complete:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;The Public IP resource no longer exists&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;The Resource ID cannot be resolved&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;The assigned Public IP address is permanently unretrievable through Azure APIs&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;For organisations that rely on&amp;nbsp;accurate&amp;nbsp;IP inventory data for:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Security monitoring&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Compliance audits&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Incident response&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Network forensics&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This blog presents a&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;production&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;ready&amp;nbsp;implementation approach&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;that enables organisations to reliably capture and&amp;nbsp;retain&amp;nbsp;the assigned Public IP address of Azure Public IP resources — even after they are&amp;nbsp;deleted&amp;nbsp;— using Azure Activity Log alerts, Azure Automation, and a persistent resource mapping cache.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;The Core Challenge&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;When a Public IP resource is&amp;nbsp;deleted, Azure emits an Activity Log event&amp;nbsp;like:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;---&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;OperationName:&amp;nbsp;Microsoft.Network/publicIPAddresses/delete&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;ResourceId:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;/subscriptions/&amp;lt;subscription-id&amp;gt;/resourceGroups/&amp;lt;rg-name&amp;gt;/providers/Microsoft.Network/publicIPAddresses/&amp;lt;pip-name&amp;gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;---&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The alert correctly&amp;nbsp;identifies&amp;nbsp;the operation and the affected resource.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;However:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;The Activity Log does not include the assigned Public IP address.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;After deletion, the associated Resource ID no longer resolves to a live Azure resource.&lt;/SPAN&gt; &amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Maintaining Accurate IP Inventory&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Enterprises rely on centralised Public IP inventories mapped to workloads and ownership. Since delete Activity Log events emit the Resource ID,&amp;nbsp;&lt;/SPAN&gt;inventory systems require the exact Public IP address associated with the deleted resource.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Preventing False Security Investigations&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure Public IP addresses are globally reused. If a deleted IP&amp;nbsp;remains&amp;nbsp;recorded as owned internally, it may later be assigned to another tenant. This can lead to threat intelligence alerts and internal investigations against an IP address no longer under organisational ownership.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Supporting&amp;nbsp;High&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;Churn&amp;nbsp;Dynamic Workloads&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Ephemeral workloads such as Azure Machine Learning, CI/CD pipelines, and autoscaling deployments frequently create and delete Public IPs. In such environments, manual lifecycle tracking of assigned IP addresses is not operationally feasible.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Solution Overview&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The recommended approach is based on the following principle:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Capture and persist the assigned Public IP address&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;while the resource still&amp;nbsp;exists&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;and&amp;nbsp;retrieve the stored value later when only the Resource ID is available.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This can be implemented using:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Azure Activity Logs&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Log Analytics alerts&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Azure Automation Runbooks&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Persistent mapping cache of Resource ID to IP address&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The solution comprises four primary components:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Azure Activity Logs routed to Log Analytics&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Log Analytics alert rules detecting Public IP lifecycle operations&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Azure Automation Runbooks triggered through webhook actions&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Persistent cache storing Resource ID → IP address mappings&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Implementation Guide&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240,&amp;quot;335572079&amp;quot;:6,&amp;quot;335572080&amp;quot;:1,&amp;quot;335572081&amp;quot;:4278190080,&amp;quot;469789806&amp;quot;:&amp;quot;single&amp;quot;}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Step 1&lt;/STRONG&gt;: Route Activity Logs to Log Analytics&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Public IP lifecycle events are published through the Azure Activity Log under the Administrative category.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To enable lifecycle detection through KQL queries:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Navigate to:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt; &amp;nbsp;&lt;/SPAN&gt;Azure Monitor → Activity Log → Diagnostic Settings&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240,&amp;quot;469777462&amp;quot;:[720],&amp;quot;469777927&amp;quot;:[0],&amp;quot;469777928&amp;quot;:[0]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Add Diagnostic Setting&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240,&amp;quot;469777462&amp;quot;:[720],&amp;quot;469777927&amp;quot;:[0],&amp;quot;469777928&amp;quot;:[0]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="25" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Configure the following:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Category: Administrative&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Destination: Send to Log Analytics Workspace&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 4.Select your target Log Analytics Workspace.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 5.Click Save.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This allows lifecycle operations to be queried by alert rules from Log Analytics.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Step 2&lt;/STRONG&gt;: Deploy an Azure Automation Account&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure Automation&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;will be used to execute runbooks that process Activity Log alerts and resolve Public IP address details during resource lifecycle operations.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To begin:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Navigate to the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Azure Portal&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;In the search bar, search for&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Automation Accounts&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;Select &lt;STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);" data-contrast="auto"&gt;Create, &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);" data-contrast="auto"&gt;provide the following details and &lt;/SPAN&gt;Select "&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Review + Create&lt;/STRONG&gt;"&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;to complete the deployment.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);" data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Subscription&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Resource Group&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Automation Account Name&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Region&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Once the Automation Account has been created:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Navigate to the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Automation Account&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Go to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Identity&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;under the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Account Settings&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;section.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Enable&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;System&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;assigned&amp;nbsp;Managed Identity&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Click&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Save&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt; &amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This Managed Identity will later be used by the runbooks to securely retrieve Public IP metadata from Azure Resource Manager during alert execution.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Step 3&lt;/STRONG&gt;: Assign Managed Identity Permissions&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The Automation Account&amp;nbsp;requires&amp;nbsp;read&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;only&amp;nbsp;permissions to resolve Public IP resource information securely.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Navigate to:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Subscription → Access Control (IAM) → Add Role Assignment&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Assign the following roles to the Automation Account Managed Identity:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Role&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Scope&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Reader&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Subscription&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Reader&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Log Analytics Workspace&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This ensures the runbooks&amp;nbsp;are able to:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="21" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Query Public IP resources&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="21" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Resolve resource metadata&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="21" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Interpret Activity Log–driven lifecycle operations&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Step 4&lt;/STRONG&gt;: Create a Persistent Cache Variable&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The assigned IP address must be captured and persisted in advance before it is deleted.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;To&amp;nbsp;maintain&amp;nbsp;this mapping, create a persistent Automation variable to store the following relationship:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Public IP Resource ID → Assigned IP Address&lt;/SPAN&gt; &lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Within the Automation Account:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Navigate to: Shared Resources → Variables&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select + Add.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Configure the variable as follows:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Name:&amp;nbsp;PipLastKnownIps&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Type: String&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Value: {}&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Encryption: Disabled&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;4.Select Create.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;This variable will act as a persistent cache that is dynamically updated during Public IP lifecycle events.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Step 5&lt;/STRONG&gt;: Create Required Automation Runbooks&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Two Azure Automation Runbooks are&amp;nbsp;required&amp;nbsp;for this implementation.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Runbook Name&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Purpose&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;CacheSeedingRunbook&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Builds initial Resource ID → IP mapping&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;MainLifecycleRunbook&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Processes Activity Log alerts&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Step 5.1:&lt;/STRONG&gt; Create Cache Seeding Runbook&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Create Cache Seeding Runbook&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This runbook will&amp;nbsp;enumerate&amp;nbsp;all currently existing Public IP resources and populate the cache variable with their assigned IP address mappings.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Navigate to:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Automation Account → Runbooks&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Create a runbook&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Provide the following details:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Name:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;CacheSeedingRunbook&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Runbook Type:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;PowerShell&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Runtime Version:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;7.2&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp; &amp;nbsp; 4. After the runbook is created, paste the script here &lt;/SPAN&gt;&lt;A href="https://github.com/AswiniSurendran/Exact_IPAddress_Tracking_from_Activity_logs-/blob/main/CacheSeedingRunbook" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;CacheSeedingRunbook&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Publish&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;This runbook will initialise the cache by capturing the current state of all Public IP resources prior to enabling&amp;nbsp;lifecycle&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;based&amp;nbsp;Activity Log processing.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Step 5.2:&lt;/STRONG&gt; Create Main Lifecycle Runbook&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This runbook will be triggered via webhook whenever a Public IP lifecycle event is detected through Activity Logs.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Navigate to:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Automation Account → Runbooks&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Create a runbook&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Provide the following details:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Name:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;MainLifecycleRunbook&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Runbook Type:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;PowerShell&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Runtime Version:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;7.2&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;After the runbook is created, paste the required lifecycle processing script&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://github.com/AswiniSurendran/Exact_IPAddress_Tracking_from_Activity_logs-/blob/main/MainLifecycleRunbook" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;MainLifecycleRunbook&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;4. Select &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Publish&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;once configuration is complete.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This runbook will process Activity&amp;nbsp;Log&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;based&amp;nbsp;lifecycle events and dynamically update the&amp;nbsp;PipLastKnownIps&amp;nbsp;cache variable in response to Public IP creation or deletion.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Step 6:&lt;/STRONG&gt; Create Runbook Webhook&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Configure Runbook Webhook&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To allow Activity Log alerts to invoke the runbook:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Navigate to: Automation Account → Runbooks →&amp;nbsp;MainLifecycleRunbook&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Go to: Resources → Webhooks&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select Add Webhook.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Provide the following details:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Webhook Name&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Expiration Date&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;5. Copy the generated Webhook URL.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This URL will be used by the Alert Action Group in a later step to trigger the runbook upon detection of Public IP lifecycle events.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Step 7&lt;/STRONG&gt;: Seed Cache with Existing Public IPs&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Before activating the&amp;nbsp;alert&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;driven&amp;nbsp;workflow, populate the cache with currently active Public IP resources.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="26" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Navigate to:&lt;/SPAN&gt; CacheSeedingRunbook&amp;nbsp;→ Start&lt;SPAN style="color: rgb(30, 30, 30);" data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240,&amp;quot;469777462&amp;quot;:[720],&amp;quot;469777927&amp;quot;:[0],&amp;quot;469777928&amp;quot;:[0]}"&gt;&amp;nbsp; and &lt;/SPAN&gt;Run the job once.&lt;SPAN style="color: rgb(30, 30, 30);" data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This will initialise the&amp;nbsp;PipLastKnownIps&amp;nbsp;mapping with all existing Public IP resources.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Future lifecycle events will update this cache dynamically.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Step 8&lt;/STRONG&gt;:&amp;nbsp;Create Activity Log Alert Rule&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Navigate to: Azure Monitor → Alerts → Create Alert Rule&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Scope the alert rule to the relevant Log Analytics Workspace.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Under&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Condition&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Select: Custom Log Search&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Use the KQL query available here:&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://github.com/AswiniSurendran/Exact_IPAddress_Tracking_from_Activity_logs-/blob/main/query.json" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;query.json&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Configure the following parameters as&amp;nbsp;required:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Evaluation Frequency&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Query Time Range&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This alert rule will detect Public IP lifecycle events and trigger the associated Action Group for downstream runbook execution.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Please find the configuration in the attached screenshot below:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Step 9&lt;/STRONG&gt;: Configure Action Group to Trigger Runbook&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Create an&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Action Group&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;that invokes the Lifecycle Runbook webhook.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Add a new action.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Configure the action with the following details:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;UL&gt;
&lt;LI class="lia-indent-padding-left-30px"&gt;&lt;SPAN data-contrast="auto"&gt;Action Type:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Webhook&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class="lia-indent-padding-left-30px"&gt;&lt;SPAN data-contrast="auto"&gt;Paste the previously generated&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Runbook Webhook URL&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;3.Enable: &lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Use Common Alert Schema&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;(Optional)&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;Add an&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Email Notification&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;action to receive lifecycle alerts for troubleshooting or monitoring purposes.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;4. Attach this &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Action Group&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;to the alert rule.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Step 10&lt;/STRONG&gt;:&amp;nbsp;Validate&amp;nbsp;the Implementation&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To&amp;nbsp;validate:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Create a Public IP resource.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Delete the same resource.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Navigate to:&lt;/SPAN&gt; Automation Account → Jobs →&amp;nbsp;MainLifecycleRunbook&lt;SPAN style="color: rgb(30, 30, 30);" data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240,&amp;quot;469777462&amp;quot;:[720],&amp;quot;469777927&amp;quot;:[0],&amp;quot;469777928&amp;quot;:[0]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Observe the runbook execution&amp;nbsp;output&amp;nbsp;related to:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Public IP creation&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Public IP deletion&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Although the&amp;nbsp;delete&amp;nbsp;alert&amp;nbsp;contains&amp;nbsp;only the Resource ID, the runbook retrieves the exact assigned Public IP address from the cache.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;See the sample output below:&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;You can extend this workflow using Azure Logic Apps to forward events to &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Email&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt; , &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;SIEM platforms&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt; or&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;CMDB systems.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In addition to tracking Public IP deletions using Activity Logs, proactively capturing and persisting Resource ID–to–IP mappings through Automation‑driven lifecycle alerts, organisations can maintain an accurate Public IP inventory—ensuring traceability, reducing false‑positive security investigations, and strengthening audit and incident response readiness.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 17 Apr 2026 12:10:31 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/maintaining-azure-public-ip-inventory-by-retrieving-exact/ba-p/4512403</guid>
      <dc:creator>AswiniSurendran</dc:creator>
      <dc:date>2026-04-17T12:10:31Z</dc:date>
    </item>
    <item>
      <title>Microsoft Defender for Endpoint (MDE) — Custom Role Design for Troubleshooting Mode–Only Access</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/microsoft-defender-for-endpoint-mde-custom-role-design-for/ba-p/4510646</link>
      <description>&lt;P&gt;&lt;STRONG&gt;1) Introduction&lt;/STRONG&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In customer environments, &lt;STRONG&gt;Security Operations (SOC)&lt;/STRONG&gt; teams and &lt;STRONG&gt;Windows infrastructure&lt;/STRONG&gt; teams frequently need to investigate endpoint issues in the Microsoft Defender for Endpoint portal—often under time pressure—while still preserving strong governance over who can change security controls.&lt;/P&gt;
&lt;P&gt;Because &lt;STRONG&gt;Troubleshooting Mode&lt;/STRONG&gt; can enable temporary modification of Defender Antivirus settings even when devices are governed by organizational policies (for example, when policy protections are in place using Tamper protection settings), granting this capability broadly can introduce &lt;STRONG&gt;configuration drift&lt;/STRONG&gt;, increase operational risk, and blur accountability.&lt;/P&gt;
&lt;P&gt;To address this, customers typically require a &lt;STRONG&gt;least‑privilege, scoped access model&lt;/STRONG&gt; that enforces &lt;STRONG&gt;Segregation of Duties (SoD)&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Investigators (Security Reader)&lt;/STRONG&gt; retain visibility and investigation capability but &lt;STRONG&gt;cannot create or modify MDE security policies&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Only an explicitly authorized group&lt;/STRONG&gt; is granted the minimum permissions required to enable Troubleshooting Mode, and that access is &lt;STRONG&gt;restricted to a defined device scope&lt;/STRONG&gt; using device groups—supporting both risk reduction and clear governance.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This approach ensures teams can perform required investigations and controlled troubleshooting while maintaining &lt;STRONG&gt;least privilege&lt;/STRONG&gt;, &lt;STRONG&gt;SoD&lt;/STRONG&gt;, and predictable operational impact across the customer’s environment.&lt;/P&gt;
&lt;P&gt;This document describes an approach to providing controlled access to Troubleshooting Mode on a scoped set of devices.&lt;/P&gt;
&lt;P&gt;- An Entra ID user group to collect eligible users&amp;nbsp;&lt;/P&gt;
&lt;P&gt;- A custom Defender XDR role with only the minimum required permissions&amp;nbsp;&lt;/P&gt;
&lt;P&gt;- Microsoft Defender for Endpoint device groups to scope where those permissions apply&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The goal is to enable safe troubleshooting while&amp;nbsp;maintaining&amp;nbsp;least&amp;nbsp;privilege and preventing unintended policy changes.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;2) Prerequisite &amp;amp; Coverage &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;- An Entra ID user group to collect eligible users&amp;nbsp;&lt;/P&gt;
&lt;P&gt;- A custom Defender XDR role with only the minimum required permissions&amp;nbsp;&lt;/P&gt;
&lt;P&gt;- Microsoft Defender for Endpoint device groups to scope where those permissions apply&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The goal is to enable safe troubleshooting while&amp;nbsp;maintaining&amp;nbsp;least&amp;nbsp;privilege and preventing unintended policy changes.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This setup is necessary to: &amp;nbsp;&lt;/P&gt;
&lt;P&gt;- Enforce least privilege (only the permissions needed for Troubleshooting Mode and limited operational actions)&amp;nbsp;&lt;/P&gt;
&lt;P&gt;- Scope powerful actions to a defined device group instead of all devices&amp;nbsp;&lt;/P&gt;
&lt;P&gt;- Support a split model where one Security Reader group gets Troubleshooting Mode&amp;nbsp;access&amp;nbsp;and another Security Reader group&amp;nbsp;remains&amp;nbsp;view/operate&amp;nbsp;without TS Mode&amp;nbsp;&lt;/P&gt;
&lt;P&gt;- Preserve governance: users can investigate and perform limited actions but cannot create or modify MDE policies&amp;nbsp;&lt;/P&gt;
&lt;P&gt;- Improve auditability by ensuring key actions are observable via device telemetry and the Action Center (while acknowledging that some telemetry may not include the initiating username).&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3) Implementation Steps for Troubleshooting Mode (TO BE PERFORMED IN MICROSOFT DEFENDER PORTAL / ENTRA ID)&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3.1 Prepare Entra ID User Group&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Identify an existing Entra ID user group that contains users (IT Infra Team) with the Security Reader role or create a new dedicated Entra ID user group for this purpose.&lt;/P&gt;
&lt;P&gt;- This group will be used consistently for:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Assigning the custom Defender XDR role&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Scoping access to Defender for Endpoint device groups&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;3.2 Create and Assign Custom Defender XDR Role&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Create a custom Defender XDR role with Microsoft Defender for Endpoint (MDE) Security Settings Management permissions.&lt;/P&gt;
&lt;P&gt;- While creating the custom role, select only the minimum required permissions to maintain a least-privilege model.&lt;/P&gt;
&lt;P&gt;- Assign this custom Defender XDR role to the Entra ID user group identified in Step 1.&lt;/P&gt;
&lt;P&gt;Reference: See screenshots below for role creation, permission selection, and Entra ID group assignment.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3.3: Assign Entra ID User Group to Device Group&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Assign the same Entra ID user group (used in Steps 1 and 2) to a Microsoft Defender for Endpoint device group.&lt;/P&gt;
&lt;P&gt;- Devices in the device group should be dynamically grouped using supported criteria such as:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Device tags&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Device name patterns&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Other supported device attributes&lt;/P&gt;
&lt;P&gt;- This scoping ensures that the custom role permissions apply only to the intended set of devices.&lt;/P&gt;
&lt;P&gt;Reference: See screenshot under below showing device group creation and Entra ID group-to-device group assignment.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3.4 Resulting User Experience and Permissions&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;After completing Steps 3.1 through 3.3, users who sign in with:&lt;/P&gt;
&lt;P&gt;- Security Reader role, and&lt;/P&gt;
&lt;P&gt;- Custom Defender XDR role&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;will observe the following behavior in the Microsoft Defender portal:&lt;/P&gt;
&lt;P&gt;- Troubleshooting Mode is available on the scoped devices&lt;/P&gt;
&lt;P&gt;- Users cannot create or modify MDE policies&lt;/P&gt;
&lt;P&gt;- Users have access only to a controlled set of operational and investigative actions, including:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Exclude&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Go hunt&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Download force release from isolation script&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Ask Defender Experts&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This configuration enables safe troubleshooting while preventing configuration drift or unauthorized security policy changes.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Reference: See screenshot under below illustrating the available actions and the absence of policy creation/modification options.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Reference: See screenshot below where creation of AV policy failed as User will not have access to Intune to create policy.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;4&lt;/STRONG&gt;. In an alternate scenario, two separate Security Reader groups are maintained: one group requires access to Troubleshooting Mode, while the other should have no Troubleshooting Mode access. Users in the latter group (no TS Mode requirement) can continue to use standard Microsoft Defender for Endpoint (MDE) operational capabilities such as managing tags, setting device criticality, running antivirus scans, collecting an investigation package, reporting device inaccuracy, initiating advanced hunting (Go hunt), triggering policy sync, and running automated investigations. Users in the Troubleshooting Mode-enabled Security Reader group must also be assigned to the appropriate MDE device group to ensure their device-level access and workflows continue to function as expected.&lt;/P&gt;
&lt;P&gt;Reference: See the screenshot below, which illustrates the additional MDE capabilities available to users who also have access to the device group&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;5: Auditing and Event Visibility&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;- Events related to Tamper Protection changes and Troubleshooting Mode enablement are captured in Microsoft Defender for Endpoint telemetry.&lt;/P&gt;
&lt;P&gt;- These events are logged and visible for audit and investigation purposes.&lt;/P&gt;
&lt;P&gt;- The username is not recorded in these specific event entries, which is expected behavior in the current Defender auditing model. However, the activation of Troubleshooting Mode is still logged and visible in the device Action Center, which allows confirmation that the mode was enabled on the device and the username.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Reference: See screenshot under Step 6 showing the relevant audit and event records in Timeline of Device Page.&amp;nbsp; Similarly ,correlate using KQL across two Event Tables (DeviceEvents &amp;amp; EntraIdSignInEvents).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Below is the KQL query&lt;/P&gt;
&lt;P&gt;let TimeWindow = 10m;&lt;/P&gt;
&lt;P&gt;let Lookback&amp;nbsp; = 7d;&lt;/P&gt;
&lt;P&gt;// Portal sign-ins (Security &amp;amp; Compliance Center)&lt;/P&gt;
&lt;P&gt;let DefenderPortalSignins =&lt;/P&gt;
&lt;P&gt;materialize(&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EntraIdSignInEvents&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; | where Timestamp &amp;gt;= ago(Lookback)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; | where Application == "Microsoft 365 Security and Compliance Center"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; | project&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SignInTime = Timestamp,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PortalUserUpn = AccountUpn,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PortalUserObjectId = AccountObjectId,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SignInIP = IPAddress,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CorrelationId&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; | extend TimeBucket = bin(SignInTime, TimeWindow)&lt;/P&gt;
&lt;P&gt;);&lt;/P&gt;
&lt;P&gt;// Tamper-protection related events (broaden as needed)&lt;/P&gt;
&lt;P&gt;let TamperEvents =&lt;/P&gt;
&lt;P&gt;materialize(&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DeviceEvents&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; | where Timestamp &amp;gt;= ago(Lookback)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; | where ActionType has "Tamper" or ActionType == "TamperingAttempt"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; | project&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TamperTime = Timestamp,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DeviceId,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DeviceName,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActionType,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AdditionalFields&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; | extend TimeBucket = bin(TamperTime, TimeWindow)&lt;/P&gt;
&lt;P&gt;);&lt;/P&gt;
&lt;P&gt;// Output rows: (UPN, TamperTime) within +/- window&lt;/P&gt;
&lt;P&gt;TamperEvents&lt;/P&gt;
&lt;P&gt;| join kind=inner (DefenderPortalSignins) on TimeBucket&lt;/P&gt;
&lt;P&gt;| where abs(datetime_diff("minute", TamperTime, SignInTime)) &amp;lt;= toint(TimeWindow / 1m)&lt;/P&gt;
&lt;P&gt;| project&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PortalUserUpn,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TamperTime,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SignInTime,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DeviceName,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DeviceId,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActionType,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SignInIP,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CorrelationId,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AdditionalFields&lt;/P&gt;
&lt;P&gt;| order by TamperTime desc&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;This query correlates by time proximity. It indicates “user signed into the portal around the time a tamper event happened.”&lt;/LI&gt;
&lt;LI&gt;It does not prove that the portal user caused the tamper event (that requires audit telemetry for the action). If you later want attribution (“who enabled troubleshooting mode / changed settings”), we should pivot to Defender Action Center message and then confirm the user.&lt;/LI&gt;
&lt;LI&gt;The query can be used for generating alert using custom detection rule and take this alert to Security Operations center using API integration.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Below is reference to the sample output of the query.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;6) Summary&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Option 3 enables a controlled Troubleshooting Mode experience by combining Entra ID group-based user assignment, a custom Defender XDR role with minimal permissions, and device group scoping in MDE.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With this approach, eligible users can troubleshoot only the intended devices and perform a limited, operationally safe set of actions, while policy creation/modification&amp;nbsp;remains&amp;nbsp;restricted.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Audit and investigation are supported through MDE telemetry and device Action Center visibility, with the known limitation that certain telemetry entries may not include the initiating username.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 13 Apr 2026 05:43:59 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/microsoft-defender-for-endpoint-mde-custom-role-design-for/ba-p/4510646</guid>
      <dc:creator>SantoshPargi</dc:creator>
      <dc:date>2026-04-13T05:43:59Z</dc:date>
    </item>
    <item>
      <title>Customer Offerings: Azure Local - Implementation, Migration, and Management</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/customer-offerings-azure-local-implementation-migration-and/ba-p/4510593</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hi everyone!&lt;/P&gt;
&lt;P&gt;Brandon here, back once again to talk to you about a couple of new offerings that have just been released to assist our Unified customers with their on-premises virtualization needs! I continue to have the privilege of leading a great program and team helping customers to migrate from VMware to more cost-effective and/or modern solutions. These new offerings are &amp;lt;drum roll&amp;gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/customer-offerings-hyper-v---implementation-migration-and-management/4510592" target="_blank"&gt;Hyper-V - Implementation, Migration, and Management&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Azure Local - Implementation, Migration, and Management&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;NOTE: These offerings do not provide hands on keyboard support, do not create custom documentation for customers, and cannot provide direct support for any 3&lt;SUP&gt;rd&lt;/SUP&gt; party products that may be used in the process of migrations.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Many customers are reassessing their virtualization strategies and are actively exploring alternatives to VMware that align with long‑term hybrid cloud goals. Azure Local offers a purpose‑built platform that combines proven Windows Server–based virtualization with Azure services and management tooling, enabling customers to modernize on‑premises infrastructure while maintaining tight integration with Azure management, security, and governance capabilities.&lt;/P&gt;
&lt;P&gt;Whether driven by changing licensing models, cost optimization, or the need for deeper hybrid cloud integration, a successful transition requires more than a technology shift—it requires a structured, outcome‑focused approach. While we are providing these new offerings to customers, you do also have the option of more extended engagements as well that are broader in scope and more tailored to the end goals while we work side by side with you.&lt;/P&gt;
&lt;P&gt;If you are a Unified customer and looking to move off of VMware to Azure Local, or you just need help with your on-premises Microsoft virtualization technologies in general, have your account manager (CSAM) reach out to me!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Planning to go at it alone??&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Virtually (no pun intended) every environment reviewed by my team (and that is a LOT) that was set up prior to our review will have configuration issues, at times warranting extensive efforts to correct.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Problem 1&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt; There are some potentially significant differences between the way VMware and Azure Local are architected from the start, especially in areas of networking and storage, where mimicking methods used in the VMware world can actually lead to performance degradation in your target Azure Local environment.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Problem 2&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt; Your management method must also change. Additionally, if you are converting/migrating to Azure Local, the available methods need to be determined, the terminology and functional differences identified and learned…there can be a lot to unpack in this area.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Problem 3&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt; Perhaps the most obvious is that this may be a new platform for your team, and its important for them to gain experience through guided actions and knowledge transfer on the fly for those questions they really have, which is exactly what we aim to provide in guiding implementations and migrations!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;A Structured Engagement Model&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Successful Azure Local implementations are built around a guided engagement model rather than a one‑size‑fits‑all checklist. Each engagement is tailored to the customer environment, acknowledging that differences in scale, workloads, hardware, and operational maturity directly influence the migration approach. The framework emphasizes collaboration, clarity of expectations, and incremental progress instead of disruptive “lift‑and‑shift” execution. Whether we are talking about migration from another virtualization platform, or simply trying to reduce costs by implementing a new virtualization infrastructure, we’re here to help!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Key Phases of an Azure Local Implementation and/or Migration&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Most Azure Local implementation and migration engagements progress through a common set of phases:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Engagement scoping and technical discovery&lt;/STRONG&gt; to understand goals and current state (this is the conversation I, or one of the TZ Leads in the VMware Migration Program have with customers)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Planning and design&lt;/STRONG&gt; aligned to business and operational outcomes, with a limited scope&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Deployment and configuration validation&lt;/STRONG&gt; to ensure platform readiness&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Security and migration testing&lt;/STRONG&gt; to reduce risk and confirm workload compatibility&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Feature enablement&lt;/STRONG&gt;, including Azure Arc, to extend governance and management&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;While these phases provide structure, the sequence and depth of each stage are adapted based on the customer environment and objectives.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Key Outcomes for Customers&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Organizations that engage in Azure Local implementation or migration efforts commonly achieve:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Deeper familiarity with Microsoft virtualization technologies&lt;/LI&gt;
&lt;LI&gt;Successful deployment of PoC, pilot, or production environments&lt;/LI&gt;
&lt;LI&gt;Validated test migrations of virtual machines&lt;/LI&gt;
&lt;LI&gt;Identification and resolution of technical blockers&lt;/LI&gt;
&lt;LI&gt;Increased confidence in operational readiness&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;These engagements are advisory and collaborative in nature, prioritizing customer enablement and success.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Knowledge Transfer and Operational Readiness&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A central focus of the Azure Local engagements is ensuring that IT teams are prepared to operate the platform long after deployment completes. Knowledge transfer is embedded throughout the engagement through working sessions and direct participation in implementation activities. This approach helps organizations move confidently into steady‑state operations without relying on long‑term external support. As I mentioned above, if you do feel you will need longer term support, we have your back on that front as well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Looking Beyond Migration&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;An Azure Local migration is often the first step in a broader transformation journey. Many organizations use this transition to enable hybrid management, strengthen security posture, and prepare for future application or cloud modernization initiatives. When approached strategically, Azure Local becomes a platform for long‑term innovation and a step to modernizing your infrastructure, not just a replacement hypervisor.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Moving from VMware to Azure Local is not simply a technical migration—it is an opportunity to modernize how infrastructure is managed and governed. With structured planning, guided execution, and a focus on operational readiness, organizations can transition with confidence to a virtualization platform built for today’s hybrid cloud realities and tomorrow’s growth.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks for reading, and maybe we’ll talk soon!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 12 Apr 2026 19:55:01 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/customer-offerings-azure-local-implementation-migration-and/ba-p/4510593</guid>
      <dc:creator>BrandonWilson</dc:creator>
      <dc:date>2026-04-12T19:55:01Z</dc:date>
    </item>
    <item>
      <title>Customer Offerings: Hyper-V - Implementation, Migration, and Management</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/customer-offerings-hyper-v-implementation-migration-and/ba-p/4510592</link>
      <description>&lt;P&gt;Happy April everyone!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Brandon here, back once again to talk to you about a couple of new offerings that have just been released to assist our Unified customers with their on-premises virtualization needs! I continue to have the privilege of leading a great program and team helping customers to migrate from VMware to more cost-effective and/or modern solutions. These new offerings are &amp;lt;drum roll&amp;gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Hyper-V - Implementation, Migration, and Management&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/customer-offerings-azure-local---implementation-migration-and-management/4510593" target="_blank" rel="noopener" data-lia-auto-title="Azure Local - Implementation, Migration, and Management" data-lia-auto-title-active="0"&gt;Azure Local - Implementation, Migration, and Management&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;NOTE: These offerings do not provide hands on keyboard support, do not create custom documentation for customers, and cannot provide direct support for any 3&lt;SUP&gt;rd&lt;/SUP&gt; party products that may be used in the process of migrations.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Many customers are taking a closer look at Microsoft Hyper‑V as a strategic alternative to traditional virtualization platforms. Whether driven by changing licensing models, cost optimization, or the need for deeper hybrid cloud integration, a successful transition requires more than a technology shift—it requires a structured, outcome‑focused approach. While we are providing these new offerings to customers, you do also have the option of more extended engagements as well that are broader in scope and more tailored to the end goals while we work side by side with you.&lt;/P&gt;
&lt;P&gt;If you are a Unified customer and looking to move off of VMware to Hyper-V, or you just need help with your on-premises Microsoft virtualization technologies in general, have your account manager (CSAM) reach out to me!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Planning to go at it alone??&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I’m starting here for a very good reason… Virtually (no pun intended) every environment reviewed by my team (and that is a LOT) that was set up for a VMware migration, will have configuration issues, many times warranting a complete redesign and re-deployment.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Problem 1&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt; There are some potentially significant differences between the way VMware and Hyper-V are architected from the start, especially in areas of networking and storage, where mimicking methods used in the VMware world can actually lead to performance degradation in your target Hyper-V environment.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Problem 2&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt; To achieve feature parity, or near feature parity, your management method must also change. Additionally, if you are converting/migrating to Hyper-V, the available methods need to be determined, the terminology and functional differences identified and learned, well, honestly, I could go on for awhile on this, but I’ll spare you until we talk…&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Problem 3&lt;/U&gt;:&lt;/EM&gt;&lt;/STRONG&gt; Perhaps the most obvious is that this may be a new platform for your team, and its important for them to gain experience through guided actions and knowledge transfer on the fly for those questions they really have, which is exactly what we aim to provide in guiding implementations and migrations!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;You mentioned management and conversion tools, what do you mean??&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Hyper‑V has several methods for management, which can vary based on the feature needs and environment size. As a simple example, if I have 1500 virtualization hosts and 30,000 virtual machines spread out globally, its probably not going to be as efficient to manage everything only through locally available consoles. The capabilities of these management methods are continuing to grow and improve based on customer feedback, along with feedback from the field team. Let’s take a quick look at these options:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Native Windows tools: Hyper-V management console, Failover Clustering management console, Server Manager, etc
&lt;UL&gt;
&lt;LI&gt;This management method is typically used for small labs or smaller production environments (for migrations/conversions these methods do not provide feature parity with VMware).&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;System Center Virtual Machine Manager (SCVMM)
&lt;UL&gt;
&lt;LI&gt;This management method is fully supported for environments of all sizes. For migrations/conversions this method provides feature parity with VMware for management and features, along with offering VMware migration/conversion capability (offline). If you are already using any product from the System Center suite (SCCM, SCOM, SCORCH, SCSM, or DPM) then this can prove to be a great no cost option for you!&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Windows Admin Center: Administration Mode (aMode)
&lt;UL&gt;
&lt;LI&gt;This management method is fully supported for environments of all sizes, however, is not designed as an infrastructure wide virtualization management method, but for server management and administration. If your environment isn’t extremely large, and VMware feature parity is not a necessity, this can provide a great no cost option for management of your physical and virtual servers. In addition, this method provides an online conversion option (currently public preview), allowing for a more seamless migration from VMware.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Windows Admin Center: Virtualization Mode (vMode) (currently public preview)
&lt;UL&gt;
&lt;LI&gt;This management method is fully supported for environments of all sizes, and is designed solely for the purpose of managing the Hyper-V virtualization infrastructure, tying together the primary needs for virtualization fabric into an easy to navigate web-based UI.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Azure
&lt;UL&gt;
&lt;LI&gt;You can Arc enable any Windows host or virtual machine and have a method of management and integration with cloud based services. In addition, these can work in conjunction with all of the above options to improve your management experience for your platform, and allows for the easy implementation and integration of many cloud based technologies (such as Hyper-V replica backups to ASR)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;NOTE: You can learn more about Windows Admin Center evolution here:&amp;nbsp;&lt;A href="https://techcommunity.microsoft.com/blog/windows-admin-center-blog/windows-admin-center-architectural-changes/4488583" target="_blank" rel="noopener"&gt;Windows Admin Center Architectural Changes | Microsoft Community Hub&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;A Structured Engagement Model&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Successful Hyper‑V implementations are built around a guided engagement model rather than a one‑size‑fits‑all checklist. Each engagement is tailored to the customer environment, acknowledging that differences in scale, workloads, hardware, and operational maturity directly influence the migration approach. The framework emphasizes collaboration, clarity of expectations, and incremental progress instead of disruptive “lift‑and‑shift” execution. Whether we are talking about a migration from another virtualization platform, or simply trying to reduce costs by implementing a new virtualization infrastructure, we’re here to help!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Key Phases of a Hyper‑V Implementation and/or Migration&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Most Hyper‑V engagements progress through a common set of phases:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Engagement scoping and technical discovery&lt;/STRONG&gt; to understand goals and current state (this is the conversation I, or one of the TZ Leads in the VMware Migration Program have with customers)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Planning and design&lt;/STRONG&gt; aligned to business and operational outcomes, with a limited scope&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Deployment and configuration validation&lt;/STRONG&gt; to ensure platform readiness&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Security and migration testing&lt;/STRONG&gt; to reduce risk and confirm workload compatibility&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Optional feature enablement&lt;/STRONG&gt;, including Azure Arc, to extend governance and management&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;While these phases provide structure, the sequence and depth of each stage are adapted based on the customer environment and objectives.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Key Outcomes for Customers&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Organizations that engage in Hyper-V implementation or migration efforts commonly achieve:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Deeper familiarity with Microsoft virtualization technologies&lt;/LI&gt;
&lt;LI&gt;Successful deployment of PoC, pilot, or production environments&lt;/LI&gt;
&lt;LI&gt;Validated test migrations of virtual machines&lt;/LI&gt;
&lt;LI&gt;Identification and resolution of technical blockers&lt;/LI&gt;
&lt;LI&gt;Increased confidence in operational readiness&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;These engagements are advisory and collaborative in nature, prioritizing customer enablement and success.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Knowledge Transfer and Operational Readiness&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A central focus of a Hyper‑V engagement is ensuring that IT teams are prepared to operate the platform long after deployment completes. Knowledge transfer is embedded throughout the engagement through working sessions and direct participation in implementation activities. This approach helps organizations move confidently into steady‑state operations without relying on long‑term external support. As I mentioned above, if you do feel you will need longer term support, we have your back on that front as well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Looking Beyond Migration&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A Hyper‑V migration is often the first step in a broader transformation journey. Many organizations use this transition to enable hybrid management, strengthen security posture, and prepare for future application or cloud modernization initiatives. When approached strategically, Hyper‑V becomes a platform for long‑term innovation, not just a replacement hypervisor.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Moving from VMware to Hyper‑V is not simply a technical migration—it is an opportunity to modernize how infrastructure is managed and governed. With structured planning, guided execution, and a focus on operational readiness, organizations can transition with confidence to a virtualization platform built for today’s hybrid cloud realities and tomorrow’s growth.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks for reading, and maybe we’ll talk soon!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 13 Apr 2026 02:50:50 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/customer-offerings-hyper-v-implementation-migration-and/ba-p/4510592</guid>
      <dc:creator>BrandonWilson</dc:creator>
      <dc:date>2026-04-13T02:50:50Z</dc:date>
    </item>
    <item>
      <title>Auditing FIDO2 authentication for Windows Sign-in</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/auditing-fido2-authentication-for-windows-sign-in/ba-p/4509702</link>
      <description>&lt;P&gt;Hello everyone, my name is Liju and I am a Cloud Solutions Architect helping customers secure their cloud and hybrid identities. With this post, I would like to show how FIDO2 security key authentication for Windows sign‑in can be audited on client devices.&lt;/P&gt;
&lt;P&gt;Recently, a customer of mine asked how they could:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Audit each use of a FIDO2 security key on a Windows client device&lt;/LI&gt;
&lt;LI&gt;Track all PIN verification attempts on the security key, including both successful and unsuccessful attempts&lt;/LI&gt;
&lt;LI&gt;Determine which user successfully authenticated to a Windows device using a FIDO2 security key&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;While standard Windows logon events such as &lt;A href="https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4624" target="_blank" rel="noopener"&gt;4624&lt;/A&gt; and &lt;A href="https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4625" target="_blank" rel="noopener"&gt;4625&lt;/A&gt; report the user and logon type, they do not indicate whether a FIDO2 security key was used. We can find this information in the &lt;STRONG&gt;Microsoft&lt;/STRONG&gt;&lt;STRONG&gt;‑Windows&lt;/STRONG&gt;&lt;STRONG&gt;‑WebAuthN/Operational&lt;/STRONG&gt; event log, although interpreting these events requires additional decoding and correlation.&lt;/P&gt;
&lt;DIV class="mce-toc"&gt;
&lt;H2 class="lia-linked-item"&gt;&lt;a id="community--1-ToC" class="lia-anchor"&gt;&lt;/a&gt;Table of Contents&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-EntraID" target="_self" data-lia-auto-title="Entra ID" data-lia-auto-title-active="0"&gt;Entra ID&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-FIDO2SecurityKeyauthenticationinWindows" target="_self" data-lia-auto-title="FIDO2 Security Key authentication in Windows" data-lia-auto-title-active="0"&gt;FIDO2 Security Key authentication in Windows&lt;/A&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-Authenticationflow" target="_self" data-lia-auto-title="Authentication flow (high-level)" data-lia-auto-title-active="0"&gt;Authentication flow (high-level)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-MappingthestepstoWebAuthNevents" target="_self" data-lia-auto-title="Mapping the steps to WebAuthN events" data-lia-auto-title-active="0"&gt;Mapping the steps to WebAuthN events&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-WebAuthNEvents" target="_self" data-lia-auto-title="WebAuthN Events" data-lia-auto-title-active="0"&gt;WebAuthN Events&lt;/A&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-Challengegeneration" target="_self" data-lia-auto-title="Challenge generation" data-lia-auto-title-active="0"&gt;Challenge generation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-Requestconstruction" target="_self" data-lia-auto-title="Request construction" data-lia-auto-title-active="0"&gt;Request construction&lt;/A&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-HowtoparsetheCBOR-encodedrequest" target="_self" data-lia-auto-title="How to parse the CBOR-encoded request" data-lia-auto-title-active="0"&gt;How to parse the CBOR-encoded request&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-TranslatingEntrakeyidentifiertoWebAuthNCredentialId" target="_self" data-lia-auto-title="Translating Entra key identifier to WebAuthN Credential Id" data-lia-auto-title-active="0"&gt;Translating Entra key identifier to WebAuthN Credential Id&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-Authenticatorprocessing" target="_self" data-lia-auto-title="Authenticator processing" data-lia-auto-title-active="0"&gt;Authenticator processing&lt;/A&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-AuthenticatorPINValidation" target="_self" data-lia-auto-title="Authenticator PIN Validation" data-lia-auto-title-active="0"&gt;Authenticator PIN Validation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-HowtoparsetheCBOR-encodedrequest-2" target="_self" data-lia-auto-title="How to parse the CBOR-encoded request" data-lia-auto-title-active="0"&gt;How to parse the CBOR-encoded request&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-AuthenticatorGetAssertionoperation" target="_self" data-lia-auto-title="Authenticator GetAssertion operation" data-lia-auto-title-active="0"&gt;Authenticator GetAssertion operation&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-Responseprocessing" target="_self" data-lia-auto-title="Response processing" data-lia-auto-title-active="0"&gt;Response processing&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link" href="#community--1-Tyingitalltogether" target="_self" data-lia-auto-title="Tying it all together" data-lia-auto-title-active="0"&gt;Tying it all together&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But first, let us see how Entra ID stores the information when a user registers a FIDO2 security ley as an authentication method.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1 id="mcetoc_1jlkjdlpu_1" class="lia-linked-item"&gt;&lt;a id="community--1-EntraID" class="lia-anchor"&gt;&lt;/a&gt;Entra ID&lt;/H1&gt;
&lt;P&gt;For each user that has registered a FIDO2 security key, the keys are represented as a &lt;A href="https://learn.microsoft.com/en-us/graph/api/resources/fido2authenticationmethod?view=graph-rest-1.0" target="_blank" rel="noopener"&gt;fido2AuthenticationMethod&lt;/A&gt; resource on the user object. The identifier for the key is stored with a Base64URL encoding.&lt;/P&gt;
&lt;P&gt;In the example below the value is &lt;SPAN class="lia-text-color-14"&gt;&lt;EM&gt;7ebzDmVTSreLsJkrjm1mNA2&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;When a FIDO2 key is registered, an audit event is generated in Entra ID. The &lt;STRONG&gt;KeyIdentifier&lt;/STRONG&gt; is stored using standard Base64 encoding.&lt;/P&gt;
&lt;P&gt;In the example below the value is &lt;SPAN class="lia-text-color-14"&gt;&lt;EM&gt;7ebzDmVTSreLsJkrjm1mNA==&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;img /&gt;&lt;img /&gt;&lt;img /&gt;
&lt;P&gt;If diagnostic logging is enabled for Entra ID and if the&amp;nbsp;&lt;STRONG&gt;AuditLogs&lt;/STRONG&gt; are sent to a Log Analytics Workspace, this information can be queried using KQL.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;AuditLogs
| where Category == "UserManagement"
| where OperationName == "Add Passkey (device-bound)"
| extend UserUPN = tostring(TargetResources[0].userPrincipalName)
| extend FIDOkeyId = tostring(TargetResources[0].displayName)&lt;/LI-CODE&gt;&lt;img /&gt;
&lt;P class="lia-align-right"&gt;&lt;A class="lia-internal-link" href="#community--1-ToC" target="_blank" rel="noopener" data-lia-auto-title="Top👆" data-lia-auto-title-active="0"&gt;Top👆&lt;/A&gt;&lt;/P&gt;
&lt;H1 id="mcetoc_1jlkjdlpu_2" class="lia-linked-item"&gt;&lt;a id="community--1-FIDO2SecurityKeyauthenticationinWindows" class="lia-anchor"&gt;&lt;/a&gt;FIDO2 Security Key authentication in Windows&lt;/H1&gt;
&lt;P&gt;When a user signs in with a FIDO2 security key, Windows is trying to answer one question:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Can this authenticator (security key) prove possession of the private key associated with a registered credential for this user?&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;This proof is provided in the form of a &lt;STRONG&gt;WebAuthN assertion&lt;/STRONG&gt;, which is a cryptographic response generated by the authenticator.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 id="mcetoc_1jlkjdlpu_3" class="lia-linked-item"&gt;&lt;a id="community--1-Authenticationflow" class="lia-anchor"&gt;&lt;/a&gt;Authentication flow (high-level)&lt;/H2&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;STRONG&gt;Challenge generation&lt;BR /&gt;&lt;/STRONG&gt;During FIDO2 authentication for a Microsoft Entra user, a &lt;STRONG style="color: rgb(30, 30, 30);"&gt;challenge&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt; is generated by the relying party (for example, login.microsoft.com) and provided to the client (Windows).&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;STRONG&gt;Request construction&lt;BR /&gt;&lt;/STRONG&gt;Windows initiates a &lt;STRONG style="color: rgb(30, 30, 30);"&gt;WebAuthN GetAssertion request&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;, which is encoded using &lt;/SPAN&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;CBOR&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt; (Concise Binary Object Representation), a compact binary format used by the FIDO2 protocol.&lt;BR /&gt;&lt;/SPAN&gt;The request contains the &lt;STRONG style="color: rgb(30, 30, 30);"&gt;clientDataHash&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt; which is a hashed JSON object containing the challenge sent by Entra (along with other parameters).&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL start="3"&gt;
&lt;LI&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;STRONG&gt;Authenticator processing&lt;BR /&gt;&lt;/STRONG&gt;The request is sent to the authenticator using &lt;STRONG style="color: rgb(30, 30, 30);"&gt;CTAP&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt; (Client to Authenticator Protocol).&lt;BR /&gt;&lt;/SPAN&gt;The authenticator then locates a matching credential for the relying party, performs user verification if required (for example, PIN or biometric) and constructs the &lt;STRONG style="color: rgb(30, 30, 30);"&gt;authenticatorData&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;, which includes the hash of the relying party ID (&lt;/SPAN&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;rpIdHash&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;)&lt;BR /&gt;&lt;/SPAN&gt;The authenticator finally generates the assertion by signing (&lt;STRONG style="color: rgb(30, 30, 30);"&gt;authenticatorData&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt; + &lt;/SPAN&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;clientDataHash&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;) using the credential’s private key&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL start="4"&gt;
&lt;LI&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;STRONG&gt;Response processing&lt;BR /&gt;&lt;/STRONG&gt;The authenticator returns the assertion (encoded in CBOR) to Windows.&lt;BR /&gt;Windows then decodes the CBOR response, extracts the assertion components (credential ID, authenticatorData, signature), evaluates the result and completes the WebAuthN operation.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="lia-align-right"&gt;&lt;A href="#community--1-ToC" target="_blank" rel="noopener" data-lia-auto-title="Top👆" data-lia-auto-title-active="0"&gt;Top👆&lt;/A&gt;&lt;/P&gt;
&lt;H2 id="mcetoc_1jlkjdlpu_4" class="lia-linked-item"&gt;&lt;a id="community--1-MappingthestepstoWebAuthNevents" class="lia-anchor"&gt;&lt;/a&gt;Mapping the steps to WebAuthN events&lt;/H2&gt;
&lt;P&gt;Before we take a look at the WebAuthN events on the Windows client, let us see how the logon process maps directly to the Event Log task categories.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 100%; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Step&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Details&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Event entry&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Challenge generation&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Windows initiates authentication using a FIDO2 credential&lt;/P&gt;
&lt;P&gt;A TransactionId is created that ties all related events together.&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;WebAuthN Ctap GetAssertion started (Event ID 1003)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Request construction&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Windows builds the CTAP2 request to send to the key&lt;/P&gt;
&lt;P&gt;Encoded in the request are the rpId and clientDataHash.&lt;/P&gt;
&lt;P&gt;For Entra ID, the rpId is login.microsoft.com&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Cbor encode GetAssertion request (Event ID 1103)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="2"&gt;
&lt;P&gt;Authenticator processing&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Windows transitions from WebAuthN to the CTAP layer, and authenticator interaction begins&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Ctap GetAssertion started (Event ID 2100)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Windows exchanges CTAP commands with the key&lt;/P&gt;
&lt;P&gt;This includes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;PIN verification (authenticatorClientPIN / getPINToken)&lt;/LI&gt;
&lt;LI&gt;Authentication request (authenticatorGetAssertion)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Ctap Usb Send Receive (Event ID 2225)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="3"&gt;
&lt;P&gt;Response processing&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Authenticator returns result to Windows&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Ctap GetAssertion completed (Event ID 2102 / 2103)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Windows interpret the authenticator’s response&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Cbor decode GetAssertion response (Event ID 1104)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Windows completes WebAuthN operation&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;WebAuthN Ctap GetAssertion completed&amp;nbsp;&amp;nbsp; (Event ID 1004 / 1005)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 18.9064%" /&gt;&lt;col style="width: 44.8591%" /&gt;&lt;col style="width: 36.2345%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P class="lia-align-right"&gt;&lt;A href="#community--1-ToC" target="_blank" rel="noopener" data-lia-auto-title="Top👆" data-lia-auto-title-active="0"&gt;Top👆&lt;/A&gt;&lt;/P&gt;
&lt;H1 id="mcetoc_1jlkjdlpu_5" class="lia-linked-item"&gt;&lt;a id="community--1-WebAuthNEvents" class="lia-anchor"&gt;&lt;/a&gt;WebAuthN Events&lt;/H1&gt;
&lt;H2 id="mcetoc_1jlkjdlpu_6" class="lia-linked-item"&gt;&lt;a id="community--1-Challengegeneration" class="lia-anchor"&gt;&lt;/a&gt;Challenge generation&lt;/H2&gt;
&lt;P&gt;The &lt;STRONG&gt;WebAuthN Ctap GetAssertion started&lt;/STRONG&gt; event (Event ID 1003) indicates that Windows has initiated a WebAuthN authentication operation and is beginning the process of requesting an assertion from an authenticator. This marks the start of the FIDO2 authentication flow but does not yet involve communication with the security key or indicate whether authentication will succeed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;H2 id="mcetoc_1jlkjdlpu_7" class="lia-linked-item"&gt;&lt;a id="community--1-Requestconstruction" class="lia-anchor"&gt;&lt;/a&gt;Request construction&lt;/H2&gt;
&lt;P&gt;The &lt;STRONG&gt;Cbor encode GetAssertion request&lt;/STRONG&gt; event (Event ID 1103) shows Windows encoding a &lt;EM&gt;targeted&lt;/EM&gt; WebAuthN GetAssertion request.&lt;/P&gt;
&lt;P&gt;When the Request begins with 0x02, it indicates that this is a &lt;STRONG&gt;authenticatorGetAssertion&lt;/STRONG&gt; CTAP command.&lt;/P&gt;
&lt;P&gt;Note that whether or not a credential ID is present in this event depends on the scenario. When &lt;STRONG&gt;AllowCredentialCount&lt;/STRONG&gt; is greater than zero, the request includes one or more &lt;EM&gt;&lt;U&gt;specific&lt;/U&gt;&lt;/EM&gt; credential IDs (making it a “targeted” WebAuthN GetAssertion request). When it is zero, the authenticator is performing a credential discovery.&lt;/P&gt;
&lt;P&gt;The description may be parsed to get the credential Id and will match the key identifier from Entra ID when Base64 encoded.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-background-color-2" border="1" style="width: 100%; border-width: 1px;"&gt;&lt;colgroup&gt;&lt;col style="width: 99.9074%" /&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;The &lt;STRONG&gt;Cbor encode GetAssertion request &lt;/STRONG&gt;event (Event ID 1103) is generally the most useful event for auditing each authentication attempts of a FIDO2 security key on a Windows client device.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P class="lia-linked-item lia-align-right"&gt;&lt;A href="#community--1-ToC" target="_blank" rel="noopener" data-lia-auto-title="Top👆" data-lia-auto-title-active="0"&gt;Top👆&lt;/A&gt;&lt;/P&gt;
&lt;H3 id="mcetoc_1jlkjdlpu_8" class="lia-linked-item"&gt;&lt;a id="community--1-HowtoparsetheCBOR-encodedrequest" class="lia-anchor"&gt;&lt;/a&gt;How to parse the CBOR-encoded request&lt;/H3&gt;
&lt;P&gt;Let us take the Cbor Encode GetAssertion Request event (ID 1103) and parse the CBOR-encoded data in its description&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;TransactionId: &lt;/STRONG&gt;{3443b0f7-a6a2-4b1c-9026-aea3ab93f662}&lt;BR /&gt;&lt;STRONG&gt;RpId:&lt;/STRONG&gt; login.microsoft.com&lt;BR /&gt;&lt;STRONG&gt;ClientDataHashAlgId: &lt;/STRONG&gt;S256&lt;BR /&gt;&lt;STRONG&gt;ClientDataLength: &lt;/STRONG&gt;176&lt;BR /&gt;&lt;STRONG&gt;ClientDataHash: &lt;/STRONG&gt;0x0E3A6FC2C6941563481563AFADF439276A2280A9F59E85197478BB748E625DF3&lt;BR /&gt;&lt;STRONG&gt;AllowCredentialCount: &lt;/STRONG&gt;1&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Request:&lt;/STRONG&gt; 0x02A401736C6F67696E2E6D6963726F736F66742E636F6D0258200E3A6FC2C6941563481563AFADF439276A2280A9F59E85197478BB748E625DF30381A262696450EDE6F30E65534AB78BB0992B8E6D663464747970656A7075626C69632D6B657905A1627570F5&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The first byte gives us the CTAP command.
&lt;UL&gt;
&lt;LI&gt;In this case it is &lt;STRONG&gt;0x02&lt;/STRONG&gt; which means &lt;STRONG&gt;authenticatorGetAssertion&lt;/STRONG&gt; (&lt;A href="https://fidoalliance.org/specs/fido-v2.2-rd-20230321/fido-client-to-authenticator-protocol-v2.2-rd-20230321.html#authenticatorGetAssertion" target="_blank" rel="noopener"&gt;Client to Authenticator Protocol (CTAP)&lt;/A&gt;)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Everything after that first byte is the CBOR payload (&lt;STRONG&gt;A4&lt;/STRONG&gt;01736C6F67696E2E6D6963726F736F66742E636F6D0258200E3A6FC2C6941563481563AFADF439276A2280A9F59E85197478BB748E625DF30381A262696450EDE6F30E65534AB78BB0992B8E6D663464747970656A7075626C69632D6B657905A1627570F5).
&lt;UL&gt;
&lt;LI&gt;Note that The CBOR payload starts with &lt;STRONG&gt;A4&lt;/STRONG&gt;. This means that the CBOR body is a map with 4 entries or named fields.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;If you do not want to decode the bytes by hand, a simple way to inspect the payload is to paste it into an online CBOR decoder such as &lt;A href="https://cbor.nemo157.com/" target="_blank" rel="noopener"&gt;CBOR Playground&lt;/A&gt;. The site accepts hex input and can parse it into a readable CBOR structure.&lt;/LI&gt;
&lt;LI&gt;Paste the CBOR payload into the input area. Make sure the input mode is &lt;STRONG&gt;Hex&lt;/STRONG&gt;, then use &lt;STRONG&gt;Parse&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;/OL&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL start="5"&gt;
&lt;LI&gt;For this example, the decoded result is:&lt;/LI&gt;
&lt;/OL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;{&lt;BR /&gt;&amp;nbsp; 1: "login.microsoft.com",&lt;BR /&gt;&amp;nbsp; 2: h'0E3A6FC2C6941563481563AFADF439276A2280A9F59E85197478BB748E625DF3',&lt;BR /&gt;&amp;nbsp; 3: [&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "id": h'EDE6F30E65534AB78BB0992B8E6D6634',&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "type": "public-key"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; ],&lt;BR /&gt;&amp;nbsp; 5: {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "up": true&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;}&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;OL start="6"&gt;
&lt;LI&gt;This output is still using the CTAP numeric field keys (1-5), so the next step is to translate those numbers into the field names used by the GetAssertion request based on the table at &lt;A href="https://fidoalliance.org/specs/fido-v2.2-rd-20230321/fido-client-to-authenticator-protocol-v2.2-rd-20230321.html#authenticatorGetAssertion" target="_blank" rel="noopener"&gt;Client to Authenticator Protocol (CTAP)&lt;/A&gt;:
&lt;UL&gt;
&lt;LI&gt;1 = rpId&lt;/LI&gt;
&lt;LI&gt;2 = clientDataHash&lt;/LI&gt;
&lt;LI&gt;3 = allowList&lt;/LI&gt;
&lt;LI&gt;5 = options&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;So in plain English, the payload says:&lt;/LI&gt;
&lt;/OL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;{&lt;BR /&gt;&amp;nbsp; "&lt;STRONG&gt;rpId&lt;/STRONG&gt;": "login.microsoft.com",&lt;BR /&gt;&amp;nbsp; "&lt;STRONG&gt;clientDataHash&lt;/STRONG&gt;": "0E3A6FC2C6941563481563AFADF439276A2280A9F59E85197478BB748E625DF3",&lt;BR /&gt;&amp;nbsp; "&lt;STRONG&gt;allowList&lt;/STRONG&gt;": [&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&lt;STRONG&gt;id&lt;/STRONG&gt;": "EDE6F30E65534AB78BB0992B8E6D6634",&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&lt;STRONG&gt;type&lt;/STRONG&gt;": "public-key"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; ],&lt;BR /&gt;&amp;nbsp; "&lt;STRONG&gt;options&lt;/STRONG&gt;": {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&lt;STRONG&gt;up&lt;/STRONG&gt;": true&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;}&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;OL start="8"&gt;
&lt;LI&gt;For a bit more detail about each field:
&lt;UL&gt;
&lt;LI&gt;Key 1 contains the relying party ID&lt;/LI&gt;
&lt;LI&gt;Key 2 contains the 32-byte clientDataHash&lt;/LI&gt;
&lt;LI&gt;Key 3 contains an allowList array with one credential descriptor&lt;/LI&gt;
&lt;LI&gt;Key 5 contains an options map&lt;/LI&gt;
&lt;LI&gt;Inside options, up: true means user presence was requested&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;For details on how to decode the CBOR payload yourself see &lt;A href="https://www.rfc-editor.org/rfc/rfc8949.html" target="_blank" rel="noopener"&gt;RFC 8949: Concise Binary Object Representation (CBOR)&lt;/A&gt;&lt;/P&gt;
&lt;P class="lia-align-right"&gt;&lt;A href="#community--1-ToC" target="_blank" rel="noopener" data-lia-auto-title="Top👆" data-lia-auto-title-active="0"&gt;Top👆&lt;/A&gt;&lt;/P&gt;
&lt;H3 id="mcetoc_1jlkjdlpu_9" class="lia-linked-item"&gt;&lt;a id="community--1-TranslatingEntrakeyidentifiertoWebAuthNCredentialId" class="lia-anchor"&gt;&lt;/a&gt;Translating Entra key identifier to WebAuthN Credential Id&lt;/H3&gt;
&lt;P&gt;The &lt;STRONG&gt;key identifier&lt;/STRONG&gt; from Entra ID when Base64 decoded will match the &lt;STRONG&gt;CredentialId&lt;/STRONG&gt; in the event.&lt;/P&gt;
&lt;P&gt;A sample PowerShell function that does this is given below:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;function Convert-Base64UrlToBytes {
    param(
        [Parameter(Mandatory=$true)]
        [string]$Base64Url
    )

    # Convert Base64url to normal Base64
    $b64 = $Base64Url.Replace('-', '+').Replace('_', '/')

    # Add padding if required
    switch ($b64.Length % 4) {
        2 { $b64 += "==" }
        3 { $b64 += "=" }
        0 { }  # already aligned
        1 { throw "Invalid Base64url string length" }
    }

    # Decode Base64 → byte array
    return [Convert]::FromBase64String($b64)
}

cls

# Conversion from Base64URL encoded identifier (user object)
$bytes = Convert-Base64UrlToBytes "7ebzDmVTSreLsJkrjm1mNA2"
($bytes | ForEach-Object { $_.ToString("X2") }) -join ""

# Conversion from Base64 encoded identifier (audit log)
$bytes = Convert-Base64UrlToBytes "7ebzDmVTSreLsJkrjm1mNA=="
($bytes | ForEach-Object { $_.ToString("X2") }) -join "" 
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-align-right"&gt;&lt;A href="#community--1-ToC" target="_blank" rel="noopener" data-lia-auto-title="Top👆" data-lia-auto-title-active="0"&gt;Top👆&lt;/A&gt;&lt;/P&gt;
&lt;H2 id="mcetoc_1jlkjdlpu_10" class="lia-linked-item"&gt;&lt;a id="community--1-Authenticatorprocessing" class="lia-anchor"&gt;&lt;/a&gt;Authenticator processing&lt;/H2&gt;
&lt;P&gt;The &lt;STRONG&gt;Ctap GetAssertion started&lt;/STRONG&gt; event (Event ID 2100) shows Windows starting a CTAP GetAssertion operation against a specific FIDO2 key.&lt;/P&gt;
&lt;img /&gt;
&lt;H3 id="mcetoc_1jlkjdlpu_11" class="lia-linked-item"&gt;&lt;a id="community--1-AuthenticatorPINValidation" class="lia-anchor"&gt;&lt;/a&gt;Authenticator PIN Validation&lt;/H3&gt;
&lt;P&gt;All PIN attempts generate a &lt;STRONG&gt;Ctap Usb Send Receive&lt;/STRONG&gt; event (Event ID 2225) where the &amp;nbsp;&lt;STRONG&gt;Request&lt;/STRONG&gt; starts with &lt;STRONG&gt;0x&lt;SPAN class="lia-text-color-14"&gt;06&lt;/SPAN&gt;A401010205&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;06&lt;/STRONG&gt; means this is a &lt;STRONG&gt;PIN-related command&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;If the request starts with &lt;STRONG&gt;06A401010205&lt;/STRONG&gt; this denotes a &lt;STRONG&gt;getPinToken&lt;/STRONG&gt; flag, meaning a &lt;STRONG&gt;PIN verification attempt.&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;If the &lt;STRONG&gt;Response&lt;/STRONG&gt; starts &lt;STRONG&gt;0x00&lt;/STRONG&gt;, it indicates a Success.&lt;/P&gt;
&lt;P&gt;Other possible values for the response field are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;0x31 - Incorrect PIN&lt;/LI&gt;
&lt;LI&gt;0x33 - PIN Auth Invalid&lt;/LI&gt;
&lt;LI&gt;0x34 - PIN Required&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-background-color-2" border="1" style="width: 100%; border-width: 1px;"&gt;&lt;colgroup&gt;&lt;col style="width: 99.9074%" /&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Therefore,&amp;nbsp;&lt;STRONG&gt;Ctap Usb Send Receive&lt;/STRONG&gt; events (Event ID 2225) where the &lt;STRONG&gt;Request&lt;/STRONG&gt; starts with &lt;STRONG&gt;0x06A401010205 &lt;/STRONG&gt;will report all security key PIN attempts, both successful and unsuccessful, on the client device.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P class="lia-align-right"&gt;&lt;A href="#community--1-ToC" target="_blank" rel="noopener" data-lia-auto-title="Top👆" data-lia-auto-title-active="0"&gt;Top👆&lt;/A&gt;&lt;/P&gt;
&lt;H3 id="mcetoc_1jlkjdlpu_12" class="lia-linked-item"&gt;&lt;a id="community--1-HowtoparsetheCBOR-encodedrequest-2" class="lia-anchor"&gt;&lt;/a&gt;&lt;a id="community--1-HowtoparsetheCBOR-encodedrequest" class="lia-anchor"&gt;&lt;/a&gt;How to parse the CBOR-encoded request&lt;/H3&gt;
&lt;P&gt;Let us try and parse the CBOR-encoded data in the event’s description once again.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;TransactionId: &lt;/STRONG&gt;{3443b0f7-a6a2-4b1c-9026-aea3ab93f662}&lt;BR /&gt;&lt;STRONG&gt;Request Command: &lt;/STRONG&gt;0x90&lt;BR /&gt;&lt;STRONG&gt;Response Command: &lt;/STRONG&gt;0x90&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Request:&lt;/STRONG&gt; 0x06A40101020503A5010203381820012158206F67957900E6BBEC39838F015E3F5D6918F5A8D76E401828363E51F6C256541222582027E8B11854CE667B8EE19DF3A3DEE4A3F0DB43809811C3A93F2E9C0293E466AA0650746BE172CD2402CFFCC94734BC98D16A&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Response: &lt;/STRONG&gt;0x00A1025093B2EE5307CC81EA08684FEBE22D536D&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The first byte in the request (&lt;STRONG&gt;0x06&lt;/STRONG&gt;) gives us the &lt;STRONG&gt;authenticatorClientPIN &lt;/STRONG&gt;CTAP command (&lt;A href="https://fidoalliance.org/specs/fido-v2.2-rd-20230321/fido-client-to-authenticator-protocol-v2.2-rd-20230321.html#authenticatorClientPIN" target="_blank" rel="noopener"&gt;Client to Authenticator Protocol (CTAP)&lt;/A&gt;)&lt;/LI&gt;
&lt;LI&gt;Everything after that first byte is the CBOR payload (&lt;STRONG&gt;A4&lt;/STRONG&gt;0101020503A5010203381820012158206F67957900E6BBEC39838F015E3F5D6918F5A8D76E401828363E51F6C256541222582027E8B11854CE667B8EE19DF3A3DEE4A3F0DB43809811C3A93F2E9C0293E466AA0650746BE172CD2402CFFCC94734BC98D16A).
&lt;UL&gt;
&lt;LI&gt;As before &lt;STRONG&gt;A4&lt;/STRONG&gt; means that the CBOR body is a map with &lt;STRONG&gt;4&lt;/STRONG&gt; entries or named fields.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Parsing this payload using &lt;A href="https://cbor.nemo157.com/" target="_blank" rel="noopener"&gt;CBOR Playground&lt;/A&gt; we get:&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;{&lt;BR /&gt;&amp;nbsp; 1: 1,&lt;BR /&gt;&amp;nbsp; 2: 5,&lt;BR /&gt;&amp;nbsp; 3: {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1: 2,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3: -25,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1: h'6F67957900E6BBEC39838F015E3F5D6918F5A8D76E401828363E51F6C2565412',&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -2: h'27E8B11854CE667B8EE19DF3A3DEE4A3F0DB43809811C3A93F2E9C0293E466AA'&lt;BR /&gt;&amp;nbsp; },&lt;BR /&gt;&amp;nbsp; 6: h'746BE172CD2402CFFCC94734BC98D16A'&lt;BR /&gt;}&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL start="4"&gt;
&lt;LI&gt;Using the table at &lt;A href="https://fidoalliance.org/specs/fido-v2.2-rd-20230321/fido-client-to-authenticator-protocol-v2.2-rd-20230321.html#authnrClientPin-cmd-dfn" target="_blank" rel="noopener"&gt;Client to Authenticator Protocol (CTAP)&lt;/A&gt; to translate the numeric keys we have:
&lt;UL&gt;
&lt;LI&gt;key 1 = pinUvAuthProtocol&lt;/LI&gt;
&lt;LI&gt;key 2 = subCommand&lt;/LI&gt;
&lt;LI&gt;key 3 = keyAgreement&lt;/LI&gt;
&lt;LI&gt;key 6 = pinHashEnc&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;After the translation, the payload says:&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp; "&lt;STRONG&gt;pinUvAuthProtocol&lt;/STRONG&gt;": 1,&lt;BR /&gt;&amp;nbsp; "&lt;STRONG&gt;subCommand&lt;/STRONG&gt;": 5,&lt;BR /&gt;&amp;nbsp; "&lt;STRONG&gt;keyAgreement&lt;/STRONG&gt;": {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1: 2,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3: -25,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1: h'6F67957900E6BBEC39838F015E3F5D6918F5A8D76E401828363E51F6C2565412',&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -2: h'27E8B11854CE667B8EE19DF3A3DEE4A3F0DB43809811C3A93F2E9C0293E466AA'&lt;BR /&gt;&amp;nbsp; },&lt;BR /&gt;&amp;nbsp; "&lt;STRONG&gt;pinHashEnc&lt;/STRONG&gt;": h'746BE172CD2402CFFCC94734BC98D16A'&lt;BR /&gt;}&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL start="6"&gt;
&lt;LI&gt;The information most useful for us here is "&lt;STRONG&gt;subCommand&lt;/STRONG&gt;": 5, which as you can see from the second table in &lt;A href="https://fidoalliance.org/specs/fido-v2.2-rd-20230321/fido-client-to-authenticator-protocol-v2.2-rd-20230321.html#authnrClientPin-cmd-dfn" target="_blank" rel="noopener"&gt;Client to Authenticator Protocol (CTAP)&lt;/A&gt; tells is a &lt;STRONG&gt;getPinToken&lt;/STRONG&gt; subcommand.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;In summary, when the request begins with &lt;STRONG&gt;06 A4 01 01 02 05&lt;/STRONG&gt;, it can be identified as a PIN verification attempt. The leading byte &lt;STRONG&gt;0x06&lt;/STRONG&gt; indicates the CTAP &lt;STRONG&gt;authenticatorClientPIN&lt;/STRONG&gt; command. The next byte &lt;STRONG&gt;A4&lt;/STRONG&gt; shows that the CBOR payload is a map with four fields. Within that map, the sequence &lt;STRONG&gt;01 01&lt;/STRONG&gt; corresponds to &lt;STRONG&gt;pinUvAuthProtocol = 1&lt;/STRONG&gt;, and &lt;STRONG&gt;02 05&lt;/STRONG&gt; corresponds to &lt;STRONG&gt;subCommand = 5&lt;/STRONG&gt;. In the Client PIN command set, subcommand &lt;STRONG&gt;5&lt;/STRONG&gt; represents &lt;STRONG&gt;getPinToken&lt;/STRONG&gt;, which is used during PIN verification. Together, this byte pattern reliably indicates that the operation is a PIN-based authentication step rather than a standard assertion request.&lt;/P&gt;
&lt;P&gt;Turn on &lt;STRONG&gt;Annotate&lt;/STRONG&gt; if you want the CBOR Playground site to show how each byte is interpreted.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-align-right"&gt;&lt;A href="#community--1-ToC" target="_blank" rel="noopener" data-lia-auto-title="Top👆" data-lia-auto-title-active="0"&gt;Top👆&lt;/A&gt;&lt;/P&gt;
&lt;H3 id="mcetoc_1jlkjdlpu_13" class="lia-linked-item"&gt;&lt;a id="community--1-AuthenticatorGetAssertionoperation" class="lia-anchor"&gt;&lt;/a&gt;Authenticator GetAssertion operation&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;Ctap Usb Send Receive&lt;/STRONG&gt; events (Event ID 2225) where the &lt;STRONG&gt;Request&lt;/STRONG&gt; begins with &lt;STRONG&gt;0x02&lt;/STRONG&gt; indicate an &lt;STRONG&gt;authenticatorGetAssertion&lt;/STRONG&gt; CTAP2 Operation. The encoded payload includes the RpId and ClientDataHash.&lt;/P&gt;
&lt;P&gt;If the &lt;STRONG&gt;Response&lt;/STRONG&gt; begins with &lt;STRONG&gt;0x00 &lt;/STRONG&gt;it was successful. Included in the CBOR payload is the &lt;STRONG&gt;id&lt;/STRONG&gt; (Credential ID) and the rpIdHash&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-align-right"&gt;&lt;A href="#community--1-ToC" target="_blank" rel="noopener" data-lia-auto-title="Top👆" data-lia-auto-title-active="0"&gt;Top👆&lt;/A&gt;&lt;/P&gt;
&lt;H2 id="mcetoc_1jlkjdlpu_14" class="lia-linked-item"&gt;&lt;a id="community--1-Responseprocessing" class="lia-anchor"&gt;&lt;/a&gt;Response processing&lt;/H2&gt;
&lt;P&gt;The &lt;STRONG&gt;Ctap GetAssertion completed&lt;/STRONG&gt; event (Event ID 2102) tells us that the authenticator successfully completed a GetAssertion operation and returned a valid signed assertion to Windows.&lt;/P&gt;
&lt;P&gt;Included in the response payload are security key device information, status of the operation (6673746174757300 stands for status = 0), the credential used and authenticator data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;The &lt;STRONG&gt;Cbor decode GetAssertion response&lt;/STRONG&gt; event (Event ID 1104) is logged when the authenticator successfully returns a WebAuthN assertion for the relying party using a particular credential.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;This is one of the best events to track successful authentication because the important fields are already parsed out.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The &lt;STRONG&gt;RpIdHash&lt;/STRONG&gt; of 356C9ED4A09321B9695F1EAF918203F1B55F689DA61FBC96184C157DDA680C81 is the SHA-256 hash of “login.microsoft.com”&lt;/LI&gt;
&lt;LI&gt;A &lt;STRONG&gt;Flags&lt;/STRONG&gt; value of 0x85 means 0x80 + 0x04 + 0x01
&lt;UL&gt;
&lt;LI&gt;0x01: UP (the user was present and interacted with the key)&lt;/LI&gt;
&lt;LI&gt;0x04: UV (user verification succeeded, which in this scenario means PIN was successfully validated)&lt;/LI&gt;
&lt;LI&gt;0x80: ED (extension data was included in the assertion)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;The&amp;nbsp;&lt;STRONG&gt;CredentialId&lt;/STRONG&gt; of EDE6F30E65534AB78BB0992B8E6D6634 when Base64 encoded, will match the key identifier in Entra.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-background-color-2" border="1" style="width: 100%; border-width: 1px;"&gt;&lt;colgroup&gt;&lt;col style="width: 99.9074%" /&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Therefore, &lt;STRONG&gt;Cbor decode GetAssertion response&lt;/STRONG&gt; events (Event ID 1104) will tell you which users successfully authenticated to the Windows device using a FIDO2 security key.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Finally, the &lt;STRONG&gt;WebAuthN Ctap GetAssertion completed&lt;/STRONG&gt; event (Event ID 1004) tells us that WebAuthN GetAssertion operation completed successfully for this TransactionId.&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-align-right"&gt;&lt;A href="#community--1-ToC" target="_blank" rel="noopener" data-lia-auto-title="Top👆" data-lia-auto-title-active="0"&gt;Top👆&lt;/A&gt;&lt;/P&gt;
&lt;H1 id="mcetoc_1jlkjdlpu_15" class="lia-linked-item"&gt;&lt;a id="community--1-Tyingitalltogether" class="lia-anchor"&gt;&lt;/a&gt;Tying it all together&lt;/H1&gt;
&lt;P&gt;I started out by outlining what my customer’s monitoring goals were; the table below summarizes the events recommended for monitoring:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;What to Monitor&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Event&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Notes&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Each use of a FIDO2 security key on a Windows client device.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Cbor encode GetAssertion request &lt;/STRONG&gt;(Event ID 1103)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Filter for events where:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Request&lt;/STRONG&gt; begins with &lt;STRONG&gt;0x02&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG style="background-color: rgba(0, 0, 0, 0); color: rgb(30, 30, 30);"&gt;AllowCredentialCount&lt;/STRONG&gt;&lt;SPAN style="background-color: rgba(0, 0, 0, 0); color: rgb(30, 30, 30);"&gt; is greater than zero.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Parse&amp;nbsp;&lt;STRONG&gt;Request&lt;/STRONG&gt; for credential Id.&lt;/P&gt;
&lt;P&gt;Base64 encode credential Id to match key identifier and user in Entra ID.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;All attempts, both successful and unsuccessful, when a PIN was tried to unlock a credential on the FIDO2 security key on the device.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Ctap Usb Send Receive&lt;/STRONG&gt; (Event ID 2225)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Filter for events where &lt;STRONG&gt;Request&lt;/STRONG&gt; starts with &lt;STRONG&gt;0x06A401010205&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;The&amp;nbsp;&lt;STRONG&gt;Response&lt;/STRONG&gt; property indicates result.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Which user successfully authenticated to the Windows device using their FIDO2 security key.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Cbor decode GetAssertion response&lt;/STRONG&gt; (Event ID 1104)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Base64 encode credential Id to match key identifier and user in Entra ID.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The techniques outlined in this document show how to identify individual FIDO2 credentials, track PIN verification attempts, and conclusively determine which user authenticated to a Windows device using a security key. With this approach, passwordless authentication becomes not only more secure, but also more observable and supportable in enterprise environments.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 09 Apr 2026 11:10:08 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/auditing-fido2-authentication-for-windows-sign-in/ba-p/4509702</guid>
      <dc:creator>LijuV</dc:creator>
      <dc:date>2026-04-09T11:10:08Z</dc:date>
    </item>
    <item>
      <title>Azure Database Security Newsletter - April 2026</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/azure-database-security-newsletter-april-2026/ba-p/4507226</link>
      <description>&lt;P&gt;Welcome to the quarterly edition of Azure Database Platform Security Newsletter. In this newsletter we highlight the importance of strong encryption for data security, and call out recent encryption, key management, and auditing enhancements designed to help you strengthen your security posture while simplifying operational management.&lt;/P&gt;
&lt;P&gt;Data is one of the most critical assets organizations manage, and protecting it is essential to maintaining trust, resilience, and long‑term success. As cyber threats continue to evolve and regulatory expectations increase, strong encryption has become a foundational requirement rather than an optional safeguard.&lt;/P&gt;
&lt;P&gt;Encryption protects sensitive data across its entire lifecycle. Data is encrypted at rest using Transparent Data Encryption (TDE) to protect stored information, in transit using Transport Layer Security (TLS) to secure data as it moves across your application and server, and in use through Always Encrypted to help ensure data remains protected even from high-privileged users. Together, these capabilities reduce risk and support compliance obligations.&lt;/P&gt;
&lt;H1&gt;Feature highlights 💡&lt;/H1&gt;
&lt;H2&gt;Customer-Managed Keys in Fabric SQL Database&lt;/H2&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://blog.fabric.microsoft.com/en-us/blog/customer-managed-keys-cmk-in-fabric-sql-database-generally-available?ft=All" target="_blank" rel="noopener"&gt;Customer-Managed Keys (CMK) are now generally available for Fabric SQL Database&lt;/A&gt;, allowing you to use Azure Key Vault keys to encrypt all workspace data, including all SQL Database data. This feature gives organizations greater control over key management and helps meet data governance and encryption requirements. More information on &lt;A class="lia-external-url" href="https://www.youtube.com/watch?v=1ffSH5g1t-Y" target="_blank" rel="noopener"&gt;How to encrypt Fabric SQL Database with Customer Managed Keys (Video)&lt;/A&gt;.&lt;/P&gt;
&lt;H2&gt;Versionless keys for Transparent Data Encryption in Azure SQL Database&lt;/H2&gt;
&lt;P&gt;Azure SQL Database now lets you use &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/azuresqlblog/versionless-keys-for-transparent-data-encryption-in-azure-sql-database-generally/4502969" target="_blank" rel="noopener" data-lia-auto-title="versionless key URIs for Transparent Data Encryption (TDE)" data-lia-auto-title-active="0"&gt;versionless key URIs for Transparent Data Encryption (TDE)&lt;/A&gt; with customer-managed keys, automatically applying the latest enabled key from Azure Key Vault or Managed HSM. This update simplifies encryption management.&lt;/P&gt;
&lt;H2&gt;Auditing in Fabric SQL Database&lt;/H2&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/fabric/database/sql/auditing" target="_blank"&gt;Auditing for Fabric SQL Database&lt;/A&gt; is now generally available. Organizations can track and log database activities, addressing questions about data access for compliance, threat detection, and forensic analysis. Audit logs are stored in One Lake, and access is controlled by Fabric workspace roles and SQL permissions.&lt;/P&gt;
&lt;H1&gt;Best Practices Corner&amp;nbsp;&lt;/H1&gt;
&lt;H5&gt;Retain all historical TDE keys and key versions&lt;/H5&gt;
&lt;P&gt;Always keep all historical Transparent Data Encryption (TDE) keys and their versions. Databases and backups remain encrypted with the key version that was active at the time of encryption. Restoring an older database requires access to the exact key version used. Deleting older keys or versions can make database restore impossible and result in permanent data loss. See &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/azuresqlblog/everything-you-need-to-know-about-tde-key-management-for-database-restore/4416564" target="_blank" rel="noopener" data-lia-auto-title="Everything you need to know about TDE key management for database restore" data-lia-auto-title-active="0"&gt;Everything you need to know about TDE key management for database restore&lt;/A&gt;.&lt;/P&gt;
&lt;H5&gt;Apply the Principle of Least Privilege&lt;/H5&gt;
&lt;P&gt;Always grant users, applications, and services the minimum level of access required to perform their database tasks. Avoid broad administrative or owner-level permissions unless absolutely necessary. Regularly review, restrict, and remove excessive or unused privileges to reduce the attack surface and limit the impact of compromised credentials or configuration errors. This control aligns with established security standards such as &lt;A class="lia-external-url" href="https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final" target="_blank" rel="noopener"&gt;NIST SP 800‑53 (AC‑6: Least Privilege)&lt;/A&gt;, &lt;A class="lia-external-url" href="https://www.cisecurity.org/controls/access-control-management" target="_blank" rel="noopener"&gt;CIS Critical Security Controls&lt;/A&gt;, &lt;A class="lia-external-url" href="https://www.iso.org/standard/75652.html" target="_blank" rel="noopener"&gt;ISO/IEC 27002&lt;/A&gt;, and &lt;A class="lia-external-url" href="https://cheatsheetseries.owasp.org/cheatsheets/Database_Security_Cheat_Sheet.html" target="_blank" rel="noopener"&gt;OWASP database security guidance&lt;/A&gt;.&lt;/P&gt;
&lt;H5&gt;Enable Auditing on Azure SQL and SQL Server&lt;/H5&gt;
&lt;P&gt;Always enable auditing on Azure SQL to record database activities for security monitoring, compliance, and forensic investigation. Auditing provides visibility into database access and changes, helping detect unauthorized or suspicious behavior and supporting incident response and regulatory requirements. See &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/azure-sql/database/auditing-overview?view=azuresql" target="_blank" rel="noopener"&gt;Auditing - Azure SQL Database&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;Blogs and Video Spotlight 🅱️&lt;/H1&gt;
&lt;P&gt;In the last three months, we've published blog posts on major releases and features. These updates offer practical insights and highlight the latest in data security and database management.&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/azuresqlblog/why-ledger-verification-is-non-negotiable/4485290" target="_blank" rel="noopener" data-lia-auto-title="Why ledger verification is non-negotiable" data-lia-auto-title-active="0"&gt;Why ledger verification is non-negotiable&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://devblogs.microsoft.com/cosmosdb/how-to-enable-microsoft-entra-id-for-azure-cosmos-db-nosql/" target="_blank" rel="noopener"&gt;How to Enable Microsoft Entra ID for Azure Cosmos DB (NoSQL)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/azuresqlblog/why-developers-and-dbas-love-sql%E2%80%99s-dynamic-data-masking-series-part-1/4498450" target="_blank" rel="noopener" data-lia-auto-title="Why Developers and DBAs love SQL’s Dynamic Data Masking (Series-Part 1)" data-lia-auto-title-active="0"&gt;Why Developers and DBAs love SQL’s Dynamic Data Masking (Series-Part 1)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/sqlserver/announcing-preview-of-bulkadmin-role-support-for-sql-server-on-linux/4503676" target="_blank" rel="noopener" data-lia-auto-title="Announcing Preview of bulkadmin role support for SQL Server on Linux" data-lia-auto-title-active="0"&gt;Announcing Preview of bulkadmin role support for SQL Server on Linux&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/azuresqlblog/zero-trust-for-data-make-microsoft-entra-authentication-for-sql-your-policy-base/4506679" target="_blank" rel="noopener" data-lia-auto-title="Zero Trust for data: Make Microsoft Entra authentication for SQL your policy baseline" data-lia-auto-title-active="0"&gt;Zero Trust for data: Make Microsoft Entra authentication for SQL your policy baseline&lt;/A&gt;&lt;/P&gt;
&lt;H1&gt;Community &amp;amp; Events 👥&lt;/H1&gt;
&lt;P&gt;The data platform security team will be on-site at several upcoming events. Come and say hi!&lt;/P&gt;
&lt;H5&gt;Previous events&lt;/H5&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://sqlkonferenz.de/" target="_blank" rel="noopener"&gt;SQL Konferenz&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://fabriccon.com/" target="_blank" rel="noopener"&gt;FABCON 26 - Microsoft Fabric Community Conference - FABCON&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://sqlcon.us/" target="_blank" rel="noopener"&gt;SQLCON - Microsoft SQL Community Conference - SQLCON&lt;/A&gt;&lt;/P&gt;
&lt;H5&gt;Upcoming events&lt;/H5&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://sqlbits.com/" target="_blank" rel="noopener"&gt;SQLBits&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://datagrillen.com/" target="_blank" rel="noopener"&gt;DataGrillen&lt;/A&gt;&lt;/P&gt;
&lt;H1&gt;Call to action 📢&lt;/H1&gt;
&lt;P&gt;Take 15 minutes this week to validate your database encryption posture: confirm TDE is enabled, review your key management plan (including retaining historical key versions), and ensure TLS is enforced for all connections. If you are using Fabric SQL Database, consider enabling Customer-Managed Keys and turning on Auditing to strengthen governance and investigation readiness. Share this newsletter with your security and DBA partners and align on one concrete improvement you can complete.&lt;/P&gt;</description>
      <pubDate>Wed, 01 Apr 2026 08:08:13 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/azure-database-security-newsletter-april-2026/ba-p/4507226</guid>
      <dc:creator>PieterVanhove</dc:creator>
      <dc:date>2026-04-01T08:08:13Z</dc:date>
    </item>
    <item>
      <title>Check This Out! (CTO!) Guide (March 2026)</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/check-this-out-cto-guide-march-2026/ba-p/4506999</link>
      <description>&lt;P&gt;&lt;A href="https://techcommunity.microsoft.com/users/tysonpaul/322025" data-lia-auto-title="Member: TysonPaul | Microsoft Community Hub" data-lia-auto-title-active="0" target="_blank"&gt;Member: TysonPaul | Microsoft Community Hub&lt;/A&gt;&lt;/P&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/itopstalkblog/automating-large%E2%80%91scale-data-management-with-azure-storage-actions/4496766" target="_blank" rel="noopener noreferrer"&gt;Automating Large‑Scale Data Management with Azure Storage Actions&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/itopstalk/blog/itopstalkblog" target="_blank" rel="noopener noreferrer"&gt;ITOps Talk&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/1nataraj/1439120" target="_blank" rel="noopener noreferrer"&gt;1Nataraj&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/25/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Storage Actions is a fully managed, serverless automation platform that simplifies large-scale data management in Azure Blob and Data Lake Storage. It enables users to automate tasks such as tagging, tiering, deletion, and applying immutability based on customizable conditions—without custom code or infrastructure. Administrators can centrally define tasks and assign them across multiple storage accounts, with built-in preview, monitoring, and audit features. Use cases include compliance, cost optimization, and metadata management, making it ideal for organizations managing millions of items across vast storage estates. Azure Storage Actions is available in over 40 Azure regions.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/itopstalkblog/migration-modernization--agentic-tools/4497193" target="_blank" rel="noopener noreferrer"&gt;Migration, Modernization &amp;amp; Agentic Tools&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/itopstalk/blog/itopstalkblog" target="_blank" rel="noopener noreferrer"&gt;ITOps Talk&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/orinthomas/251291" target="_blank" rel="noopener noreferrer"&gt;OrinThomas&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/25/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article discusses how agentic tools, such as those in Azure Copilot and GitHub Copilot, transform cloud migration and modernization from one-time projects into ongoing, autonomous systems. These tools dynamically discover environments, recommend modernization paths, automate migration steps, and continuously optimize workloads for cost, performance, security, and compliance. By embedding governance and leveraging real-time telemetry, agentic tools reduce manual effort, minimize errors, and ensure migrations are efficient, secure, and aligned with enterprise standards, providing continuous improvement post-migration.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/what%E2%80%99s-new-in-finops-toolkit-13-%E2%80%93-january-2026/4493090" target="_blank" rel="noopener noreferrer"&gt;What’s new in FinOps toolkit 13 – January 2026&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/finopsblog" target="_blank" rel="noopener noreferrer"&gt;FinOps&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/michael_flanakin/3099145" target="_blank" rel="noopener noreferrer"&gt;Michael_Flanakin&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/09/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The January 2026 update to the FinOps toolkit focuses on stability, usability, and community engagement. Key enhancements include improved documentation, new features like configurable Key Vault purge protection, and expanded support for Parquet format and compression in Cost Management exports via PowerShell. Security, reliability, and extensibility have been strengthened for FinOps hubs, with numerous bug fixes across Power BI reports, workbooks, and the Azure Optimization Engine. The release highlights ongoing community involvement, upcoming features like AI automation, and premium services to help organizations deploy and scale the toolkit effectively.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/managed-identity-on-sql-server-on-prem-the-end-of-stored-secrets/4496450" target="_blank" rel="noopener noreferrer"&gt;Managed Identity on SQL Server On-Prem: The End of Stored Secrets&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/cis/blog/coreinfrastructureandsecurityblog" target="_blank" rel="noopener noreferrer"&gt;Core Infrastructure and Security&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/ryadb/193779" target="_blank" rel="noopener noreferrer"&gt;RyadB&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/23/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; **Summary:** The article explains how SQL Server 2025 on-premises, when connected to Azure Arc, can use Managed Identity to access Azure resources without storing secrets like SAS tokens or keys. This approach eliminates risks of secret storage, rotation, and auditing complexity by leveraging Microsoft Entra ID for identity management and RBAC for permissions. The article details configuration steps, migration from stored credentials, troubleshooting, and current limitations, highlighting improved security and simplified management for on-prem SQL Server accessing Azure services.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/running-text-to-image-and-text-to-video-with-comfyui-and-nvidia-h100-gpu/4497978" target="_blank" rel="noopener noreferrer"&gt;Running Text to Image and Text to Video with ComfyUI and Nvidia H100 GPU&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/cis/blog/coreinfrastructureandsecurityblog" target="_blank" rel="noopener noreferrer"&gt;Core Infrastructure and Security&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/houssemdellai/632520" target="_blank" rel="noopener noreferrer"&gt;HoussemDellai&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/27/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; This article provides a step-by-step guide for setting up and running ComfyUI, a node-based interface for AI-powered text-to-image and text-to-video generation, on Azure VMs with Nvidia H100 GPUs. It details both automated (Terraform) and manual setup methods, including installing drivers, dependencies, and downloading required models. The guide explains accessing ComfyUI’s web portal, workflow configuration, and model management to create high-quality images and videos efficiently. It also includes important notes about GPU driver compatibility and offers links to official documentation and scripts for further reference.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurenetworkingblog/unlock-outbound-traffic-insights-with-azure-standardv2-nat-gateway-flow-logs/4493138" target="_blank" rel="noopener noreferrer"&gt;Unlock outbound traffic insights with Azure StandardV2 NAT Gateway flow logs&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurenetworkingblog" target="_blank" rel="noopener noreferrer"&gt;Azure Networking&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/cozhang/2733179" target="_blank" rel="noopener noreferrer"&gt;cozhang&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/06/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article introduces Azure’s StandardV2 NAT Gateway, highlighting its new features such as zone-redundancy, enhanced performance, dual-stack support, and, notably, flow logs. Flow logs provide detailed visibility into outbound traffic, enabling security auditing, compliance, usage analytics, and troubleshooting. The article explains how to enable and use flow logs to diagnose connectivity issues and optimize network architecture. It emphasizes the importance of flow logs for monitoring established outbound connections and offers troubleshooting steps for connection drops, recommending best practices for resilient Azure deployments.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurehighperformancecomputingblog/centralized-cluster-performance-metrics-with-reframe-hpc-and-azure-log-analytics/4488077" target="_blank" rel="noopener noreferrer"&gt;Centralized cluster performance metrics with ReFrame HPC and Azure Log Analytics&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurehighperformancecomputingblog" target="_blank" rel="noopener noreferrer"&gt;Azure High Performance Computing (HPC)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/jimpaine/335139" target="_blank" rel="noopener noreferrer"&gt;jimpaine&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/06/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article outlines how to integrate ReFrame HPC, a flexible high-performance computing testing framework, with Azure Log Analytics for centralized performance monitoring across diverse clusters and environments. It details deploying necessary Azure resources, configuring ReFrame for HTTP logging, and running performance tests with results sent to Log Analytics. This integration enables unified, standardized metrics collection, cross-cluster comparisons, trend analysis, and improved system visibility—supporting migration, development, and operational assurance in heterogeneous HPC environments.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurehighperformancecomputingblog/azure-recognized-as-an-nvidia-cloud-exemplar-setting-the-bar-for-ai-performance-/4495747" target="_blank" rel="noopener noreferrer"&gt;Azure Recognized as an NVIDIA Cloud Exemplar, Setting the Bar for AI Performance in the Cloud&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurehighperformancecomputingblog" target="_blank" rel="noopener noreferrer"&gt;Azure High Performance Computing (HPC)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/fernando_aznar/2446399" target="_blank" rel="noopener noreferrer"&gt;Fernando_Aznar&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/18/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft Azure has been recognized as the first NVIDIA Exemplar Cloud for its world-class, end-to-end AI workload performance, now validated for both H100 and next-generation GB300 (Blackwell) systems. This designation reflects Azure’s optimized full-stack infrastructure—including compute, networking, and software integration—delivering predictable, efficient, and scalable AI training at production scale. Customers benefit from faster time-to-train, improved ROI, and confidence in Azure’s readiness for advanced AI workloads, ensuring consistent high performance from proof-of-concept to deployment without sacrificing cloud flexibility or manageability.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurearchitectureblog/reference-architecture-for-highly-available-multi-region-azure-kubernetes-servic/4490479" target="_blank" rel="noopener noreferrer"&gt;Reference Architecture for Highly Available Multi-Region Azure Kubernetes Service (AKS)&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurearchitectureblog" target="_blank" rel="noopener noreferrer"&gt;Azure Architecture&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/rgarofalo/3339583" target="_blank" rel="noopener noreferrer"&gt;rgarofalo&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/03/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article presents a reference architecture for highly available, multi-region Azure Kubernetes Service (AKS) deployments. It compares active/active, active/passive, and deployment stamp models, detailing their trade-offs in availability, complexity, and cost. Key components include Azure Front Door for global traffic routing, geo-replicated data services, centralized monitoring, and consistent security controls. The architecture emphasizes resilience through fault isolation, automated recovery, and regular testing. It offers practical guidance for cloud architects to design AKS platforms that withstand regional outages, ensuring business continuity and scalable operations across Azure regions.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurearchitectureblog/reactive-incident-response-with-azure-sre-agent-from-alert-to-resolution-in-minu/4492938" target="_blank" rel="noopener noreferrer"&gt;Reactive Incident Response with Azure SRE Agent: From Alert to Resolution in Minutes&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurearchitectureblog" target="_blank" rel="noopener noreferrer"&gt;Azure Architecture&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/sabyasachi-samaddar/1126636" target="_blank" rel="noopener noreferrer"&gt;Sabyasachi-Samaddar&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/18/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; **Summary:** The article details how Azure SRE Agent revolutionizes incident response by automating investigation and triage as soon as an alert fires, reducing resolution times from hours to minutes. Through two real-world scenarios—a SQL connectivity outage and a VM CPU spike—the agent autonomously diagnosed issues, proposed remediations, and required minimal human intervention. Custom Incident Response Plans and instructions enable context-aware, consistent, and rapid resolutions, with automated post-incident documentation. Key benefits include faster MTTR, reduced manual toil, and improved knowledge capture, though some technical challenges remain. Azure SRE Agent is currently in preview.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/askds/cross-forest-enrollment-%E2%80%93-pkisync-ps1/4463954" target="_blank" rel="noopener noreferrer"&gt;Cross Forest Enrollment – PKISync.PS1&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/windows-server/blog/askds" target="_blank" rel="noopener noreferrer"&gt;Ask the Directory Services Team&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/manuel_alvarez_v/1972690" target="_blank" rel="noopener noreferrer"&gt;Manuel_Alvarez_V&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/19/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article explains how to use the PKISync.ps1 PowerShell script for cross-forest certificate enrollment in Active Directory environments. PKISync synchronizes PKI-related objects, such as certificate templates and CA configurations, from a source forest to a target forest, enabling certificate requests across forests. It details the setup requirements, including two-way forest trusts, LDAP referral configuration, and certificate publishing. Although PKISync is considered legacy, automating its use can facilitate simple cross-forest enrollment, but CEP/CES is recommended for modern, secure deployments. The article concludes with best practices and automation tips for PKISync.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/askds/what%E2%80%99s-new-in-windows-group-policy-preferences-debug-logging/4497060" target="_blank" rel="noopener noreferrer"&gt;What’s New in Windows Group Policy Preferences Debug Logging&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/windows-server/blog/askds" target="_blank" rel="noopener noreferrer"&gt;Ask the Directory Services Team&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/tagoren/1668477" target="_blank" rel="noopener noreferrer"&gt;TagoreN&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/27/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article outlines a new feature in Windows 11 24H2 and 25H2 (from February 2026 preview updates) that allows administrators to enable Group Policy Preferences (GPP) debug logging directly through Local Group Policy, not just domain-based GPOs. This simplifies troubleshooting by allowing detailed logging on client devices without domain reliance. The article explains how to configure logging, manage trace file locations, and set necessary permissions. Overall, this update enhances flexibility and efficiency for IT professionals managing and debugging GPP issues on Windows client devices.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurestorageblog/public-preview-restrict-usage-of-user-delegation-sas-to-an-entra-id-identity/4497196" target="_blank" rel="noopener noreferrer"&gt;Public Preview: Restrict usage of user delegation SAS to an Entra ID identity&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurestorageblog" target="_blank" rel="noopener noreferrer"&gt;Azure Storage&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/ellievail/3335667" target="_blank" rel="noopener noreferrer"&gt;ellievail&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/26/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has announced the public preview of user-bound user delegation SAS for Azure Storage, enhancing security by restricting SAS token usage to a specific Microsoft Entra ID identity. This feature extends user delegation SAS, requiring the end user to authenticate with Entra ID to access storage resources. It supports cross-tenant scenarios and incurs no additional cost beyond standard storage transactions. User-bound SAS is available via REST APIs, SDKs, PowerShell, and CLI for all GPv2 storage accounts in public regions, with detailed steps provided for setup and role assignment.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurestorageblog/azure-migrate-now-supporting-premium-ssd-v2-ultra-and-zrs-disks-as-targets/4495332" target="_blank" rel="noopener noreferrer"&gt;Azure Migrate: Now Supporting Premium SSD V2, Ultra and ZRS Disks as Targets&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurestorageblog" target="_blank" rel="noopener noreferrer"&gt;Azure Storage&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/lakshya_jalan/3335140" target="_blank" rel="noopener noreferrer"&gt;Lakshya_Jalan&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/18/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Migrate now supports Premium SSD v2, Ultra Disk, and ZRS Disks as migration targets, with Premium SSD v2 and ZRS generally available and Ultra Disk in public preview. This update enhances assessment and migration by enabling tailored recommendations based on workload performance needs, offering greater flexibility, performance, and resiliency. Users can now migrate demanding, mission-critical workloads to Azure using these advanced disk options, benefiting from features like zonal redundancy and customizable performance. The enhancements streamline migrations and ensure optimal resource alignment, supporting petabytes of data already migrated during the preview phase.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurecompute/public-preview-automatic-zone-balance-for-virtual-machine-scale-sets/4494476" target="_blank" rel="noopener noreferrer"&gt;Public Preview: Automatic zone balance for Virtual Machine Scale Sets&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurecompute" target="_blank" rel="noopener noreferrer"&gt;Azure Compute&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/hilarywang/1637159" target="_blank" rel="noopener noreferrer"&gt;HilaryWang&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/17/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure has introduced the public preview of automatic zone balance for Virtual Machine Scale Sets, which automatically monitors and redistributes VM instances across availability zones to maintain optimal resiliency. This feature addresses imbalances that can occur over time, minimizing the impact of zone failures without manual intervention. The system uses health checks, respects instance protection policies, and ensures workload capacity during rebalancing. Automatic instance repair is also enabled by default. Users can join the preview by enabling the feature and meeting specific prerequisites. This capability reduces operational overhead while enhancing workload reliability and zone-level resilience.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurecompute/azure-automated-virtual-machine-recovery-minimizing-downtime/4483166" target="_blank" rel="noopener noreferrer"&gt;Azure Automated Virtual Machine Recovery: Minimizing Downtime&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurecompute" target="_blank" rel="noopener noreferrer"&gt;Azure Compute&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/jon_andoni_baranda/3305512" target="_blank" rel="noopener noreferrer"&gt;Jon_Andoni_Baranda&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/04/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Automated Virtual Machine Recovery is a built-in Azure feature that minimizes VM downtime through fast, intelligent, and automated recovery processes. Without requiring customer setup, it continuously monitors VM health, rapidly detects failures, diagnoses issues, and applies the optimal recovery action, all without customer intervention. Leveraging detailed recovery event annotations, it provides deep visibility into incident timelines and helps optimize recovery strategies. Over the past 18 months, this system has halved average VM downtime, strengthening business continuity, reducing financial impact, and reinforcing customer trust in Azure’s reliable cloud platform.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/intunecustomersuccess/support-tip-resolve-device-noncompliance-with-mobile-threat-defense-partner-apps/4491669" target="_blank" rel="noopener noreferrer"&gt;Support tip: Resolve device noncompliance with Mobile Threat Defense partner apps&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/microsoftintune/blog/intunecustomersuccess" target="_blank" rel="noopener noreferrer"&gt;Intune Customer Success&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/intune_support_team/226779" target="_blank" rel="noopener noreferrer"&gt;Intune_Support_Team&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/02/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; This article provides guidance for resolving device noncompliance issues when using Mobile Threat Defense (MTD) partner apps, like Microsoft Defender for Endpoint, with Microsoft Intune. It outlines troubleshooting steps for users to restore compliance—installing, activating, refreshing, or reinstalling the MTD app—and checking compliance status. It also details simplified remediation workflows for iOS/iPadOS and methods for resetting the MTD connection on Android if sign-out is blocked, helping users regain access to work or school resources and reducing support overhead.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/intunecustomersuccess/how-to-enable-https-support-for-microsoft-connected-cache-for-enterprise-and-edu/4496173" target="_blank" rel="noopener noreferrer"&gt;How to enable HTTPS support for Microsoft Connected Cache for Enterprise and Education&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/microsoftintune/blog/intunecustomersuccess" target="_blank" rel="noopener noreferrer"&gt;Intune Customer Success&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/intune_support_team/226779" target="_blank" rel="noopener noreferrer"&gt;Intune_Support_Team&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/20/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Starting June 16, 2026, Intune will require HTTPS for Microsoft Connected Cache when delivering Win32 apps. To maintain caching benefits and reduce bandwidth, administrators must configure HTTPS on Connected Cache nodes using a CA-signed TLS certificate. The guide details generating a CSR on the node, signing and importing the certificate, and validating HTTPS on both Windows and Linux hosts. It also covers troubleshooting, maintenance, and renewal. Without HTTPS, devices will revert to using the CDN for Intune app downloads. Other content types remain unaffected. Early configuration ensures seamless transition and continued performance benefits.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/fasttrackblog/the-copilot-resource-guide-to-share-with-your-employees/4495989" target="_blank" rel="noopener noreferrer"&gt;The Copilot resource guide to share with your employees&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/fasttrack/blog/fasttrackblog" target="_blank" rel="noopener noreferrer"&gt;FastTrack&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/juliehersum/2538158" target="_blank" rel="noopener noreferrer"&gt;JulieHersum&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/19/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article introduces the "Essential Copilot resource hubs for employees," a centralized guide designed to streamline Microsoft Copilot onboarding and support. It helps adoption leaders structure learning paths, IT admins share resources efficiently, and all employees access consistent guidance. The guide consolidates key Microsoft Copilot resources, making it easier for organizations to accelerate adoption and customize internal policies. Additional support is available through FastTrack and the Microsoft 365 Accelerator site, offering expert guidance, templates, and personalized assistance to boost Copilot deployment and change management efforts.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/fasttrackblog/copilot-adoption-move-your-org-from-pilot-to-production-with-this-guide/4495997" target="_blank" rel="noopener noreferrer"&gt;Copilot adoption: Move your org from pilot to production with this guide&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/fasttrack/blog/fasttrackblog" target="_blank" rel="noopener noreferrer"&gt;FastTrack&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/juliehersum/2538158" target="_blank" rel="noopener noreferrer"&gt;JulieHersum&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/19/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article introduces a comprehensive guide for IT admins and Copilot adoption leads to streamline the rollout of Microsoft 365 Copilot. Organized around the adoption lifecycle (plan, build, operate), the guide highlights eight essential resource hubs, practical rollout steps, and audience-specific resources to ensure effective, governed adoption. It also promotes Microsoft FastTrack, which offers expert support, self-service resources, and personalized assistance to accelerate and scale Copilot deployment at no extra cost.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurevirtualdesktopblog/azure-virtual-desktop-is-now-available-in-us-gov-texas-in-azure-government/4485723" target="_blank" rel="noopener noreferrer"&gt;Azure Virtual Desktop is now available in US Gov Texas in Azure Government&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurevirtualdesktopblog" target="_blank" rel="noopener noreferrer"&gt;Azure Virtual Desktop&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/ron_coleman/180890" target="_blank" rel="noopener noreferrer"&gt;Ron_Coleman&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/04/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Virtual Desktop is now available in the USGov Texas region of Azure Government, offering customers a new option for deploying secure and flexible virtual desktop environments. This expansion enables improved connection performance, reduced latency, and enhanced responsiveness by allowing host pool creation directly in the region. It supports mission needs, geographic distribution, and regulatory requirements, while maintaining Azure Government’s compliance and security standards. Customers can now leverage multiple regions for greater flexibility and performance in their virtual desktop deployments.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurevirtualdesktopblog/rdp-shortpath-udp-over-private-link-is-now-generally-available/4494644" target="_blank" rel="noopener noreferrer"&gt;RDP Shortpath (UDP) over Private Link is now generally available&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurevirtualdesktopblog" target="_blank" rel="noopener noreferrer"&gt;Azure Virtual Desktop&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/rinku_dalwani/1321337" target="_blank" rel="noopener noreferrer"&gt;Rinku_Dalwani&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/17/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Virtual Desktop now supports UDP-based RDP Shortpath over Private Link, enabling direct, high-performance RDP connections between session hosts and clients using private IPs. This complements existing TCP connectivity, helping customers with strict private network boundaries. Administrators must explicitly enable UDP in Azure portal settings to use this feature. The opt-in model ensures secure and predictable transport, giving full control over UDP introduction. This enhancement is recommended for customers needing precise routing and policy enforcement in regulated environments, while standard AVD connectivity remains suitable for most deployments. Full configuration guidance is available in Azure documentation.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azuremigrationblog/migrating-workloads-from-aws-to-azure-a-structured-approach-for-cloud-architects/4495227" target="_blank" rel="noopener noreferrer"&gt;Migrating Workloads from AWS to Azure: A Structured Approach for Cloud Architects&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azuremigrationblog" target="_blank" rel="noopener noreferrer"&gt;Azure Migration and Modernization&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/rhack/2854208" target="_blank" rel="noopener noreferrer"&gt;rhack&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/18/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article outlines a structured, five-phase approach for migrating workloads from AWS to Azure, emphasizing a like-for-like architecture to minimize risk and maintain operational stability. Key phases include planning, preparation, execution, evaluation, and decommissioning, each requiring thorough documentation, stakeholder alignment, testing, and validation. The recommended migration strategy is blue/green deployment for risk mitigation. The workload team should lead the migration, supported by external Azure experts. Success depends on careful planning, phased execution, and post-migration optimization, with organizational knowledge-sharing encouraged for future improvements.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azuremigrationblog/modernizing-for-the-ai-era-accelerating-application-transformation-with-agentic-/4490596" target="_blank" rel="noopener noreferrer"&gt;Modernizing for the AI Era: Accelerating Application Transformation with Agentic Tools&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azuremigrationblog" target="_blank" rel="noopener noreferrer"&gt;Azure Migration and Modernization&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/marcob/2856803" target="_blank" rel="noopener noreferrer"&gt;MarcoB&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/12/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article highlights the urgent need for organizations to modernize legacy applications to thrive in the AI era. Legacy systems drain resources and hinder innovation, but new agentic tools—such as GitHub Copilot, Azure Migrate, and Azure Copilot—use AI to automate and accelerate application transformation. These tools reduce manual effort, boost accuracy and safety, and make modernization accessible, empowering teams to focus on innovation. The result is faster, safer, and more consistent modernization, enabling organizations to continuously evolve their applications for intelligent, cloud-optimized environments. Practical steps and resources are provided to guide organizations in getting started.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/networkingblog/secure-dns-with-doh-public-preview-for-windows-dns-server/4493935" target="_blank" rel="noopener noreferrer"&gt;Secure DNS with DoH: Public Preview for Windows DNS Server&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/windows-server/blog/networkingblog" target="_blank" rel="noopener noreferrer"&gt;Networking&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/jorgeca%C3%B1as/2838432" target="_blank" rel="noopener noreferrer"&gt;JorgeCañas&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/09/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has launched a public preview of DNS over HTTPS (DoH) for Windows DNS Server, enabling encrypted and authenticated DNS queries within on-premises networks. This upgrade enhances security and privacy by preventing DNS traffic from being exposed or intercepted, aligning with Zero Trust principles and U.S. federal requirements. The DoH feature, included in the February 2026 update for Windows Server 2025, is disabled by default and currently intended for evaluation only. Existing DNS functionality remains unchanged, with new tools added for DoH management. Feedback is encouraged to improve the feature before general availability.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurearcblog/announcing-public-preview-simplified-machine-provisioning-for-azure-local/4496811" target="_blank" rel="noopener noreferrer"&gt;Announcing Public Preview: Simplified Machine Provisioning for Azure Local&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurearcblog" target="_blank" rel="noopener noreferrer"&gt;Azure Arc&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/pragyadwivedi/1475983" target="_blank" rel="noopener noreferrer"&gt;PragyaDwivedi&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/26/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has announced the Public Preview of Simplified Machine Provisioning for Azure Local, streamlining edge infrastructure deployment. The new process centralizes configuration in Azure, requiring minimal on-site expertise—staff only need to rack, power on hardware, and insert a prepared USB. Secure provisioning uses industry standards like FIDO Device Onboarding and Azure Arc Site for consistent, automated deployments across multiple locations. IT teams manage and monitor provisioning remotely, reducing errors and speeding up setup. Once complete, machines are ready for cluster creation and workload deployment, significantly simplifying and scaling Azure Local deployments.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azuretoolsblog/azure-cli-windows-msi-upgrade-issue-root-cause-mitigation-and-performance-improv/4491691" target="_blank" rel="noopener noreferrer"&gt;Azure CLI Windows MSI Upgrade Issue: Root Cause, Mitigation, and Performance Improvements&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azuretoolsblog" target="_blank" rel="noopener noreferrer"&gt;Azure Tools&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/alex-wdy/1467559" target="_blank" rel="noopener noreferrer"&gt;Alex-wdy&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/03/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article discusses a critical issue affecting Azure CLI upgrades on Windows using the MSI installer, where users upgrading from version 2.76.0 (or earlier) to 2.77.0 (or later) encountered startup crashes due to missing Python extension files. The root cause was a versioning conflict during upgrade, leading to incomplete installations. The article details recovery steps, recommends upgrading to version 2.83.0, and highlights improvements to the MSI upgrade process, making installations faster and more reliable by simplifying file replacement logic and eliminating slow version checks. Users are encouraged to upgrade and report issues if encountered.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurenetworksecurityblog/navigating-the-2025-holiday-season-insights-into-azure%E2%80%99s-ddos-defense/4495741" target="_blank" rel="noopener noreferrer"&gt;Navigating the 2025 holiday season: Insights into Azure’s DDoS defense&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure-network-security/blog/azurenetworksecurityblog" target="_blank" rel="noopener noreferrer"&gt;Azure Network Security&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/jdasari/3369146" target="_blank" rel="noopener noreferrer"&gt;Jdasari&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/18/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; During the 2025 holiday season, Azure observed a rise in burst-style DDoS attacks, with high-intensity, short-lived surges targeting packet processing and connection-handling layers. Most attacks were automated and brief, but the cumulative impact was operationally draining, especially for latency-sensitive sectors like gaming. Botnet-driven attacks rapidly shifted targets, exploiting inconsistent defenses. Azure DDoS Protection mitigated over 174,000 attacks, underscoring the need for always-on, automated, and layered security. Organizations are urged to standardize protections, proactively monitor, and adopt Zero Trust and multi-layered defense strategies to ensure resilience against evolving threats in 2026.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurenetworksecurityblog/a-practical-guide-to-azure-ddos-protection-cost-optimization/4495199" target="_blank" rel="noopener noreferrer"&gt;A Practical Guide to Azure DDoS Protection Cost Optimization&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure-network-security/blog/azurenetworksecurityblog" target="_blank" rel="noopener noreferrer"&gt;Azure Network Security&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/saleembseeu/1203393" target="_blank" rel="noopener noreferrer"&gt;SaleemBseeu&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/18/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article provides strategies for optimizing Azure DDoS Protection costs. It explains the differences between DDoS Network Protection (best for large-scale, centralized management) and DDoS IP Protection (for few, specific endpoints). Key recommendations include consolidating protection plans to reduce base costs, selectively applying protection based on workload exposure, preventing unnecessary spend via regular reviews, and using cost management tools and tagging for visibility. The guide emphasizes aligning protection with actual risk and criticality, and offers scripts and checklists to support ongoing cost-efficient DDoS defense.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 30 Mar 2026 18:45:30 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/check-this-out-cto-guide-march-2026/ba-p/4506999</guid>
      <dc:creator>TysonPaul</dc:creator>
      <dc:date>2026-03-30T18:45:30Z</dc:date>
    </item>
    <item>
      <title>Implementing Intune RBAC and Scope Tags for Zero Trust and Least Privilege</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/implementing-intune-rbac-and-scope-tags-for-zero-trust-and-least/ba-p/4506889</link>
      <description>&lt;P&gt;If you’re rolling out Microsoft Intune at scale, the hardest part usually isn’t creating policies—it’s making sure the &lt;EM&gt;right&lt;/EM&gt; people can manage the &lt;EM&gt;right&lt;/EM&gt; things, without turning every admin account into a “keys to the kingdom” risk. In this guide, you’ll learn how to use Intune RBAC and Scope Tags to enforce least privilege, build clear management boundaries by region/agency/environment, and pair device compliance with Entra Conditional Access to strengthen a Zero Trust posture—plus a practical RACI approach so ownership stays clear as your environment grows.&lt;/P&gt;
&lt;H1&gt;TL;DR&lt;/H1&gt;
&lt;UL&gt;
&lt;LI&gt;Use Intune RBAC to align admin permissions to job responsibilities, reducing standing privilege and limiting who can change policies, apps, and security settings.&lt;/LI&gt;
&lt;LI&gt;Use Scope Tags to create visibility/management boundaries (region, agency, environment) so admins only see and manage what they own.&lt;/LI&gt;
&lt;LI&gt;Pair Intune compliance + Entra Conditional Access to enforce “access only from compliant devices / protected apps,” which supports a Zero Trust posture.&lt;/LI&gt;
&lt;LI&gt;Establish a RACI model so ownership is explicit across Endpoint, Identity, Security, Apps, AD, Help Desk, and Compliance teams.&lt;/LI&gt;
&lt;LI&gt;Track outcomes (compliance rates, blocked risky sign-ins, RBAC audit events, scope boundary effectiveness, GPO migration progress) and review on a regular cadence.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;Zero Trust and Least Privilege in Modern Endpoint Management&lt;/H1&gt;
&lt;P&gt;Zero Trust is an approach to security that treats every access attempt as untrusted until it is proven otherwise. Rather than relying on “inside the network = safe,” organizations evaluate each request using signals such as user identity, device health, location, and risk, and they re-check those signals over time. In an endpoint program, Microsoft Intune supports this model by establishing device compliance, applying app protection where appropriate, and working with Conditional Access so that access decisions can depend on verified user and device posture.&lt;/P&gt;
&lt;P&gt;A practical way to describe Zero Trust is through three recurring themes: (1) make access decisions using explicit verification (strong authentication plus context and risk signals), (2) minimize privilege by granting only the access needed and reducing standing admin rights where possible, and (3) design for compromise by limiting lateral movement and reducing the impact of any single breach. These concepts align with Microsoft’s published Zero Trust guidance.&lt;/P&gt;
&lt;P&gt;Role-Based Access Control (RBAC) in Intune allows organizations to delegate administrative permissions based on roles, responsibilities, and scope. For modern endpoint environments, RBAC ensures that only authorized personnel can manage devices, deploy configurations, or access sensitive data, which is a foundational control in a Zero Trust model where access is granted based on least privilege and verified identity.&lt;/P&gt;
&lt;P&gt;By combining Intune's RBAC capabilities with Scope Tags, organizations can create visibility boundaries that align with their organizational structure, whether by region, department, business unit, or function. This prevents over-allowing permissions by assigning only the rights needed for each role, supports Zero Trust by enforcing least privilege and role-based access, and improves operational security by limiting who can manage devices and policies.&lt;/P&gt;
&lt;H1&gt;Understanding Intune RBAC Roles and Permissions&lt;/H1&gt;
&lt;P&gt;Microsoft Intune provides nine built-in RBAC roles designed to address common administrative scenarios. Each role has predefined permissions that determine what actions users can perform within the Intune environment, helping organizations delegate administrative tasks while maintaining control over access to sensitive information. The built-in roles include &lt;STRONG&gt;Intune Administrator&lt;/STRONG&gt; with full access to all Intune features and settings (&lt;EM&gt;This role should not be used for every day management tasks and should be limited to only a few individuals who would be responsible for performing more elevated tasks in the Intune Portal&lt;/EM&gt;), &lt;STRONG&gt;Policy and Profile Manager&lt;/STRONG&gt; who manages device configuration profiles and compliance policies&lt;STRONG&gt;, Application Manager&lt;/STRONG&gt; who manages mobile and managed applications, &lt;STRONG&gt;Endpoint Security Manager&lt;/STRONG&gt; who manages security and compliance features, &lt;STRONG&gt;Help Desk Operator&lt;/STRONG&gt; who performs remote tasks on users and devices&lt;STRONG&gt;, Read-Only Operator&lt;/STRONG&gt; with view-only access, &lt;STRONG&gt;School Administrator&lt;/STRONG&gt; for Windows 10 devices in Intune for Education, &lt;STRONG&gt;Intune Role Administrator&lt;/STRONG&gt; who manages custom roles and assignments, and &lt;STRONG&gt;Cloud PC roles&lt;/STRONG&gt; for managing Cloud PC features and &lt;STRONG&gt;Windows Autopatch roles&lt;/STRONG&gt; for managing updates.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Built-in Role&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Primary Permissions&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Use Case&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Application Manager&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Manages mobile and managed applications, app configuration policies, and app protection policies&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Teams responsible for deploying and managing organizational apps across devices&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Policy and Profile Manager&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Manages device configuration profiles, compliance policies, and conditional access policies&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;IT administrators configuring device settings and ensuring compliance across the organization&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Endpoint Security Manager&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Manages security baselines, endpoint detection and response, and BitLocker policies&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Security teams focused on device protection and threat mitigation&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Help Desk Operator&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Performs remote tasks including device restart, password reset, and remote lock&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;First-line support staff assisting end users with device issues&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Read-Only Operator&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;View-only access to all Intune data and reports without modification rights&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Auditors and stakeholders needing visibility without administrative capabilities&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Beyond built-in roles, Intune supports custom roles that allow administrators to define specific permissions for users or groups based on their responsibilities. Custom roles enable fine-grained access control by selecting granular permissions for each role, ensuring users have access only to the features and data they require. For example, a custom role could grant only the 'Rotate local administrator password' permission to a specific Helpdesk Managers group, demonstrating the principle of least privilege in action.&lt;/P&gt;
&lt;P&gt;Create Custom Roles&lt;/P&gt;
&lt;P&gt;Login to the Intune Admin Portal with the Intune Administrator Role and navigate to &lt;EM&gt;Tenant Administration&amp;gt; Roles &amp;gt; All Roles &amp;gt; Create&lt;/EM&gt; then select the type of role you want to create. I will select &lt;EM&gt;“Intune Role”&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Give your Custom Role a Name and a brief description.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Scroll through the list of permissions as they will all be set to no by default and select the permissions relevant to the responsibility of the custom role.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you have already created your Scope Tag add it here, then review and select create&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once the role is created you can select the new role and create an assignment. Give it a name and description, then select the admin group to be assigned to the role.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Add the groups that the role will be managing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Add your relevant Scope Tags then select create.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To take things one step further I would recommend leveraging Privileged Identity Management (PIM) for groups so that you can leverage Just-in-Time Assignments for the Intune roles.&lt;/P&gt;
&lt;P&gt;One last note on custom roles if you do not want to start from scratch with the permission sets, you can also duplicate a built-in role and modify the permissions as needed. Just select the 3 dots to the right of the role and select Duplicate&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Implementing Scope Tags for Distributed IT Management&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Scope Tags are labels that help control what different admins can see and manage in Microsoft Intune. By adding scope tags to Intune items like configuration profiles, apps, policies, or device groups and assigning the same labels to admins, organizations create clear boundaries, so each admin only sees the devices and settings they are responsible for. This capability is essential for distributed IT environments where different teams manage different locations, departments, or business units.&lt;/P&gt;
&lt;P&gt;Every Intune tenant includes a default scope tag that is automatically applied to all objects and admins, ensuring everything continues working smoothly even without custom tags configured. The key benefits of using scope tags include enabling distributed IT management by allowing regional or departmental admins to manage their specific resources, controlling access by limiting admin visibility to specific resources, enhancing security by preventing unauthorized access, improving organization by grouping resources by scope, and providing flexibility to support multiple administrative models.&lt;/P&gt;
&lt;P&gt;Scope tags work together with RBAC role assignments through three components: the role defining what actions admins can perform, scope tags determining which objects admins can see, and scope groups limiting which users and devices they can affect. Common use cases for scope tags include managed service providers limiting access to specific customer resources, regional IT administrators ensuring teams only manage and see objects relevant to their region, separating testing versus production environments when a dedicated test tenant is not available, and separating Azure Virtual Desktop resources for AVD administrators.&lt;/P&gt;
&lt;P&gt;Creating Scope Tags&lt;/P&gt;
&lt;P&gt;While still under Tenant Administration&amp;gt; Roles select Scope Tags Then Create.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Give it a name and description.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Assign the proper groups then select create.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If this is all implemented properly, the admin will only be able to see items and devices that have the Scope tag that has been assigned to their role. Here are views of the apps in my tenant when signed in as a Intune Administrator (which Scope tags do not apply t&lt;/P&gt;
&lt;img /&gt;&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And here are the same views when logged in with an admin with the iOS admin role that we created.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Establishing a RACI Model for Intune Management&lt;/H1&gt;
&lt;P&gt;While establishing a RACI model is not something done in the Intune portal, it is crucial in my opinion for enterprise customers since Intune covers such a vast number of capabilities that should not all be done by one team if we are practicing least privilege and zero trust.&lt;/P&gt;
&lt;P&gt;A RACI matrix is a powerful tool for defining organizational roles and responsibilities, identifying who is Responsible, Accountable, Consulted, and Informed for each activity. In Microsoft Intune management, implementing a RACI model eliminates ambiguity about which teams handle security policies, application management, patch compliance, Conditional Access, and GPO migration.&lt;/P&gt;
&lt;P&gt;The RACI framework defines four key roles: Responsible individuals execute the task or deliverable, Accountable is the single person ultimately answerable for correct completion and decision-making authority, Consulted are experts or stakeholders whose feedback is sought during the task, and Informed are those kept up to date on progress or decisions without actively contributing.&lt;/P&gt;
&lt;P&gt;For Intune environments, a well-designed RACI matrix promotes organizational alignment by mapping all key stakeholders across central IT and individual agencies or departments, clarifies decision rights by defining who approves, who executes, and who provides input for each Intune activity, ensures accountability by assigning a single accountable party for each deliverable to prevent diffusion of responsibility, and improves communication by identifying upfront who needs to be consulted and kept informed.&lt;/P&gt;
&lt;P&gt;Based on internal implementation experience and with Microsoft Federal customers, organizations should list deliverables not just activities, define roles not individual names to ensure the matrix remains relevant as people change positions, enforce exactly one Accountable person per task, assign Responsible, Consulted, and Informed roles thoughtfully, validate in a short review session, publish where work happens, and evolve the matrix as the project evolves.&lt;/P&gt;
&lt;H1&gt;RACI Matrix for Security Policies and Compliance&lt;/H1&gt;
&lt;P&gt;The following are just &lt;STRONG&gt;&lt;EM&gt;generic examples&lt;/EM&gt;&lt;/STRONG&gt; of some of the workloads and how they could be managed with a RACI matrix.&lt;/P&gt;
&lt;P&gt;Security policies and compliance management in Intune require clear ownership across multiple teams. Organizations must define who creates compliance policies requiring device encryption and minimum OS versions, who deploy security baselines like the Microsoft Defender for Endpoint Security Baseline, who manages Conditional Access policies that require device compliance, and who responds to non-compliant devices. A typical RACI model for security policies assigns the Cloud Security Team as Accountable for overall security policy strategy and compliance requirements, the Endpoint Team as Responsible for creating and deploying compliance policies and security baselines in Intune, the Application Team as Consulted for application-specific security requirements, the Help Desk as Informed about policy changes that may affect device compliance status, and the Compliance Team as Consulted to ensure policies meet regulatory requirements and as Informed about compliance status reports.&lt;/P&gt;
&lt;P&gt;For patch management and application compliance, the RACI model shifts slightly with the Endpoint Team becoming Accountable for patch deployment strategy and timing, the Application Team becoming Responsible for testing application compatibility with updates, the Help Desk becoming Responsible for addressing user-reported issues after patches, and the Cloud Security Team becoming Consulted for security update prioritization. Organizations implementing Windows Autopatch benefit from Microsoft managing problematic quality and feature update deployment cancellations using telemetry, automatically splitting devices into rings based on percentage of total devices, and managing patching behavior for Windows, Microsoft 365 Apps, Edge, Teams, and Drivers. This shifts some Accountable and Responsible designations to Microsoft while keeping internal teams Informed and Consulted.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Intune Activity&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Accountable&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Responsible&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Consulted&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Informed&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Security Policy Creation&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Cloud Security Team&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Endpoint Team&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Application Team, Compliance Team&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Help Desk&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Compliance Policy Deployment&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Cloud Security Team&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Endpoint Team&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Compliance Team&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Help Desk, Application Team&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Security Baseline Management&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Cloud Security Team&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Endpoint Team&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Application Team&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Help Desk, Compliance Team&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Patch Management Strategy&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Endpoint Team&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Application Team&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Cloud Security Team&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Help Desk, Compliance Team&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Non-Compliance Response&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Cloud Security Team&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Endpoint Team, Help Desk&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Compliance Team&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Application Team&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 20.00%" /&gt;&lt;col style="width: 20.00%" /&gt;&lt;col style="width: 20.00%" /&gt;&lt;col style="width: 20.00%" /&gt;&lt;col style="width: 20.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H1&gt;Application and Conditional Access Management Responsibilities&lt;/H1&gt;
&lt;P&gt;Application management and Conditional Access in Intune span multiple organizational functions requiring coordinated responsibility. For application lifecycle management, the Application Team is both Accountable and Responsible for deployment strategy, app protection policies, creating and testing app packages and configurations. The Endpoint Team is Consulted for deployment targeting and device compatibility, while the Help Desk is Informed about new applications and support procedures.&lt;/P&gt;
&lt;P&gt;For Conditional Access policy management, multiple teams coordinate their expertise. The Cloud Security Team is Accountable for overall Conditional Access strategy and Zero Trust implementation. The Endpoint Team is Responsible for ensuring device compliance status feeds correctly into Conditional Access decisions. The Identity Team is Responsible for configuring Conditional Access policies in Microsoft Entra ID. The Application Team is Consulted about application-specific access requirements, and the Help Desk is both Informed about access restrictions and Responsible for assisting users blocked by Conditional Access policies.&lt;/P&gt;
&lt;P&gt;Conditional Access integration with Intune creates a powerful Zero Trust security model where Intune evaluates device compliance based on compliance policies, compliance status is reported to Microsoft Entra ID, Conditional Access policies check device compliance status, and access is granted or blocked based on compliance status.&lt;/P&gt;
&lt;P&gt;For mobile application management, the Application Team is both Accountable and Responsible for app protection policies including data protection settings, access requirements like PIN and biometric authentication, and integration with Conditional Access. The Cloud Security Team is Consulted for security requirements, and the Endpoint Team is Informed about app-level controls that complement device-level policies.&lt;/P&gt;
&lt;H1&gt;GPO Migration to Intune: Roles and Responsibilities&lt;/H1&gt;
&lt;P&gt;Migrating Group Policy Objects from on-premises Active Directory to Microsoft Intune represents a critical transformation requiring clear ownership and phased execution. The migration process uses Group Policy Analytics, a built-in tool in Intune that analyzes on-premises GPOs by importing them as XML exports and translating them against the Settings Catalog to determine which policies are supported, deprecated, or unsupported in Intune.&lt;/P&gt;
&lt;P&gt;Organizations export GPOs from the Group Policy Management Console by right clicking the GPO, selecting Save Report, and saving as XML format. After importing to Intune via Devices &amp;gt; Group Policy Analytics, the tool generates a percentage-based report showing exactly how many settings have a direct 1:1 mapping to modern Intune settings.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The Group Policy Analytics tool categorizes settings into three distinct types: Supported settings that have a direct counterpart in Intune and can be migrated via Settings Catalog policies, Deprecated settings no longer applicable to modern Windows versions, and Not Supported settings that do not currently have a CSP mapping and often require alternative management methods like PowerShell scripts or Proactive Remediations. Approximately 45% of GPOs can be successfully migrated to Settings Catalog, 30% require alternative approaches via PowerShell remediations, and 25% can be deprecated and retired based on typical migration outcomes.&lt;/P&gt;
&lt;H2&gt;RACI Model for GPO Migration&lt;/H2&gt;
&lt;P&gt;For the RACI model, the Endpoint Team is Accountable for the overall GPO migration strategy and timeline, the Active Directory Team is Responsible for exporting GPOs and documenting current policy structures, the Application Team is Consulted to validate that application-specific GPOs migrate correctly and that applications continue functioning, the Cloud Security Team is Consulted to ensure migrated policies maintain security posture, and the Help Desk is Informed about changes to device configurations and becomes Responsible for user communication about policy transitions.&lt;/P&gt;
&lt;H1&gt;Integrating Conditional Access with Device Compliance&lt;/H1&gt;
&lt;P&gt;Conditional Access integration with Intune device compliance creates an additional layer of security by enforcing access controls based on device compliance status and app protection policies. This integration ensures that only compliant devices and protected apps can access organizational resources, forming a cornerstone of Zero Trust architecture.&lt;/P&gt;
&lt;H2&gt;Device-Based Conditional Access Implementation&lt;/H2&gt;
&lt;P&gt;Device-based Conditional Access uses device compliance status from Intune to control access to organizational resources through a four-step process:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Intune evaluates device compliance based on compliance policies&lt;/LI&gt;
&lt;LI&gt;Compliance status is reported to Microsoft Entra ID&lt;/LI&gt;
&lt;LI&gt;Conditional Access policies check device compliance status&lt;/LI&gt;
&lt;LI&gt;Access is granted or blocked based on compliance status&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;To implement device compliance Conditional Access, organizations first create and assign device compliance policies in Intune requiring elements like BitLocker encryption, Microsoft Defender antivirus enabled, Windows Firewall enabled, and minimum OS version requirements. Then in the Microsoft Entra Admin Center under Security &amp;gt; Conditional Access, administrators create policies specifying:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Users&lt;/STRONG&gt; as target groups like Corporate Users&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Cloud apps&lt;/STRONG&gt; as All cloud apps or selected Microsoft 365 apps&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Device platform&lt;/STRONG&gt; as Windows or other platforms&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Access control&lt;/STRONG&gt; requiring device to be marked as compliant&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;Measuring Success and Continuous Improvement&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Organizations implementing Intune RBAC and Scope Tags should establish metrics to measure success and identify areas for continuous improvement. Key performance indicators include percentage of devices compliant with security policies, time to resolve non-compliance issues, number of unauthorized access attempts blocked by Conditional Access, percentage of GPOs successfully migrated to Intune Settings Catalog, and administrative efficiency measured by reduction in time spent on routine management tasks.&lt;/P&gt;
&lt;P&gt;Compliance reporting in Intune provides visibility into device compliance status across the organization, with reports showing compliant versus non-compliant devices, specific compliance policy violations, and trends over time. Organizations typically see compliance rates improve from a 65% baseline to 95% or higher within 12 months of implementing proper RBAC roles and Scope Tags. This improvement results from clearer ownership, faster policy deployment, and more focused administrative oversight.&lt;/P&gt;
&lt;P&gt;Conditional Access sign-in logs in Microsoft Entra ID reveal which access attempts are granted or blocked, the reasons for access decisions, and patterns of risky sign-ins that may indicate compromised credentials or devices. For RBAC effectiveness, organizations should monitor audit logs to track which administrators are performing which actions, identify any privilege escalation attempts or suspicious administrative activity, and ensure separation of duties is maintained.&lt;/P&gt;
&lt;P&gt;Scope tag effectiveness can be measured by confirming that administrators only see resources within their designated scope, tracking incidents where admins requested access outside their scope, and validating that regional or departmental segregation is working as intended. Organizations should establish a regular review cadence with monthly compliance and security posture reviews, quarterly RBAC and Scope Tag access reviews, bi-annual GPO migration progress assessments, and annual Zero Trust maturity assessments.&lt;/P&gt;
&lt;H2 aria-level="2"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Disclaimer&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;All screenshots are from a non-production lab environment and can/will vary per environment. All processes and directions are of my own opinion and not of Microsoft and are from my years of experience with the Intune product in multiple customer environments&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;References&lt;/H2&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/intune/intune-service/fundamentals/role-based-access-control" target="_blank" rel="noopener"&gt;Role-based access control (RBAC) with Microsoft Intune - Microsoft Intune | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/intune/intune-service/fundamentals/scope-tags" target="_blank" rel="noopener"&gt;Use role-based access control (RBAC) and scope tags for distributed IT - Microsoft Intune | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/organize/raci-alignment" target="_blank" rel="noopener"&gt;Aligning responsibilities across teams - Cloud Adoption Framework | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/identity/conditional-access/policy-all-users-device-compliance" target="_blank" rel="noopener"&gt;How to Require Device Compliance with Conditional Access - Microsoft Entra ID | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://techcommunity.microsoft.com/blog/intunecustomersuccess/configuring-microsoft-intune-just-in-time-admin-access-with-azure-ad-pim-for-gro/3843972" target="_blank" rel="noopener"&gt;Configuring Microsoft Intune just-in-time admin access with Azure AD PIM for Groups | Microsoft Community Hub&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 30 Mar 2026 12:48:45 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/implementing-intune-rbac-and-scope-tags-for-zero-trust-and-least/ba-p/4506889</guid>
      <dc:creator>ChrisVetter</dc:creator>
      <dc:date>2026-03-30T12:48:45Z</dc:date>
    </item>
    <item>
      <title>What Changed in RC4 with the January 2026 Windows Update and Why it is Important</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/what-changed-in-rc4-with-the-january-2026-windows-update-and-why/ba-p/4504732</link>
      <description>&lt;P&gt;In case you haven’t heard, RC4 is not secure and has been deprecated. In this article, I will discuss what changed with the January 2026 Windows Update and why it is important to start auditing and remediate RC4 usage is your environment.&lt;/P&gt;
&lt;P&gt;Starting with the&amp;nbsp;&lt;STRONG&gt;January 13, 2026, Windows security updates&lt;/STRONG&gt;, Microsoft began the first official phase of&amp;nbsp;&lt;STRONG&gt;hardening Kerberos authentication by reducing reliance on RC4 encryption&lt;/STRONG&gt;. The RC4 change will mainly impact service accounts and accounts that have the attribute&amp;nbsp;msDS-SupportedEncryptionTypes&amp;nbsp;left blank.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Why Microsoft Is Targeting RC4&lt;/H1&gt;
&lt;P&gt;&lt;STRONG&gt;RC4&amp;nbsp;&lt;/STRONG&gt;is considered insecure due to&amp;nbsp;cryptographic flaws that produce biased, non-random output, allowing attackers to recover encrypted data.&lt;/P&gt;
&lt;P&gt;Despite this, RC4 remains enabled by default in many Active Directory environments for backward compatibility.&lt;/P&gt;
&lt;P&gt;Microsoft tied the January changes to a Kerberos information disclosure vulnerability tracked as&amp;nbsp;&lt;STRONG&gt;CVE-2026-20833&lt;/STRONG&gt;, using this security update as the entry point to begin the RC4 deprecation process.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Update Timeline: From Audit to Full Enforcement&lt;/H1&gt;
&lt;P&gt;Microsoft is rolling out the Kerberos RC4 hardening in&amp;nbsp;&lt;STRONG&gt;well-defined phases throughout 2026&lt;/STRONG&gt;, giving organizations time to identify dependencies and remediate them before enforcement becomes mandatory. Understanding this timeline is critical to avoid outages.&lt;/P&gt;
&lt;H2&gt;Phase 1 – Initial Deployment (January 2026)&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Starting on January 13, 2026&lt;/STRONG&gt;, Windows security updates introduce the&amp;nbsp;&lt;STRONG&gt;initial deployment phase&lt;/STRONG&gt;.&lt;BR /&gt;This stage is focused on monitoring, &lt;U&gt;not enforcement&lt;/U&gt;.&lt;/P&gt;
&lt;P&gt;Key points of this phase:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;New Kerberos audit events&lt;/STRONG&gt;&amp;nbsp;are logged on Domain Controllers (we will analyze them later in this article)&lt;/LI&gt;
&lt;LI&gt;A&amp;nbsp;&lt;STRONG&gt;temporary registry control&lt;/STRONG&gt;&amp;nbsp;&lt;STRONG&gt;setting&lt;/STRONG&gt; (RC4DefaultDisablementPhase) has been introduced, allowing organizations to optionally enable stricter behavior ahead of time. Mind that this registry key is not created by default, you'll need to create it and set it to 1 to have the new&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;No default behavior changes&lt;/STRONG&gt;&amp;nbsp;are applied&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Phase 2 – Enforcement Enabled by Default (April 2026)&lt;/H2&gt;
&lt;P&gt;Beginning with the&amp;nbsp;&lt;STRONG&gt;April 2026 Windows security update&lt;/STRONG&gt;, Microsoft moves to the &lt;STRONG&gt;second deployment phase&lt;/STRONG&gt;, where behavior changes start to matter operationally.&lt;/P&gt;
&lt;P&gt;During this phase:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Enforcement mode is enabled by default&lt;/STRONG&gt;&amp;nbsp;on all supported Windows Domain Controllers, the default value for&amp;nbsp;&lt;STRONG&gt;DefaultDomainSupportedEncTypes&lt;/STRONG&gt;&amp;nbsp;is set to allow AES-SHA1 only:&lt;STRONG&gt;&amp;nbsp;0x18&lt;/STRONG&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;This changes the Kerberos KDC default behavior for accounts&amp;nbsp;&lt;STRONG&gt;without an explicit&amp;nbsp;&lt;/STRONG&gt;msDS-SupportedEncryptionTypes&lt;STRONG&gt;&amp;nbsp;configuration&lt;/STRONG&gt;&amp;nbsp;to allow RC4. RC4 is no longer negotiated implicitly for accounts with a blank msDS-SupportedEncryptionTypes, they will only receive&amp;nbsp;&lt;STRONG&gt;AES encrypted tickets&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/UL&gt;
&lt;P&gt;While it is still technically possible to revert to audit behavior temporarily (by changing the value of the registry key mentioned above), it will be important to arrive in this phase with the&amp;nbsp;&lt;STRONG&gt;remediation already completed&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H2&gt;Phase 3 – Full Enforcement (July 2026)&lt;/H2&gt;
&lt;P&gt;The final phase begins with the&amp;nbsp;&lt;STRONG&gt;July 2026 security updates&lt;/STRONG&gt;&amp;nbsp;and represents the&amp;nbsp;&lt;STRONG&gt;end of the transition period&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;At this point:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Audit‑only mode is removed&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;The temporary&amp;nbsp;&lt;STRONG&gt;RC4DefaultDisablementPhase&lt;/STRONG&gt;&amp;nbsp;registry value is no longer read&lt;/LI&gt;
&lt;LI&gt;the default value for &lt;STRONG&gt;DefaultDomainSupportedEncTypes&lt;/STRONG&gt; is set to &lt;STRONG&gt;AES-SHA1 only&lt;/STRONG&gt; (0x18)&lt;/LI&gt;
&lt;LI&gt;With this configuration, Kerberos will issue RC4 tickets&amp;nbsp;&lt;STRONG&gt;only if explicitly configured per account &lt;/STRONG&gt;using the attribute “msDS-SupportedEncryptionTypes&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;”&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Organizations that didn’t address RC4 usage earlier will experience persistent service outages for legacy systems and applications not compatible with AES encryption.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;How to prepare for the changes&lt;/H1&gt;
&lt;P&gt;It’s tempting to ignore the January changes because “nothing is broken,” but that would be a mistake. The new audit events are here to help you prepare for the changes.&lt;/P&gt;
&lt;P&gt;Let’s analyze how we can leverage audit data to be&amp;nbsp;&lt;STRONG&gt;ready before April 2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;H2&gt;Audit events&lt;/H2&gt;
&lt;P&gt;After the January Windows security update, some new events will start to appear in the &lt;EM&gt;system event log&lt;/EM&gt; of supported domain controllers if:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Your&amp;nbsp;domain controller is&amp;nbsp;receiving Kerberos service ticket requests&amp;nbsp;that&amp;nbsp;&lt;STRONG&gt;require RC4&amp;nbsp;&lt;/STRONG&gt;cipher to be used but the&amp;nbsp;service account has default encryption configuration&lt;/LI&gt;
&lt;LI&gt;you have created the registry key &lt;STRONG&gt;RC4DefaultDisablementPhase&lt;/STRONG&gt; and set it to 1&lt;/LI&gt;
&lt;LI&gt;Your domain controller has an explicit&amp;nbsp;&lt;STRONG&gt;DefaultDomainSupportedEncTypes&lt;/STRONG&gt;&amp;nbsp;configuration to allow RC4 encryption&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;To understand if your environment will be impacted by the change, you’ll need to&amp;nbsp;&lt;STRONG&gt;audit the events&lt;/STRONG&gt;&amp;nbsp;201,202,205,206,207 from the system event log. The events 203,204,208 and 209 will be logged starting from phase 2. See&amp;nbsp;&lt;A href="https://support.microsoft.com/en-us/topic/how-to-manage-kerberos-kdc-usage-of-rc4-for-service-account-ticket-issuance-changes-related-to-cve-2026-20833-1ebcda33-720a-4da8-93c1-b0496e1910dc" target="_blank" rel="noopener"&gt;this&amp;nbsp;&lt;/A&gt;Microsoft article for more details about the events.&lt;/P&gt;
&lt;P&gt;These events are designed to help you identify accounts or services still requesting RC4encrypted tickets and clients or applications that do not support AES. This gives administrators a&amp;nbsp;&lt;STRONG&gt;safe discovery phase&lt;/STRONG&gt;&amp;nbsp;to identify dependencies before anything stops working.&lt;/P&gt;
&lt;H2&gt;Identify High Risk Dependencies&lt;/H2&gt;
&lt;P&gt;Not all RC4 usage has the same impact. The audit events allow administrators to prioritize remediation by identifying:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Service or computer accounts&lt;/STRONG&gt;&amp;nbsp;that rely on RC4 due to missing or outdated encryption keys, such as accounts that have not had password reset in years&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Legacy applications or appliances&lt;/STRONG&gt;&amp;nbsp;that cannot negotiate AES&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Service accounts deserve special attention because they are commonly affected by RC4 dependencies and are high value targets in Kerberoasting scenarios.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Validate Kerberos Encryption Configuration&lt;/H2&gt;
&lt;P&gt;One of the most important insights provided by the new events is whether accounts are missing&amp;nbsp;&lt;STRONG&gt;AES‑compatible Kerberos keys&lt;/STRONG&gt;&amp;nbsp;(msDS-SupportedEncryptionTypes).&lt;/P&gt;
&lt;P&gt;In many cases, RC4 usage is not intentional but happens because the account password has never been reset since AES support was introduced or because the encryption types are implicitly inherited rather than explicitly defined.&lt;/P&gt;
&lt;P&gt;The audit data allows you to confirm which accounts already support AES and which ones will fail once AESonly behavior becomes the default.&lt;/P&gt;
&lt;H3&gt;Main Scenarios&lt;/H3&gt;
&lt;P&gt;Let me list the common scenarios you can find during the auditing phase:&lt;/P&gt;
&lt;H4&gt;RC4/RC4&lt;/H4&gt;
&lt;P&gt;This is most critical scenario, where both the session and the ticket are encrypted in RC4. The event associated with this scenario are the 201 and 202. The most possible causes are:&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The account password was never reset, and can request only RC4 keys&lt;/LI&gt;
&lt;LI&gt;the client advertises only RC4&lt;/LI&gt;
&lt;LI&gt;the msDS-SupportedEncryptionTypes attribute is not defined&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Actions:&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Identify the AD object involved&lt;/LI&gt;
&lt;LI&gt;identify the keys available for the account (I recommend the usage of the script List-AccountKeys.ps1, details available here: &lt;A href="https://learn.microsoft.com/en-us/windows-server/security/kerberos/detect-remediate-rc4-kerberos#use-powershell-to-audit-rc4-usage" target="_blank" rel="noopener"&gt;Detect and Remediate RC4 Usage in Kerberos | Microsoft Learn&lt;/A&gt;)&lt;/LI&gt;
&lt;LI&gt;If there no AES keys available, reset the password of the account and check again after a while&lt;/LI&gt;
&lt;LI&gt;change the value of the msDS-SupportedEncryptionTypes attribute. You can decide to change it to AES either for testing or because you saw this account is indeed compatible with AES after a password reset or a remediation. The useful value for this attribute in this scenario are:&amp;nbsp;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;24 (0x18):&lt;/STRONG&gt; The account will only support AES128 and AES256 encryption&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;56 (0x38):&lt;/STRONG&gt; some account may need also the enforcement of the AES session key to abandon the use of RC4 encryption, depending on the application.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;28 (0x1C):&lt;/STRONG&gt; this value is used to do a rollback for the account. With this value the account will support both RC4 and AES encryption. Note that &lt;STRONG&gt;this is not a recommended action&lt;/STRONG&gt; since it will expose the account by the use of a weak encryption algorithm.&amp;nbsp;&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;AES/RC4&lt;/H4&gt;
&lt;P&gt;in this scenario the ticket is encrypted using AES, while the session still uses RC4. The event usually associated with this scenario is the 206.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this scenario the service may indicates that the client is not advertising for AES encryption.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Actions:&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Investigate the client checking if it's compatible with AES and what the client is advertising&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Check if there are legacy GPO that enforce RC4 usage for this account&lt;/LI&gt;
&lt;LI&gt;For Linux clients or third‑party applications, review krb5.conf, keytabs, and Kerberos libraries&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;RC4/AES&lt;/H4&gt;
&lt;P&gt;this indicates that RC4 is enforced on the KDC side.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;actions:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;check the value for the registry key &lt;STRONG style="color: rgb(30, 30, 30);"&gt;DefaultDomainSupportedEncTypes&amp;nbsp;&lt;/STRONG&gt;to ensure that RC4 is not enforced on the DC&lt;/LI&gt;
&lt;LI&gt;check the value for the attribute &lt;STRONG&gt;msDS-SupportedEncryptionTypes&lt;/STRONG&gt; to ensure that RC4 is not enforced at the account level&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Establish a Remediation Baseline Before April&lt;/H2&gt;
&lt;P&gt;By the time the&amp;nbsp;&lt;STRONG&gt;April 2026 enforcement phase&lt;/STRONG&gt;&amp;nbsp;begins, you should already have:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Reviewed Kerberos audit events across all domain controllers&lt;/LI&gt;
&lt;LI&gt;Identified all RC4-dependent accounts and services&lt;/LI&gt;
&lt;LI&gt;Confirmed AES compatibility where possible&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Documented any unavoidable legacy dependencies&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The January audit data is meant to drive these actions early, while remediation can still be planned and tested calmly.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Why the January Update Matters (Even If Nothing Breaks Yet)&lt;/H1&gt;
&lt;P&gt;Since the creation of AES-SHA1 tickets has been implemented in Windows Server 2008R2, I’m confident that many organizations won’t have issues with this transition and can use these phases to validate their configurations.&lt;/P&gt;
&lt;P&gt;If you didn’t have the chance or the time to address the RC4 usage earlier, don’t give into the temptation to ignore the January changes, because that would be unwise. The audit events that have been introduced are&amp;nbsp;&lt;STRONG&gt;your only early warning system&lt;/STRONG&gt;&amp;nbsp;to avoid Kerberos authentication failures, problems with legacy applications, and service accounts failing due to missing AES keys.&lt;/P&gt;
&lt;P&gt;In practice, the January update is the&amp;nbsp;&lt;STRONG&gt;last safe window&lt;/STRONG&gt;&amp;nbsp;to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Identify RC4‑only accounts&lt;/LI&gt;
&lt;LI&gt;Detect non-AES-capable clients&lt;/LI&gt;
&lt;LI&gt;Fix misconfigured Kerberos encryption settings on your terms&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Organizations that use this phase to&amp;nbsp;&lt;STRONG&gt;audit, remediate, and modernize&lt;/STRONG&gt;&amp;nbsp;will transition smoothly.&lt;BR /&gt;Those who ignore it risk discovering RC4 dependencies&amp;nbsp;&lt;STRONG&gt;only when enforcement is already active&lt;/STRONG&gt;.&lt;/P&gt;</description>
      <pubDate>Sun, 19 Apr 2026 14:11:51 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/what-changed-in-rc4-with-the-january-2026-windows-update-and-why/ba-p/4504732</guid>
      <dc:creator>Elanor92</dc:creator>
      <dc:date>2026-04-19T14:11:51Z</dc:date>
    </item>
    <item>
      <title>Remove Unnecessary Azure Storage Account Dependencies in VM Diagnostics</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/remove-unnecessary-azure-storage-account-dependencies-in-vm/ba-p/4501380</link>
      <description>&lt;P&gt;In a recent engagement with a customer willing to decrease Shared Access Signature (SAS) tokens usage in their Storage Accounts, we found out that a good amount of SAS token-based requests was associated with VM diagnostics. One practical way to reduce SAS token usage is to eliminate dependencies that require Storage Accounts in the first place, especially when Azure offers managed alternatives.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This post focuses on two VM-level features that often introduce (or preserve) unnecessary Storage Account coupling:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The legacy &lt;STRONG&gt;IaaS Diagnostics&lt;/STRONG&gt; extension (retiring), which can write diagnostic data to Storage&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Boot diagnostics&lt;/STRONG&gt; configured to use a customer-managed Storage Account, considering Microsoft-managed boot diagnostics works as well without any operational effort.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;1) Retire the legacy IaaS Diagnostics extension&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you’re no longer using the legacy&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-monitor/agents/diagnostics-extension-overview" target="_blank"&gt;IaaS Diagnostics&lt;/A&gt; extension for VM monitoring and troubleshooting, removing it is an easy win: it reduces Storage Account coupling and helps you stay ahead of platform deprecations. Microsoft has announced retirement of the extension as of &lt;U&gt;March 31&lt;/U&gt;, so now is a good time to inventory and remove it where it’s still present.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How to find affected VMs&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Use Azure Resource Graph (ARG) to identify virtual machines with the extension installed across subscriptions at scale. Once you have the list, you can remove the extension directly from the Azure portal or using your preferred automation approach (PowerShell or Azure CLI).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For a proven at-scale removal pattern (including cleanup of the data the extension produced), see &lt;A href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/how-to-remove-at-scale-the-azure-diagnostics-extension-and-its-storage-data/2091507" target="_blank"&gt;How to remove at scale the Azure Diagnostics Extension and its storage data&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;2) Switch boot diagnostics to Microsoft-managed storage&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Boot diagnostics are invaluable when you need VM boot screenshots/logs and serial console access. Historically, it required a customer-managed Storage Account—often leading teams to create “diagnostics” Storage Accounts, wire up access, and sometimes rely on SAS tokens to make the integration work across tooling.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Today, you can enable boot diagnostics without providing a Storage Account by using &lt;A href="https://learn.microsoft.com/azure/virtual-machines/boot-diagnostics#enable-managed-boot-diagnostics" target="_blank"&gt;managed boot diagnostics&lt;/A&gt; (Microsoft-managed storage). In most scenarios, this removes an entire class of dependency without sacrificing functionality. The switch is also operationally friendly: it does not require a VM reboot and doesn’t interfere with the guest OS.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How to find and migrate at scale&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;As with extensions, Azure Resource Graph is a good starting point to identify VMs that have boot diagnostics enabled against a customer-managed Storage Account. Use the query below to identify those VMs:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;resources
| where type =~ 'microsoft.compute/virtualmachines'
| extend diagProfile = properties.diagnosticsProfile.bootDiagnostics
| extend powerState = tostring(properties.extended.instanceView.powerState.code)
| extend diagAccount = tostring(split(parse_url(tostring(properties.diagnosticsProfile.bootDiagnostics.storageUri)).Host,'.')[0])
| extend bootDiagnosticsEnabled = tobool(properties.diagnosticsProfile.bootDiagnostics.enabled)
| project name, resourceGroup, subscriptionId, powerState, bootDiagnosticsEnabled, diagAccount
| where bootDiagnosticsEnabled and isnotempty(diagAccount)&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After you’ve validated the impact in a non-production subscription, you can automate migration in bulk to enable managed boot diagnostics, by using &lt;A href="https://github.com/helderpinto/azure-wellarchitected-toolkit/blob/main/operational-excellence/scripts/Set-AzVMBootDiagnosticsWrapper.ps1" target="_blank"&gt;the Set-AzVMBootDiagnosticsWrapper.ps1&lt;/A&gt; script. Simply download it, unblock it (file properties &amp;gt; unblock), and upload it to Azure Cloud Shell.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Example PowerShell usage pattern:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;./Set-AzVMBootDiagnosticsWrapper.ps1 -Action EnableManaged [-TargetSubscriptionId &amp;lt;sub id&amp;gt;] [-ARGFilter &amp;lt;ARG condition, e.g., resourceGroup =~ 'xyz'&amp;gt;] [-Simulate]&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Wrap-up&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Reducing SAS token usage isn’t only about replacing tokens with another credential type —it’s also about removing the underlying dependencies that make tokens attractive in the first place. By (1) removing the retiring IaaS Diagnostics extension and (2) migrating boot diagnostics to Microsoft-managed storage, you can simplify your VM baseline, reduce Storage Account sprawl, and stay ahead of deprecations. As a next step, consider standardizing these checks in your provisioning pipelines (Bicep/Terraform), and add periodic ARG-based hygiene queries to keep drift under control.&lt;/P&gt;</description>
      <pubDate>Mon, 16 Mar 2026 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/remove-unnecessary-azure-storage-account-dependencies-in-vm/ba-p/4501380</guid>
      <dc:creator>hspinto</dc:creator>
      <dc:date>2026-03-16T07:00:00Z</dc:date>
    </item>
    <item>
      <title>Bulk enable Azure Arc Connected Machine Agent Automatic Upgrade (Tag Scoped) with Azure Cloud Shell</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/bulk-enable-azure-arc-connected-machine-agent-automatic-upgrade/ba-p/4501749</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Overview&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Keeping the &lt;STRONG&gt;Azure Arc Connected Machine agent&lt;/STRONG&gt; current is a foundational hygiene task for any hybrid server estate, especially when you’re operating at scale and onboarding hundreds (or thousands) of machines into Arc.&lt;/P&gt;
&lt;P&gt;The good news: Azure Arc supports an &lt;STRONG&gt;automatic agent upgrade (preview)&lt;/STRONG&gt; capability that can be enabled per Arc machine by setting the &lt;EM&gt;agentUpgrade.enableAutomaticUpgrade&lt;/EM&gt; property via Azure Resource Manager (ARM). Microsoft’s public guidance shows enabling this using a &lt;STRONG&gt;PATCH&lt;/STRONG&gt; call (via Invoke-AzRestMethod) against the Arc machine resource with the 2024-05-20-preview API version. &lt;A href="https://learn.microsoft.com/en-us/azure/azure-arc/servers/manage-agent?tabs=windows#automatic-agent-upgrade-preview" target="_blank"&gt;Manage and maintain the Azure Connected Machine agent - Azure Arc | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;In real environments, you rarely want to enable this across &lt;EM&gt;every&lt;/EM&gt; Arc-enabled server in one shot. Instead, you typically:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;start with a &lt;STRONG&gt;pilot ring&lt;/STRONG&gt; (e.g., Dev/Test or low‑risk servers),&lt;/LI&gt;
&lt;LI&gt;validate results, and then&lt;/LI&gt;
&lt;LI&gt;expand coverage gradually.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;The Script:&lt;/STRONG&gt; &lt;A href="https://github.com/Abhishek-Sharan/ExtensionManagement/blob/main/AzArc-EnableAutoUpgrade.ps1" target="_blank"&gt;Abhishek-Sharan/ExtensionManagement: Install &amp;amp; Manage Extensions&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The script implements exactly that approach by:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;prompting an &lt;STRONG&gt;explicit disclaimer acknowledgement&lt;/STRONG&gt; (safety gate),&lt;/LI&gt;
&lt;LI&gt;selecting Arc machines &lt;STRONG&gt;by tag&lt;/STRONG&gt; (a controlled blast-radius technique),&lt;/LI&gt;
&lt;LI&gt;enabling automatic upgrade using &lt;STRONG&gt;ARM PATCH&lt;/STRONG&gt; through Invoke-AzRestMethod,&lt;/LI&gt;
&lt;LI&gt;producing a &lt;STRONG&gt;final summary report&lt;/STRONG&gt; of success/failure per machine.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;This post walks through what the script does, why each section exists, and what to consider before using it in production.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Why Tag‑Scoped Enablement?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In many enterprise deployments, tags are the simplest way to define a “ring” of servers:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Ring=Pilot&lt;/LI&gt;
&lt;LI&gt;Environment=NonProd&lt;/LI&gt;
&lt;LI&gt;Workload=LowRisk&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This script discovers resources of type &lt;STRONG&gt;&lt;EM&gt;Microsoft.HybridCompute&lt;/EM&gt;&lt;/STRONG&gt; machines in a given resource group and filters them by a tag/value pair. That makes it easy to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;onboard machines first,&lt;/LI&gt;
&lt;LI&gt;apply tags as part of provisioning,&lt;/LI&gt;
&lt;LI&gt;then flip on agent auto-upgrade only for the right cohort.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Script Details (Walkthrough)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1) Safety Gate: Disclaimer + Explicit User Consent&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This script prints a disclaimer block and requires the operator to type &lt;STRONG&gt;Y&lt;/STRONG&gt; to proceed. If the user types anything else, the script exits.&lt;/P&gt;
&lt;P&gt;Why it matters:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;It prevents accidental execution (especially in shared shells or jump boxes).&lt;/LI&gt;
&lt;LI&gt;It reinforces that this is a &lt;STRONG&gt;potentially impactful&lt;/STRONG&gt; change across multiple machines.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2) Configuration: Subscription, Resource Group, and Tag Scope&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The script sets the active Azure context:&lt;/P&gt;
&lt;P&gt;Set-AzContext -Subscription "YOUR SUBSCRIPTION"&lt;/P&gt;
&lt;P&gt;Then defines:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;$resourceGroup&lt;/LI&gt;
&lt;LI&gt;$tagName, $tagValue&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3) Discovery: Find Azure Arc Machines with a Target Tag&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Discovery uses:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Get-AzResource -ResourceType "Microsoft.HybridCompute/machines"&lt;/LI&gt;
&lt;LI&gt;filters by tag match on the returned resource object.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This ensures you are only targeting Arc-enabled servers represented as &lt;STRONG&gt;&lt;EM&gt;Microsoft.HybridCompute&lt;/EM&gt;&lt;/STRONG&gt; machines resources.&lt;/P&gt;
&lt;P&gt;If no machines are found, the script exits cleanly, which avoids the “silent no-op” problem and helps operators quickly validate that scope selection is correct.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;4) Update: Enable Automatic Upgrade via ARM PATCH&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;For each machine, the script uses Invoke-AzRestMethod with:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;ResourceProviderName = "Microsoft.HybridCompute"&lt;/LI&gt;
&lt;LI&gt;ResourceType = "Machines"&lt;/LI&gt;
&lt;LI&gt;ApiVersion = "2024-05-20-preview"&lt;/LI&gt;
&lt;LI&gt;Method = "PATCH"&lt;/LI&gt;
&lt;LI&gt;payload:&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;{"properties":{"agentUpgrade":{"enableAutomaticUpgrade":true}}}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;5) Output: Per‑Machine Result + Final Summary Table&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The script records results into an array of PSCustomObject entries with:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;MachineName&lt;/LI&gt;
&lt;LI&gt;EnableAutomaticUpgrade&lt;/LI&gt;
&lt;LI&gt;Result (Success/Failed)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Then prints a formatted table.&lt;/P&gt;
&lt;P&gt;This is useful for:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;quick operator confirmation,&lt;/LI&gt;
&lt;LI&gt;change records,&lt;/LI&gt;
&lt;LI&gt;attaching output to internal work items / change tickets.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This script is a solid operational accelerant for teams managing Arc-enabled servers at scale. It combines:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;safety&lt;/STRONG&gt; (explicit disclaimer + opt-in),&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;control&lt;/STRONG&gt; (tag-based targeting),&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;automation&lt;/STRONG&gt; (bulk enabling via ARM PATCH),&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;observability&lt;/STRONG&gt; (clear per-server results and a final summary).&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;If you’re trying to standardize operational hygiene across hundreds of Arc machines, tag-scoped enablement like this is one of the cleanest ways to start small, learn safely, and then scale.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Mar 2026 20:38:28 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/bulk-enable-azure-arc-connected-machine-agent-automatic-upgrade/ba-p/4501749</guid>
      <dc:creator>absharan</dc:creator>
      <dc:date>2026-03-12T20:38:28Z</dc:date>
    </item>
    <item>
      <title>Check This Out! (CTO!) Guide (February 2026)</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/check-this-out-cto-guide-february-2026/ba-p/4501272</link>
      <description>&lt;P&gt;&lt;A href="https://techcommunity.microsoft.com/users/tysonpaul/322025" data-lia-auto-title="Member: TysonPaul | Microsoft Community Hub" data-lia-auto-title-active="0" target="_blank"&gt;Member: TysonPaul | Microsoft Community Hub&lt;/A&gt;&lt;/P&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/networkingblog/secure-dns-with-doh-public-preview-for-windows-dns-server/4493935" target="_blank" rel="noopener noreferrer"&gt;Secure DNS with DoH: Public Preview for Windows DNS Server&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/windows-server/blog/networkingblog" target="_blank" rel="noopener noreferrer"&gt;Networking&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/jorgeca%C3%B1as/2838432" target="_blank" rel="noopener noreferrer"&gt;JorgeCañas&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/09/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has launched a public preview of DNS over HTTPS (DoH) for Windows DNS Server, available in the February 2026 update for Windows Server 2025. DoH encrypts DNS queries and responses, enhancing authentication and privacy while maintaining existing server functions. This move aligns with Zero Trust security principles and supports U.S. federal cybersecurity requirements. The feature is disabled by default, is not production-ready, and currently only encrypts client-to-server traffic. Feedback is encouraged during the preview phase, with future updates planned for upstream encryption support.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azureinfrastructureblog/azure-blob-tiering-clarity-truths-and-practical-guidance-for-architects/4493156" target="_blank" rel="noopener noreferrer"&gt;Azure Blob Tiering: Clarity, Truths, and Practical Guidance for Architects&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azureinfrastructureblog" target="_blank" rel="noopener noreferrer"&gt;Azure Infrastructure&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/nehatiwari1994/2009532" target="_blank" rel="noopener noreferrer"&gt;nehatiwari1994&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/06/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article explains Azure Blob Storage tiering for backup architects, debunking common misconceptions about tier performance and access. Hot, Cool, and Cold tiers are online and offer immediate data access; minimum retention is a billing rule, not a technical limit. Archive tier requires rehydration before restores. Restore speed depends on throughput architecture, not tier. Cost is influenced by both storage and access patterns. Effective tiering strategies and lifecycle policies are essential for scaling backup repositories from terabytes to petabytes, ensuring operational safety and cost control. The article offers practical design recommendations and clarifies Azure tier behaviors.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azureinfrastructureblog/aks-tenant-migration-considerations-and-approach/4415198" target="_blank" rel="noopener noreferrer"&gt;AKS Tenant Migration: Considerations and Approach&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azureinfrastructureblog" target="_blank" rel="noopener noreferrer"&gt;Azure Infrastructure&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/soumyashet05/3024853" target="_blank" rel="noopener noreferrer"&gt;SoumyaShet05&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/05/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; 321: No summary could be found for article: [AKS Tenant Migration: Considerations and Approach] [https://techcommunity.microsoft.com/blog/azureinfrastructureblog/aks-tenant-migration-considerations-and-approach/4415198].&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/what%E2%80%99s-new-in-finops-toolkit-13-%E2%80%93-january-2026/4493090" target="_blank" rel="noopener noreferrer"&gt;What’s new in FinOps toolkit 13 – January 2026&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/finopsblog" target="_blank" rel="noopener noreferrer"&gt;FinOps&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/michael_flanakin/3099145" target="_blank" rel="noopener noreferrer"&gt;Michael_Flanakin&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/09/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; FinOps toolkit 13 (January 2026) delivers stability and usability improvements for cloud cost management, including enhanced documentation, Key Vault purge protection options, Power BI report fixes, and streamlined Cost Management exports via PowerShell with Parquet support. The release strengthens security, reliability, and extensibility for enterprise-scale deployments. Community engagement is emphasized with new office hours. Future plans include AI-driven automation, expanded recommendations, and premium support services. The toolkit remains open-source and continues to evolve with community contributions and ongoing enhancements across Microsoft Cloud environments.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/askds/reading-gpsvc-like-a-crime-novel/4497135" target="_blank" rel="noopener noreferrer"&gt;Reading GPSVC Like a Crime Novel&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/windows-server/blog/askds" target="_blank" rel="noopener noreferrer"&gt;Ask the Directory Services Team&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/chris_cartwright/721086" target="_blank" rel="noopener noreferrer"&gt;Chris_Cartwright&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/25/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article, "Reading GPSVC Like a Crime Novel," explains how to troubleshoot Group Policy issues using the enhanced GPSVC debug log in modern Windows 11 versions. It details the two core phases of Group Policy processing, emphasizes the importance of following log threads, and highlights the benefit of new date and time stamps for better correlation with other events. The post also covers enabling verbose logging, interpreting log entries, and using additional tools like TSS for deeper analysis, ultimately making GPSVC logs more powerful for diagnosing Group Policy problems.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/askds/what%E2%80%99s-new-in-windows-group-policy-preferences-debug-logging/4497060" target="_blank" rel="noopener noreferrer"&gt;What’s New in Windows Group Policy Preferences Debug Logging&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/windows-server/blog/askds" target="_blank" rel="noopener noreferrer"&gt;Ask the Directory Services Team&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/tagoren/1668477" target="_blank" rel="noopener noreferrer"&gt;TagoreN&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/27/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article outlines enhancements to Windows Group Policy Preferences (GPP) debug logging in Windows 11 versions 24H2 and 25H2 (from February 2026 preview updates). Administrators can now enable verbose GPP debug logging directly via Local Group Policy, not just domain-based GPOs. This change simplifies troubleshooting, reduces reliance on domain controllers, and allows easier, flexible diagnostic workflows on client devices. The article explains how to configure logging settings, log locations, and necessary permissions, highlighting a significant quality-of-life improvement for IT professionals managing GPP issues.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azuremigrationblog/azure-landing-zone-and-compliance-for-banks-indian-banks/4491951" target="_blank" rel="noopener noreferrer"&gt;Azure Landing Zone and compliance for Banks (Indian Banks)&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azuremigrationblog" target="_blank" rel="noopener noreferrer"&gt;Azure Migration and Modernization&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/srhulsus/2739562" target="_blank" rel="noopener noreferrer"&gt;srhulsus&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/12/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; **Summary:** Azure Landing Zone (ALZ) provides Indian banks with a secure, compliant, and auditable cloud foundation, aligning with RBI and global standards (ISO 27001, PCI-DSS, FFIEC). It features subscription isolation, centralized IAM, robust network and data security, mandatory encryption, continuous monitoring, and business continuity controls. ALZ ensures India data residency, policy automation, regulatory audit support, and secure exit management. The architecture is regulator-accepted and proven by major banks, supporting governance, risk, and compliance mandates for hosting sensitive, regulated banking workloads on Azure.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azuremigrationblog/migrating-workloads-from-aws-to-azure-a-structured-approach-for-cloud-architects/4495227" target="_blank" rel="noopener noreferrer"&gt;Migrating Workloads from AWS to Azure: A Structured Approach for Cloud Architects&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azuremigrationblog" target="_blank" rel="noopener noreferrer"&gt;Azure Migration and Modernization&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/rhack/2854208" target="_blank" rel="noopener noreferrer"&gt;rhack&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/18/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article outlines a structured, five-phase approach for migrating workloads from AWS to Azure, emphasizing a “like-for-like” architecture to minimize risk and complexity. Key phases include planning, preparation, execution, evaluation, and decommissioning, with blue/green deployment recommended for risk reduction. Success hinges on comprehensive documentation, stakeholder alignment, phased validation, and having the current workload team lead the migration. External partners can assist with planning but should not execute cutovers. Once stability on Azure is achieved, optimization can begin. Thorough preparation and collaboration are essential for a confident, disruption-free migration.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/intunecustomersuccess/how-to-enable-https-support-for-microsoft-connected-cache-for-enterprise-and-edu/4496173" target="_blank" rel="noopener noreferrer"&gt;How to enable HTTPS support for Microsoft Connected Cache for Enterprise and Education&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/microsoftintune/blog/intunecustomersuccess" target="_blank" rel="noopener noreferrer"&gt;Intune Customer Success&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/intune_support_team/226779" target="_blank" rel="noopener noreferrer"&gt;Intune_Support_Team&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/20/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Starting June 16, 2026, Intune will require HTTPS for Microsoft Connected Cache nodes serving Win32 apps. To retain bandwidth savings and localize content, admins must configure HTTPS on their Connected Cache servers by preparing a TLS certificate, generating a CSR on the node, signing it with a CA, importing the certificate, and validating HTTPS. The process is similar for Windows and Linux hosts. Regular certificate monitoring and renewal are necessary. Without HTTPS, devices will fall back to CDN. Improvements and fixes are underway, and early setup ensures readiness for the upcoming enforcement.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/intunecustomersuccess/support-tip-resolve-device-noncompliance-with-mobile-threat-defense-partner-apps/4491669" target="_blank" rel="noopener noreferrer"&gt;Support tip: Resolve device noncompliance with Mobile Threat Defense partner apps&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/microsoftintune/blog/intunecustomersuccess" target="_blank" rel="noopener noreferrer"&gt;Intune Customer Success&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/intune_support_team/226779" target="_blank" rel="noopener noreferrer"&gt;Intune_Support_Team&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/02/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article explains how to resolve device noncompliance issues in Microsoft Intune when using Mobile Threat Defense (MTD) partner apps like Microsoft Defender for Endpoint. It outlines steps for users to restore compliance, including installing or activating the MTD app, refreshing the app’s connection, or reinstalling it. It also details simplified remediation for iOS/iPadOS and steps to refresh the MTD connection on Android if sign-out is blocked. The guidance helps organizations ensure device compliance and secure access to work or school resources while reducing support overhead.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurearcblog/announcing-public-preview-simplified-machine-provisioning-for-azure-local/4496811" target="_blank" rel="noopener noreferrer"&gt;Announcing Public Preview: Simplified Machine Provisioning for Azure Local&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurearcblog" target="_blank" rel="noopener noreferrer"&gt;Azure Arc&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/pragyadwivedi/1475983" target="_blank" rel="noopener noreferrer"&gt;PragyaDwivedi&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/26/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has announced the public preview of Simplified Machine Provisioning for Azure Local, streamlining edge infrastructure deployment by shifting configuration to Azure. IT teams can now centrally define and automate provisioning using Azure Arc, with minimal onsite interaction—staff only need to rack, power on hardware, and use a prepared USB. Built on the FIDO Device Onboarding standard, this approach ensures secure, consistent device onboarding and management at scale, with end-to-end deployment visibility. This new process enables faster, less error-prone deployments, allowing organizations to efficiently provision and manage Azure Local infrastructure across multiple sites.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurenetworkingblog/unlock-outbound-traffic-insights-with-azure-standardv2-nat-gateway-flow-logs/4493138" target="_blank" rel="noopener noreferrer"&gt;Unlock outbound traffic insights with Azure StandardV2 NAT Gateway flow logs&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurenetworkingblog" target="_blank" rel="noopener noreferrer"&gt;Azure Networking&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/cozhang/2733179" target="_blank" rel="noopener noreferrer"&gt;cozhang&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/06/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article introduces the Azure StandardV2 NAT Gateway, highlighting new features such as zone-redundancy, enhanced throughput, dual-stack IP support, and the availability of flow logs. Flow logs provide detailed outbound traffic data, improving security, compliance, and troubleshooting. They help monitor traffic patterns, identify issues like connection drops, and optimize network architecture. The article explains enabling and using flow logs for diagnostics, emphasizing their value in validating connectivity and auditing outbound flows, and encourages users to leverage these insights for resilient Azure deployments.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/itopstalkblog/migration-modernization--agentic-tools/4497193" target="_blank" rel="noopener noreferrer"&gt;Migration, Modernization &amp;amp; Agentic Tools&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/itopstalk/blog/itopstalkblog" target="_blank" rel="noopener noreferrer"&gt;ITOps Talk&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/orinthomas/251291" target="_blank" rel="noopener noreferrer"&gt;OrinThomas&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/25/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article discusses how agentic tools are transforming cloud migration and modernization by introducing autonomy, continuous optimization, and context-aware decision-making. Rather than a one-time process, migration becomes an ongoing, self-improving system with tools like Azure Copilot and GitHub Copilot. These tools automate environment discovery, recommend modernization paths, execute migrations, validate and optimize workloads, and ensure governance. They classify workloads, automate migration waves, and continuously enhance cost, performance, security, and compliance, reducing manual effort and errors while enabling safe, efficient, and policy-driven cloud transitions.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/itopstalkblog/automating-large%E2%80%91scale-data-management-with-azure-storage-actions/4496766" target="_blank" rel="noopener noreferrer"&gt;Automating Large‑Scale Data Management with Azure Storage Actions&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/itopstalk/blog/itopstalkblog" target="_blank" rel="noopener noreferrer"&gt;ITOps Talk&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/1nataraj/1439120" target="_blank" rel="noopener noreferrer"&gt;1Nataraj&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/25/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Storage Actions is a fully managed, serverless automation platform that enables customers to automate large-scale data management tasks—such as tiering, tagging, deletion, and applying immutability policies—across Azure Blob Storage and Data Lake Storage without custom code or infrastructure. It uses reusable, condition-based storage tasks and assignments, supporting compliance, cost optimization, and operational efficiency. The platform provides built-in monitoring, auditing, and preview features, making it suitable for scenarios requiring traceability. Common use cases include regulatory compliance, cost control, and metadata management across industries like finance, airlines, and manufacturing.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurearchitectureblog/securing-a-multi-agent-ai-solution-focused-on-user-context--the-complexities-of-/4493308" target="_blank" rel="noopener noreferrer"&gt;Securing A Multi-Agent AI Solution Focused on User Context &amp;amp; the Complexities of On-Behalf-Of.&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurearchitectureblog" target="_blank" rel="noopener noreferrer"&gt;Azure Architecture&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/charles_chukwudozie/1397778" target="_blank" rel="noopener noreferrer"&gt;Charles_Chukwudozie&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/11/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article outlines how an enterprise-grade multi-agent AI system was designed to securely preserve user identity and enforce access controls when AI agents interact with backend services like Databricks. By implementing Microsoft Entra ID’s On-Behalf-Of (OBO) flow, each AI agent operates strictly within the authenticated user’s permissions, maintaining RBAC policies and an audit trail. The solution uses a custom OAuth provider, per-user agent instances, and human-in-the-loop approval for sensitive operations, aligning with Zero Trust principles and ensuring robust AI governance for enterprise applications.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurearchitectureblog/reference-architecture-for-highly-available-multi-region-azure-kubernetes-servic/4490479" target="_blank" rel="noopener noreferrer"&gt;Reference Architecture for Highly Available Multi-Region Azure Kubernetes Service (AKS)&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurearchitectureblog" target="_blank" rel="noopener noreferrer"&gt;Azure Architecture&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/rgarofalo/3339583" target="_blank" rel="noopener noreferrer"&gt;rgarofalo&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/03/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; This article presents a reference architecture for deploying Azure Kubernetes Service (AKS) across multiple Azure regions to maximize availability and resilience. It compares active/active, active/passive, and deployment stamp patterns, detailing trade-offs in availability, complexity, and cost. Key components include Azure Front Door for global routing, geo-replicated data services, centralized monitoring, and consistent security. The article emphasizes clear design choices, regular testing, and operational preparedness, highlighting that multi-region resilience requires coordinated patterns, not a simple switch, and should align with business RTO/RPO objectives and operational maturity.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurestorageblog/public-preview-restrict-usage-of-user-delegation-sas-to-an-entra-id-identity/4497196" target="_blank" rel="noopener noreferrer"&gt;Public Preview: Restrict usage of user delegation SAS to an Entra ID identity&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurestorageblog" target="_blank" rel="noopener noreferrer"&gt;Azure Storage&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/ellievail/3335667" target="_blank" rel="noopener noreferrer"&gt;ellievail&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/26/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has announced the public preview of user-bound user delegation SAS for Azure Storage, enhancing security by restricting SAS token usage to a specific Microsoft Entra ID identity. This extension of user delegation SAS ensures only the designated user can access storage resources, reducing the risk of unintended access. The feature is available at no additional cost in all public regions and supports cross-tenant scenarios. It integrates with existing Azure RBAC and is accessible via REST APIs, SDKs, PowerShell, and CLI. Setup involves assigning the correct roles, obtaining user IDs, and generating the SAS token.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurestorageblog/azure-migrate-now-supporting-premium-ssd-v2-ultra-and-zrs-disks-as-targets/4495332" target="_blank" rel="noopener noreferrer"&gt;Azure Migrate: Now Supporting Premium SSD V2, Ultra and ZRS Disks as Targets&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurestorageblog" target="_blank" rel="noopener noreferrer"&gt;Azure Storage&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/lakshya_jalan/3335140" target="_blank" rel="noopener noreferrer"&gt;Lakshya_Jalan&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/18/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; 321: No summary could be found for article: [Azure Migrate: Now Supporting Premium SSD V2, Ultra and ZRS Disks as Targets] [https://techcommunity.microsoft.com/blog/azurestorageblog/azure-migrate-now-supporting-premium-ssd-v2-ultra-and-zrs-disks-as-targets/4495332].&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/skills-hub-blog/bringing-ai-fluency-to-every-corner-of-the-organization-even-yours/4494105" target="_blank" rel="noopener noreferrer"&gt;Bringing AI fluency to every corner of the organization (even yours!)&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/microsoftlearn/blog/microsoftlearnblog" target="_blank" rel="noopener noreferrer"&gt;Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/ashleymastershall/2703917" target="_blank" rel="noopener noreferrer"&gt;AshleyMastersHall&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/19/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article emphasizes the importance of AI fluency for all roles within organizations, likening AI’s impact to the transformative effect of GPS on navigation. It defines AI fluency as understanding and effectively using generative AI in care tasks, now a critical skill for the modern workplace. The author provides practical, approachable steps to integrate AI into daily workflows, recommends starting small, and highlights Microsoft’s AI Skills Navigator as a resource. The core message: AI is already changing work, and building fluency—starting with familiar tasks—ensures continued relevance and success.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/skills-hub-blog/microsoft-credentials-roundup-february-2026-edition/3666867" target="_blank" rel="noopener noreferrer"&gt;Microsoft Credentials roundup: February 2026 edition&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/microsoftlearn/blog/microsoftlearnblog" target="_blank" rel="noopener noreferrer"&gt;Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/pujaa/935445" target="_blank" rel="noopener noreferrer"&gt;PujaA&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/26/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft’s February 2026 Credentials roundup introduces four new AI-focused Certifications and six new Applied Skills, targeting both technical and business professionals. These credentials validate expertise in AI integration, Copilot, and agent solutions, enhancing career prospects in an AI-powered workplace. Applied Skills offer quick, practical assessments in real-world AI tasks. Several older Certifications and Applied Skills are being retired, reflecting Microsoft’s ongoing commitment to current, relevant skills. Additional AI-focused updates are planned for March 2026 and beyond, further expanding learning and credentialing opportunities in AI and cloud technologies.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurecompute/public-preview-automatic-zone-balance-for-virtual-machine-scale-sets/4494476" target="_blank" rel="noopener noreferrer"&gt;Public Preview: Automatic zone balance for Virtual Machine Scale Sets&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurecompute" target="_blank" rel="noopener noreferrer"&gt;Azure Compute&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/hilarywang/1637159" target="_blank" rel="noopener noreferrer"&gt;HilaryWang&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/17/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure has introduced the public preview of automatic zone balance for Virtual Machine Scale Sets, which ensures VMs are evenly distributed across availability zones with no manual intervention. This feature continuously monitors and rebalances VMs, minimizing the impact of zone failures and maintaining optimal resiliency. It uses a create-before-delete approach with health checks and built-in safety measures, reducing operational overhead and ensuring workload stability. Automatic instance repairs are enabled by default. To use this feature, register for the preview, meet prerequisites, and enable it via the Azure portal, CLI, PowerShell, or REST API.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azurecompute/azure-automated-virtual-machine-recovery-minimizing-downtime/4483166" target="_blank" rel="noopener noreferrer"&gt;Azure Automated Virtual Machine Recovery: Minimizing Downtime&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azurecompute" target="_blank" rel="noopener noreferrer"&gt;Azure Compute&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/jon_andoni_baranda/3305512" target="_blank" rel="noopener noreferrer"&gt;Jon_Andoni_Baranda&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/04/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Automated Virtual Machine Recovery is a built-in Azure feature designed to minimize VM downtime by automatically detecting, diagnosing, and mitigating failures within seconds, without customer intervention. It operates continuously, leveraging multiple detection mechanisms and optimized recovery paths, ensuring business continuity and consistent SLA compliance. Recovery Event Annotations provide deep visibility into the recovery process, helping identify bottlenecks and improve reliability. Over the past 18 months, this system has halved average VM downtime, empowering customers to confidently run resilient applications with reduced risk of service disruption and financial loss. No setup is required; all Azure VMs benefit automatically.&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;
&lt;DIV class="card"&gt;
&lt;H2&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azuretoolsblog/azure-cli-windows-msi-upgrade-issue-root-cause-mitigation-and-performance-improv/4491691" target="_blank" rel="noopener noreferrer"&gt;Azure CLI Windows MSI Upgrade Issue: Root Cause, Mitigation, and Performance Improvements&lt;/A&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Team Blog:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/category/azure/blog/azuretoolsblog" target="_blank" rel="noopener noreferrer"&gt;Azure Tools&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/alex-wdy/1467559" target="_blank" rel="noopener noreferrer"&gt;Alex-wdy&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 02/03/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt;&lt;/P&gt;
&lt;IMG style="max-width: 10%; height: auto;" src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHtQTFRFAAAA8lAi8lAi8lAi8lAif7oAf7oAf7oAf7oA8lAi8lAi8lAif7oAf7oAf7oA8lAi8lAif7oAf7oA8lAif7oAAaTvAaTvAaTvAaTv/7kB/7kB/7kB/7kBAaTvAaTvAaTv/7kB/7kB/7kBAaTvAaTv/7kB/7kBAaTv/7kBfMz9mwAAACl0Uk5TADt7ag4Oans7/90eHt3/wBoawAMDDh4aAwMaHg5q3cDA3Wp7//97OzspjeVtAAAAlElEQVR4nO3WqwqAQBSEYY+uWiyCBm/J4Pu/jRhMBi8IFsHLCoZ9gCkbRGby8OVfHHuTD1sCQBHtw89hLDdE1h4h6zxp0aJFixYtWrT+bXnA8mWL5QbWZSyFLG9NHmTd9hszhY05ZrAxB2NVsEWnPECf3lg1+F3HXAQKWB0tWrRo0aJFi9a/rUYjaymR5bb2G/OL1guM9e5M8yBd4gAAAABJRU5ErkJggg==" alt="Embedded Image" /&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 11 Mar 2026 15:55:52 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/check-this-out-cto-guide-february-2026/ba-p/4501272</guid>
      <dc:creator>TysonPaul</dc:creator>
      <dc:date>2026-03-11T15:55:52Z</dc:date>
    </item>
    <item>
      <title>The Nightmare of renewing NDES Enrollment Agent Certificates</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/the-nightmare-of-renewing-ndes-enrollment-agent-certificates/ba-p/4496052</link>
      <description>&lt;H1&gt;NDES EA Certificates – Quick Recap&lt;/H1&gt;
&lt;P&gt;By default, three version 1 certificate templates are assigned to your Certification Authority by the configuration routine of the NDES service:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;CEP Encryption&lt;/STRONG&gt; - Used by the device to encrypt communication with NDES&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Exchange Enrollment Agent (Offline Request) &lt;/STRONG&gt;- Used to request certificates on behalf of another subject&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;IPSec (Offline request)&amp;nbsp;&lt;/STRONG&gt;- Default template to enroll certificates to devices&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;All certificate templates from the list above are &lt;STRONG&gt;version 1 certificate templates&lt;/STRONG&gt;. Number 1 and 2 share the common characteristic of having the Extended Key Usage (EKU) extension set to include the OID 1.3.6.1.4.1.311.20.2.1, which corresponds to “&lt;STRONG&gt;Certificate Request Agent&lt;/STRONG&gt;”. In this article template number 1 and 2 (from the list above) will be referred to as “NDES Enrollment Agent certificate(s) templates”.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 100%; border-width: 1px;"&gt;&lt;colgroup&gt;&lt;col style="width: 99.9074%" /&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="lia-background-color-5 lia-border-color-10 lia-border-style-solid"&gt;
&lt;P&gt;Version 1 certificate templates originated with Windows 2000 and have functional and security limitations. Since the autoenrollment feature did not exist at that time, these templates do not support autoenrollment and instead rely on Automatic Certificate Request Settings, a legacy mechanism that is no longer recommended. Furthermore, the only property that can be modified on a version 1 template is the set of assigned permissions that controls access to the template. Find more details in&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/windows-server/identity/ad-cs/certificate-template-concepts" target="_blank" rel="noopener"&gt;Certificate Template Concepts&lt;/A&gt;.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 100%; border-width: 1px;"&gt;&lt;colgroup&gt;&lt;col style="width: 99.9074%" /&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="lia-background-color-5 lia-border-color-10 lia-border-style-solid"&gt;
&lt;P&gt;Certificate Enrollment (or Request) Agents were designed to enable trusted principals to perform certificate enrollment on behalf of other users or devices (aka Enroll-on-behalf). NDES is a concrete implementation of this concept as it enrolls certificates for entities other than itself.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;The enrollment of the NDES EA certificates based on certificate templates number 1 and 2 (see above) during NDES configuration is hard‑coded in the configuration routine. This design choice from many years ago introduces several challenges:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Security: in case you misconfigure the default NDES certificate templates security settings, they are vulnerable to &lt;A href="https://msrc.microsoft.com/update-guide/advisory/CVE-2024-49019" target="_blank" rel="noopener"&gt;CVE-2024-49019.&lt;/A&gt; A detailed explanation of this vulnerability is out of scope here; however, as a general best practice, &lt;STRONG&gt;certificate templates version 1 should not be used&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;The default “Exchange Enrollment Agent (Offline request)” certificate template (default template number 2. as per above) is a user template and the installation routine “somehow magically” imports this certificate into the machine store. This makes automatic renewal challenging...&lt;/LI&gt;
&lt;LI&gt;Version 1 certificate templates have significant functional limitations, as they cannot be modified (except for security settings):
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;The validity period (2 years) cannot be changed. For NDES EA certificate templates the validity period is 2 years.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;The template’s CSP&lt;A href="#community--1-_ftn1" target="_blank" rel="noopener" name="_ftnref1"&gt;[1]&lt;/A&gt; cannot be modified. As a result, NDES Enrollment Agent certificates cannot be enrolled in a Hardware Security Module (HSM).&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Version 1 templates do not support Autoenrollment. Consequently, NDES service certificates therefore must be renewed manually. When the Enrollment Agent certificates expire, NDES stops working.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;Version 1 templates lack template-level access control and modern enrollment safeguards (e.g. Certificate Manager Approval).&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;A href="#community--1-_ftnref1" target="_blank" rel="noopener" name="_ftn1"&gt;[1]&lt;/A&gt; NDES does not support KSP for EA certificates.&lt;/P&gt;
&lt;P&gt;As you can see, there are several reasonable arguments to replace the default NDES service certificate templates.&lt;/P&gt;
&lt;H1&gt;Configuring custom NDES Service Certificate Templates&lt;/H1&gt;
&lt;P&gt;Generally, there are two ways of creating some kind of “fire and forget” certificate templates for NDES:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Common &lt;STRONG&gt;Windows Active Directory Autoenrollment&lt;/STRONG&gt; can be used if there is no need for a custom name/subject in the request agent certificates.&lt;/LI&gt;
&lt;LI&gt;We can use&lt;STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/server-2012-pki-key-based-renewal-explained/256275" target="_blank" rel="noopener"&gt;key-based renewal (KBR)&lt;/A&gt;&lt;/STRONG&gt; which allows us to create custom subjects in the certificates even together with automatic renewals.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The NDES service will not verify the certificates’ subject information. It will just verify that the certificates have “request Agent” EKU (1.3.6.1.4.1.311.20.2.1).&lt;/P&gt;
&lt;P&gt;In a nutshell, you will need to duplicate two version 1 certificate templates and modify those to fit your needs. See table below for detailed description of settings.&lt;/P&gt;
&lt;P&gt;In addition to that, there are a few more things to consider:&lt;/P&gt;
&lt;H2&gt;NDES service account&lt;/H2&gt;
&lt;P&gt;There are different options for creating the SCEP IIS App Pool identity. As Microsoft recommends using a &lt;STRONG&gt;hardened Tier 0 domain user account&lt;/STRONG&gt;, this article will focus on this configuration. By default, domain user accounts do not have any permissions on private keys in the computer certificate store. Therefore, you must grant READ permissions to the NDES service certificate private keys either manually or in the certificate template configuration. This can be configured on the &lt;STRONG&gt;Request Handling&lt;/STRONG&gt; tab as we will see later in this article.&lt;/P&gt;
&lt;H2&gt;(Source) Certificate Templates to duplicate&lt;/H2&gt;
&lt;P&gt;Certificate templates include a flag that is hidden from the GUI and determines whether a template is treated as a user or a computer certificate template. If you are curious, the command &lt;EM&gt;certutil -ds -v “CEPEncryption” &lt;/EM&gt;will make it visible. Look out for CT_FLAG_MACHINE_TYPE in the output. This distinction is important in our scenario because the &lt;STRONG&gt;Exchange Enrollment Agent (Offline Request)&lt;/STRONG&gt; template does &lt;STRONG&gt;not&lt;/STRONG&gt; include this flag. As a result, certificates based on this template can only be enrolled into the &lt;STRONG&gt;user certificate store&lt;/STRONG&gt;. To ensure the new template replacing the Exchange Enrollment Agent (Offline Request) template supports enrollment into the &lt;STRONG&gt;computer certificate store&lt;/STRONG&gt;, we use the &lt;STRONG&gt;Enrollment Agent (Computer)&lt;/STRONG&gt; default template as the source template.&lt;/P&gt;
&lt;H3&gt;Subject and SAN for NDES Service Certificates&lt;/H3&gt;
&lt;P&gt;Subject/SAN can either be built from Active Directory or provided in the request.&lt;/P&gt;
&lt;H4&gt;a) Build (subject) from this Active Directory information (option 1 from above – using common &lt;STRONG&gt;autoenrollment&lt;/STRONG&gt;)&lt;/H4&gt;
&lt;P&gt;Using Common Name and DNS name is common practice. Subject and/or SAN will simply include the NDES computer account name.&lt;/P&gt;
&lt;P&gt;As this may not be appropriate in all scenarios, we also have option...&lt;/P&gt;
&lt;H4&gt;b) Supply (subject) in the request (option 2 from above – using &lt;STRONG&gt;key-based renewal&lt;/STRONG&gt;)&lt;/H4&gt;
&lt;P&gt;While this option gives you the freedom of choosing a proper Enrollment Agent subject information and SAN, it comes at the price of some additional configuration requirements to allow secure and automatic renewal of NDES service certificates. Using the &lt;A href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/server-2012-pki-key-based-renewal-explained/256275" target="_blank" rel="noopener"&gt;key based renewal&lt;/A&gt; feature, we will have to initially enroll the NDES service certificates manually. Renewal will happen automatically. To implement this, both NDES service certificate templates must be configured as described below:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Subject Name&lt;/STRONG&gt; tab&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Issuance Requirements&lt;/STRONG&gt; tab&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Extensions&lt;/STRONG&gt; tab&lt;/P&gt;
&lt;P&gt;“Certificate Request Agent” is the only Application Policy required.&lt;/P&gt;
&lt;P&gt;Please note that “Client Authentication” is required as an additional Application Policy in case you use CEP and CES for key based renewal.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Request Handling&lt;/STRONG&gt; and &lt;STRONG&gt;Security&amp;nbsp;&lt;/STRONG&gt;tab&lt;/P&gt;
&lt;img /&gt;&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;
&lt;H3&gt;NDES EA Certificate Template Configuration Summary&lt;/H3&gt;
&lt;table border="1" style="width: 100%; height: 104.702px; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr style="height: 34.9006px;"&gt;&lt;td style="height: 34.9006px;"&gt;Default NDES service certificate template&lt;/td&gt;&lt;td style="height: 34.9006px;"&gt;CEP Encryption&lt;/td&gt;&lt;td style="height: 34.9006px;"&gt;Exchange Enrollment Agent (Offline Request)&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 34.9006px;"&gt;&lt;td style="height: 34.9006px;"&gt;Template to duplicate&lt;/td&gt;&lt;td style="height: 34.9006px;"&gt;CEP Encryption&lt;/td&gt;&lt;td style="height: 34.9006px;"&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-8"&gt;Enrollment Agent (Computer)&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 34.9006px;"&gt;&lt;td style="height: 34.9006px;"&gt;Compatibility settings&lt;/td&gt;&lt;td colspan="2" style="height: 34.9006px;"&gt;
&lt;UL&gt;
&lt;LI&gt;Certification Authority: Windows Server 2016&lt;/LI&gt;
&lt;LI&gt;Certificate recipient: Windows 10/Windows Server 2016&lt;/LI&gt;
&lt;/UL&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;General&lt;/td&gt;&lt;td colspan="2"&gt;
&lt;P&gt;Provide a name for the new certificate template.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Request Handling&lt;/td&gt;&lt;td colspan="2"&gt;
&lt;P&gt;In case the SCEP AppPool is configured to run in the security context of a domain account, you must grant READ access to the private key to the NDES service account. Otherwise, no changes are required on this tab.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cryptography&lt;/td&gt;&lt;td colspan="2"&gt;
&lt;P&gt;If available, configure an HSM backed CSP or adjust the key length as required. Note that Key Storage Providers (KSPs) are not supported for NDES service certificates.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Subject Name&lt;/td&gt;&lt;td colspan="2"&gt;
&lt;P&gt;Either choose &lt;STRONG&gt;Build&lt;/STRONG&gt; &lt;STRONG&gt;from this Active Directory information &lt;/STRONG&gt;or choose &lt;STRONG&gt;Supply in the request + key-based renewal.&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Issuance Requirements&lt;/td&gt;&lt;td colspan="2"&gt;
&lt;P&gt;Because of NDES’ Enroll-on-behalf capability described above, the NDES service certificates are very powerful. &lt;STRONG&gt;We therefore recommend enforcing CA certificate manager approval&lt;/STRONG&gt; for enrollment. Please keep in mind that this will interrupt the automatic renewal process of the certificate if not using KBR.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Extensions&lt;/td&gt;&lt;td colspan="2"&gt;
&lt;P&gt;The default Application Policy is &lt;STRONG&gt;Certificate Request Agent&lt;/STRONG&gt;. Do not change it.&lt;/P&gt;
&lt;P&gt;In case key based renewal is enabled, Client Authentication must be added as an Application Policy.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Security&lt;/td&gt;&lt;td colspan="2"&gt;
&lt;P&gt;Grant &lt;STRONG&gt;ENROLL&lt;/STRONG&gt; and &lt;STRONG&gt;AUTOENROLL*&lt;/STRONG&gt;&lt;STRONG&gt; &lt;/STRONG&gt;permissions to the &lt;STRONG&gt;NDES Computer account&lt;/STRONG&gt; only.&lt;BR /&gt;* Autoenrollment only makes sense for option a - Autoenrollment&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;Housekeeping&lt;/H2&gt;
&lt;P&gt;After new EA certificates have been enrolled…&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Unassign version 1 certificate templates from all CAs&lt;/LI&gt;
&lt;LI&gt;Revoke all previously issued NDES EA certificates and remove them from NDES server.&lt;/LI&gt;
&lt;LI&gt;Restart NDES service (execute to reload the web service and certificates)&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Final Thoughts&lt;/H2&gt;
&lt;P&gt;NDES Enrollment Agent certificates are highly privileged and should never rely on legacy version 1 templates. Replacing them with custom templates that support HSMs and secure automatic renewal significantly reduces outage risk and closes known security gaps.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 09 Mar 2026 07:28:55 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/the-nightmare-of-renewing-ndes-enrollment-agent-certificates/ba-p/4496052</guid>
      <dc:creator>DagmarHeidecker</dc:creator>
      <dc:date>2026-03-09T07:28:55Z</dc:date>
    </item>
  </channel>
</rss>

