<?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>Sun, 23 Aug 2026 16:19:32 GMT</pubDate>
    <dc:creator>cis</dc:creator>
    <dc:date>2026-08-23T16:19:32Z</dc:date>
    <item>
      <title>Check This Out! (CTO!) Guide (August 2026)</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/check-this-out-cto-guide-august-2026/ba-p/4543597</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/azurevirtualdesktopblog/enhanced-host-pool-management-for-azure-virtual-desktop-is-now-generally-availab/4534612" target="_blank" rel="noopener noreferrer"&gt;Enhanced host pool management for Azure Virtual Desktop 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/neocai/3391345" target="_blank" rel="noopener noreferrer"&gt;NeoCai&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/09/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Virtual Desktop has introduced enhanced host pool management, now generally available, featuring session host configuration and update, dynamic autoscale, and ephemeral OS disks. These improvements streamline management, reduce operational overhead, and support secure, reliable, and scalable virtual environments. Session host configuration enables centralized settings and easy updates, ephemeral OS disks improve performance and rapid refresh for stateless workloads, and dynamic autoscale optimizes resource allocation and cost efficiency based on demand. Administrators can easily configure these features through the Azure portal for more efficient and consistent host pool management.&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/how-scbx-built-ai-literacy-at-scale-and-made-ai-part-of-daily-work/4491678" target="_blank" rel="noopener noreferrer"&gt;How SCBX built AI literacy at scale and made AI part of daily work&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/toddminor/3270583" target="_blank" rel="noopener noreferrer"&gt;ToddMinor&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/30/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; SCBX partnered with Trainocate and Microsoft to boost AI literacy and embed AI in daily work across thousands of employees. Through a phased, role-based training approach—combining foundational learning, practical application, and advanced technical tracks—SCBX ensured adoption at scale while maintaining governance standards. Over 15,000 participants engaged, with measurable gains in productivity and satisfaction as teams automated repetitive tasks and applied AI in their roles. SCBX’s experience highlights the value of structured, outcome-focused skilling to drive AI readiness and business transformation across a regulated enterprise.&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/new-microsoft-365-certified-ai-services-administrator-associate-certification/4494123" target="_blank" rel="noopener noreferrer"&gt;New Microsoft 365 Certified: AI Services Administrator Associate Certification&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/libertymunson/50590" target="_blank" rel="noopener noreferrer"&gt;LibertyMunson&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/28/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has launched the Microsoft 365 Certified: AI Services Administrator Associate certification, validating skills to configure, manage, secure, and optimize Microsoft 365 and AI services like Copilot at enterprise scale. Candidates must pass Exam AB-650 (beta), which is discounted 80% for the first 300 test-takers before August 18, 2026, using code AB-650SkyClub. The certification is designed for experienced Microsoft 365 administrators with knowledge of Entra ID, Defender XDR, and Microsoft Graph PowerShell. Preparation resources and exam details are available online, with general availability expected in October 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/coreinfrastructureandsecurityblog/hunting-local-ai-tools-on-macos-with-microsoft-defender-for-endpoint/4536965" target="_blank" rel="noopener noreferrer"&gt;Hunting Local AI Tools on macOS with Microsoft Defender for Endpoint&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/vytas_boyev/253209" target="_blank" rel="noopener noreferrer"&gt;Vytas_Boyev&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/14/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article discusses emerging security challenges as developers increasingly run AI tools locally on macOS, expanding the attack surface for organizations. It outlines how Microsoft Defender for Endpoint (MDE) can detect and inventory local AI agents, such as Ollama and OpenClaw, using advanced KQL queries for process, file, and network telemetry. Recommendations include establishing a baseline inventory, monitoring new AI tool usage, skill file changes, suspicious behaviors, and external network connections. The article emphasizes a layered, tuned detection strategy, practical limitations, and the importance of visibility over default blocking to manage AI risks 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/azure-database-security-newsletter---july-2026/4534477" target="_blank" rel="noopener noreferrer"&gt;Azure Database Security Newsletter - July 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/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/pietervanhove/310519" target="_blank" rel="noopener noreferrer"&gt;PieterVanhove&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/07/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; **Summary:** The July 2026 Azure Database Security Newsletter highlights the evolving impact of AI agents on database security, emphasizing identity-first access, least privilege, data-aware protection, and continuous monitoring. Key updates include support for AES keys in Transparent Data Encryption, Microsoft Entra server principals for Azure SQL Database, cross-tenant key management for PostgreSQL, and Defender security posture assessments. Best practices urge secure-by-default configurations, data classification, and ongoing vulnerability assessments. The newsletter also features recent blogs, events, and calls to review agent access as AI-driven workloads increase, stressing proactive database security adaptation.&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/agent-governance-is-organizational-readiness/4542517" target="_blank" rel="noopener noreferrer"&gt;Agent governance is organizational readiness&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/auzinahmadi/2669002" target="_blank" rel="noopener noreferrer"&gt;AuzinAhmadi&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/30/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article emphasizes that effective agent governance is essential for scaling AI in healthcare organizations. It argues that success depends less on technology and more on readiness—specifically, whether governance structures ensure agents fit clinical workflows, assign clear accountability, manage risk, and secure stakeholder trust. A governance triad (IT, Legal, Business) is needed to vet, approve, and monitor agents before deployment. A checklist ensures readiness by confirming ownership, data access, measurable outcomes, and shutdown conditions. Ultimately, strong governance—not just technical capability—determines whether AI agents are safely and successfully integrated into healthcare operations.&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/understanding-copilot-risk-mapping-exposure-across-zero-trust-pillars/4534183" target="_blank" rel="noopener noreferrer"&gt;Understanding Copilot Risk: Mapping Exposure Across Zero Trust Pillars&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/auzinahmadi/2669002" target="_blank" rel="noopener noreferrer"&gt;AuzinAhmadi&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/06/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article examines Microsoft 365 Copilot’s impact on organizational data security, highlighting how Copilot accelerates data discovery based on existing user permissions. It maps Copilot-related risks across four Zero Trust pillars—identity, endpoints, apps, and data—emphasizing the importance of access governance, permission hygiene, and data protection. Copilot doesn’t grant new access but amplifies the exposure of overshared or poorly governed content. Organizations should assess who can access Copilot and what data it surfaces, using Zero Trust strategies to identify and mitigate risks before scaling 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/azurearcblog/azure-arc-server-june-forum/4542082" target="_blank" rel="noopener noreferrer"&gt;Azure Arc Server June Forum&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/aurnov_chattopadhyay/1321258" target="_blank" rel="noopener noreferrer"&gt;Aurnov_Chattopadhyay&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/29/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The June 2026 Azure Arc Server Forum covered updates on Arc Server AI Agent integration, new multicloud connectors for GCP and EKS clusters, and ESU timelines for Windows Server 2016 and SQL Server 2016. Attendees received guidance on enrollment and licensing, and were informed about upcoming end-of-support dates. The forum will pause for July and August, resuming in September. Leadership of the community calls is transitioning to Mason Torres, Yunis Hussein, and Meagan McCrory. Registration and agent release notes are available online.&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/plan-for-upcoming-changes-to-extended-security-updates-on-azure-local/4533167" target="_blank" rel="noopener noreferrer"&gt;Plan for Upcoming Changes to Extended Security Updates on 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/sydbruck/1548770" target="_blank" rel="noopener noreferrer"&gt;sydbruck&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/09/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Starting April 1, 2026, Microsoft will implement a uniform pricing model for Extended Security Updates (ESU) for SQL Server and Windows products, regardless of deployment location or purchasing channel. This affects new ESU offerings, such as Windows 10 Enterprise LTSB 2016 and Windows Server 2016, but not existing ESUs. Customers are encouraged to upgrade to newer versions before end of support; further ESU pricing and availability details will be announced. Existing ESUs remain free on Azure Local via Azure Verification for VMs.&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/beyond-the-canvas-the-azure-architecture-diagram-builder-becomes-agent-ready/4534590" target="_blank" rel="noopener noreferrer"&gt;Beyond the Canvas: The Azure Architecture Diagram Builder Becomes Agent-Ready&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/arturoqu/275153" target="_blank" rel="noopener noreferrer"&gt;arturoqu&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/10/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The Azure Architecture Diagram Builder has evolved from a click-based app to an agent-ready platform. Key updates include Architecture Chat for iterative, conversational design, Blueprint Diagrams for whiteboard-style visuals, and support for 14 AI models. The tool now operates as a Model Context Protocol (MCP) server, enabling agents to generate, validate, estimate costs, and render Azure architectures programmatically. Enhancements include deployment guides grounded in Microsoft Learn, cost badges, theme options, and metadata panels. The platform remains open-source, offering evidence-based model comparison and integration for both human users and AI agents.&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/skill-or-sub-agent-choosing-ai-capabilities-you-will-actually-reuse/4542099" target="_blank" rel="noopener noreferrer"&gt;Skill or Sub-Agent. Choosing AI Capabilities You Will Actually Reuse&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/kishorekumarpattabiraman/3426309" target="_blank" rel="noopener noreferrer"&gt;KishoreKumarPattabiraman&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/30/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article advises cloud architects and engineering leaders to prioritize choosing the right AI capability shape—skill or sub-agent—over model selection. Skills are iterative, voice-driven, and require ongoing human involvement, ideal for craft and subjective tasks. Sub-agents handle structured, repeatable work with one-off outputs and minimal human gating. The recommended approach is to match the capability to the work's nature, sometimes combining both, to maximize reuse and effectiveness. Teams should assess iteration, output, blast radius, and frequency before building, avoiding the mistake of forcing all tasks into a single delivery shape.&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/azuregovernanceandmanagementblog/introducing-kubernetes-native-policy-validation-with-cel-and-vap-in-azure-policy/4534585" target="_blank" rel="noopener noreferrer"&gt;Introducing Kubernetes-Native Policy Validation with CEL and VAP in Azure Policy&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/azuregovernanceandmanagementblog" target="_blank" rel="noopener noreferrer"&gt;Azure Governance and Management&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/stevenbucher/1481362" target="_blank" rel="noopener noreferrer"&gt;stevenbucher&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/23/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Policy for Kubernetes now supports Kubernetes-native policy validation using Common Expression Language (CEL) and Validating Admission Policy (VAP) with Gatekeeper integration. This enables faster, in-process policy enforcement directly in the Kubernetes API server, improving reliability and latency over previous OPA Rego-based webhook methods. Users write CEL constraint templates, package them as Azure Policy definitions, and deploy them for governance, audit, and enforcement. This approach enhances compliance tracking and centralized management for AKS clusters running Kubernetes v1.30+, combining native validation logic with Azure Policy’s robust governance capabilities.&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/azuregovernanceandmanagementblog/introducing-compliance-substate-for-azure-policy-exemptions/4541703" target="_blank" rel="noopener noreferrer"&gt;Introducing Compliance Substate for Azure Policy Exemptions!&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/azuregovernanceandmanagementblog" target="_blank" rel="noopener noreferrer"&gt;Azure Governance and Management&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/stevenbucher/1481362" target="_blank" rel="noopener noreferrer"&gt;stevenbucher&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/28/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Policy now introduces a compliance substate for exempted resources, revealing their underlying compliance status even when exemptions are applied. Previously, exemptions hid whether a resource was compliant or not, making audits difficult. Now, resources show "Exempt" plus a substate ("Compliant" or "Non-compliant"), enabling easier exemption management and cleanup. The compliance substate can be viewed in the Azure Policy blade, added as a column, and queried across subscriptions using Azure Resource Graph, improving governance visibility and confidence in policy 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/finopsblog/reservation-exchanges-for-azure-services-covered-by-savings-plans-end-starting-f/4542437" target="_blank" rel="noopener noreferrer"&gt;Reservation exchanges for Azure services covered by savings plans end starting Feb. 1, 2027&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/kyleikeda/849111" target="_blank" rel="noopener noreferrer"&gt;kyleikeda&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/30/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Starting February 1, 2027, Azure reservation exchanges will no longer be available for services covered by savings plans, aligning policies for greater clarity. Impacted services include several compute and database offerings. Existing reservations purchased before this date retain one final exchange right. Reservations remain available for stable workloads, while savings plans offer flexibility for dynamic needs. Instance size flexibility and cancellation policies are unchanged. Customers should review their reservation portfolios and consider savings plans for future flexibility. Policy details may evolve as savings plan coverage expands.&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/introducing-cost-management-and-pricing-toolsets-in-azure-resource-manager-mcp-s/4530710" target="_blank" rel="noopener noreferrer"&gt;Introducing Cost Management and Pricing Toolsets in Azure Resource Manager MCP 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/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/demiajayi/3547892" target="_blank" rel="noopener noreferrer"&gt;demiajayi&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/29/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has integrated Cost Management and Pricing toolsets into Azure Resource Manager MCP, allowing AI agents to access and analyze Azure cost, pricing, budget, and optimization data directly within cloud workflows. This enables users to estimate costs before deployment, track and explain spending, manage budgets, identify savings, and analyze AKS workloads without switching tools. The release provides APIs for querying costs, managing budgets, reviewing savings opportunities, and retrieving pricing details, making cloud operations more cost-aware and efficient. Installation requires VS Code, an Azure account, and specific configuration steps. Future enhancements and feedback opportunities are planned.&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/from-hours-to-minutes-rethinking-microsoft-intune-compliance-reporting-with-the-/4540554" target="_blank" rel="noopener noreferrer"&gt;From hours to minutes: Rethinking Microsoft Intune compliance reporting with the Export API&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; 07/24/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article explains how Microsoft Intune’s Export API dramatically improves compliance reporting for large device fleets. By replacing thousands of per-device Graph API calls with a single bulk export, reporting jobs drop from ~100,000 calls and 2.5 hours runtime to ~15 calls and 15 minutes. The Export API delivers identical data in one file, simplifying maintenance, reducing failure points, and enabling scalability without downstream changes. It’s ideal for scheduled, bulk reports, while traditional endpoints remain best for real-time, single-device queries. Overall, the Export API offers faster, more reliable, and scalable compliance reporting.&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/build-a-patch-strategy-for-today%E2%80%99s-threat-pace-with-microsoft/4535115" target="_blank" rel="noopener noreferrer"&gt;Build a patch strategy for today’s threat pace with Microsoft&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; 07/09/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft outlines a modern patch strategy to address today’s fast-paced threat landscape, leveraging AI and integrated tools like Intune and Microsoft Defender. The approach focuses on three stages: automating updates for quick mitigation, prioritizing remediation based on risk and exposure, and enforcing compliance to contain unpatched vulnerabilities. Intune centralizes management for Windows, Apple, and Android devices, supporting automated updates, risk assessment dashboards, and compliance controls. This operational discipline helps organizations reduce risk, accelerate response times, and maintain secure, up-to-date endpoints across diverse device fleets. Licensing requirements for advanced features vary by Microsoft 365 subscription.&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/azure-elastic-san-pooled-cloud-native-block-storage-that-actually-acts-like-a-sa/4534554" target="_blank" rel="noopener noreferrer"&gt;Azure Elastic SAN: Pooled, Cloud-Native Block Storage That Actually Acts Like a SAN&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/pierre_roman/140097" target="_blank" rel="noopener noreferrer"&gt;Pierre_Roman&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/17/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Elastic SAN is Azure’s fully managed, cloud-native SAN storage, offering pooled block storage accessible via iSCSI. It enables IT pros to provision combined capacity and performance, dynamically sharing resources across multiple workloads, reducing over-provisioning and costs. Supporting up to petabyte-scale, millions of IOPS, and high throughput, Elastic SAN integrates with Azure VMs, Kubernetes, VMware, and container storage. It provides familiar SAN resource hierarchy, network isolation, encryption, snapshots, and cost-effective scaling. Best suited for consolidating many IO-intensive workloads, Elastic SAN delivers significant TCO savings and simplifies migration from on-prem SANs.&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/premium-ssd-v2-and-instant-access-snapshots-a-better-faster-cheaper-disk-for-you/4534571" target="_blank" rel="noopener noreferrer"&gt;Premium SSD v2 and Instant Access Snapshots: A Better, Faster, Cheaper Disk for Your Azure VMs&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/pierre_roman/140097" target="_blank" rel="noopener noreferrer"&gt;Pierre_Roman&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/20/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Premium SSD v2 (PV2) for Azure VMs offers significant improvements over Premium SSD v1, delivering up to 4x more IOPS, 2x more throughput, and 42% lower costs. Key features include independent scaling of capacity, IOPS, and throughput, sub-millisecond latency, and live resizing without VM downtime. Instant Access Snapshots enable near-instant restores and faster, lower-latency hydration. PV2 is ideal for I/O-intensive workloads like SQL, SAP, and analytics, and supports efficient scaling, rapid recovery, and cost optimization. However, it cannot be used as an OS disk or with host caching.&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/microsoft-discovery-where-hpc-meets-agentic-ai-for-the-next-era-of-eda/4539212" target="_blank" rel="noopener noreferrer"&gt;Microsoft Discovery: Where HPC meets agentic AI for the next era of EDA&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/richpaw/1302705" target="_blank" rel="noopener noreferrer"&gt;richpaw&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/21/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft Discovery is an enterprise agentic AI platform designed to enhance electronic design automation (EDA) by combining high-performance computing (HPC) with intelligent orchestration. Built on Azure, it coordinates specialized AI agents to reason, plan, execute, and learn across complex engineering workflows, optimizing tasks such as simulation, analysis, and documentation. Discovery integrates seamlessly with Azure HPC, storage, and automation tools, enabling hybrid workflows and improving engineering productivity. Its human-in-the-loop approach ensures transparency and validation through established EDA practices, allowing engineers to focus on creative problem-solving while repetitive tasks are automated.&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/connecting-microsoft-discovery-app-to-azure-hpc-with-azure-netapp-files-and-cycl/4539224" target="_blank" rel="noopener noreferrer"&gt;Connecting Microsoft Discovery App to Azure HPC with Azure NetApp Files and CycleCloud&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/richpaw/1302705" target="_blank" rel="noopener noreferrer"&gt;richpaw&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/21/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article outlines how to integrate Microsoft Discovery, an AI platform for R&amp;amp;D, with traditional Azure HPC environments using Azure NetApp Files and CycleCloud. By running Discovery on a Windows VM within the Azure network, mapping shared storage, and utilizing SSH for job submission, users can bridge AI-native and HPC workflows. This enables Discovery agents to manage files, submit jobs, and interact securely with HPC clusters, leveraging AI to automate and enhance engineering workloads without disrupting existing processes, while maintaining security, performance, and operational best practices.&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/move-a-live-gitlab-project-between-groups-without-breaking-terraform-state-or-ci/4539677" target="_blank" rel="noopener noreferrer"&gt;Move a live GitLab project between groups without breaking Terraform state or CI/CD&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/himanshuyadav/3377517" target="_blank" rel="noopener noreferrer"&gt;HimanshuYadav&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/31/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Moving a live GitLab project between groups can disrupt Terraform state, CI/CD variables, runners, and cloud authentication if paths are hardcoded or inherited resources aren’t handled. The project ID remains unchanged, but group-level variables and runners must be recreated or reconfigured. Key the Terraform backend to the project ID, not the project path, and update any cloud credentials mapped to the old namespace. Thorough inventory, backups, and a freeze window ensure a safe transfer and rollback. Validate everything post-move to avoid drift or broken pipelines. Proper preparation and verification prevent common pitfalls.&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-cobalt-workload-aware-power-management-for-more-efficient-datacenters/4537049" target="_blank" rel="noopener noreferrer"&gt;Azure Cobalt: Workload-Aware Power Management for More Efficient Datacenters&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/redsa/2763999" target="_blank" rel="noopener noreferrer"&gt;redsa&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/16/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft’s Azure Cobalt CPUs introduce industry-first, per-VM power monitoring and capping, achieved through hardware/software co-design. This enables fine-grained, workload-aware power management, selectively throttling non-critical VMs while preserving performance for priority workloads. The approach allows up to 20% more power oversubscription and 24% higher performance compared to software-only capping, supporting more efficient datacenter operations and sustainability. End-to-end integration across Azure infrastructure enables optimized VM placement and real-time telemetry, demonstrating the benefits of deep hardware/software collaboration for balancing performance, efficiency, and sustainability in 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/azuremigrationblog/microsoft-is-headed-to-vmware-explore-2026-in-las-vegas/4541643" target="_blank" rel="noopener noreferrer"&gt;Microsoft is headed to VMware Explore 2026 in Las Vegas&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/kirstenmegahan/1482659" target="_blank" rel="noopener noreferrer"&gt;KirstenMegahan&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/28/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft will participate in VMware Explore 2026 in Las Vegas, offering breakout sessions and expert roundtables focused on Azure and its partnership with VMware by Broadcom. Attendees can learn about streamlined migration of VMware workloads to Azure, maximizing on-premises investments, and leveraging AI innovation. Sessions will cover migration best practices, security, and unlocking data and AI capabilities, along with enticing migration offers. The event aims to help businesses gain a competitive edge by transitioning from on-premises to 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/azurenetworkingblog/azure-front-door-edge-actions-programmable-compute-for-a-secure-resilient-ai-rea/4542177" target="_blank" rel="noopener noreferrer"&gt;Azure Front Door edge actions: programmable compute for a secure, resilient, AI-ready edge&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/abhishektiwari/2459526" target="_blank" rel="noopener noreferrer"&gt;AbhishekTiwari&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/30/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Front Door edge actions introduces programmable compute at Microsoft's global edge, enabling customer-defined logic for secure, low-latency web experiences. Its architecture prioritizes hyperscale performance, strong security, tenant isolation, and resiliency using Hyperlight micro-VMs for hardware-backed isolation. Edge actions maintains local execution to minimize latency, employs fast-fail and circuit-breakers for stability, and continuously validates resiliency through Game Days. Designed for current and future intelligent workloads, it ensures programmability without compromising Azure Front Door’s reliability, security, or performance, making edge programmability a foundational capability for modern 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/azurenetworkingblog/scale-limits-in-network-security-perimeter/4542911" target="_blank" rel="noopener noreferrer"&gt;Scale limits in network security perimeter&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/shashankamalladi/1995095" target="_blank" rel="noopener noreferrer"&gt;shashankamalladi&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/31/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article outlines updated hard limits for network security perimeters in PaaS deployments, including 1,000 perimeters per subscription, 200 profiles per perimeter, 200 rule elements per profile, and 2,500 associated PaaS resources. Rule elements per profile are now capped at 200 for new customers. Existing customers exceeding 200 can edit or reduce rules until October 31, 2026; after that, only reductions are allowed. These changes aim to enforce consistent security scalability and operational boundaries.&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/secure-native-access-to-azure-kubernetes-service-aks-private-clusters-with-azure/4535123" target="_blank" rel="noopener noreferrer"&gt;Secure Native Access to Azure Kubernetes Service (AKS) Private Clusters with Azure Bastion&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/saikishor/2933317" target="_blank" rel="noopener noreferrer"&gt;saikishor&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/09/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article explains how Azure Bastion's native client tunneling (now in public preview) enables secure, simplified access to private Azure Kubernetes Service (AKS) clusters without needing VPNs or jump hosts. Bastion establishes an encrypted tunnel from engineers’ local machines to the private AKS API server, maintaining strong network isolation. It supports modern authentication methods, including Microsoft Entra ID and Azure RBAC, for centralized, auditable access control. This approach streamlines cluster management while enhancing security by removing public endpoints and reducing exposure to credential theft or infrastructure compromise.&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/optimize-oracle-workloads-on-azure-with-azure-netapp-files/4532644" target="_blank" rel="noopener noreferrer"&gt;Optimize Oracle workloads on Azure with Azure NetApp Files&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/geertvanteylingen/222853" target="_blank" rel="noopener noreferrer"&gt;GeertVanTeylingen&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/09/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article details recent advancements in Azure NetApp Files that optimize Oracle workloads on Azure, focusing on predictable performance, flexible scaling, and enhanced data protection. Key features include flexible service level capacity pools, automated application volume group deployment, availability zone-aware volume placement, integrated migration tools, space-efficient short-term clones, cool access tiering, and rapid backup and test/dev refreshes. These improvements enable easier Oracle environment sizing, deployment, protection, and scaling, reducing costs and complexity while supporting business continuity and modernization of Oracle workloads in the Azure cloud.&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/terraform-azurerm-provider-5-0-now-generally-available/4542085" target="_blank" rel="noopener noreferrer"&gt;Terraform AzureRM provider 5.0 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/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/stevenjma/1439309" target="_blank" rel="noopener noreferrer"&gt;stevenjma&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 07/29/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Terraform AzureRM Provider 5.0 is now generally available, offering major improvements for managing Azure infrastructure as code. Key updates include greater control over Azure Resource Provider registration, optional Azure preflight validation to catch issues earlier, and removal of deprecated resources and properties. Users are advised to carefully review their configurations before upgrading due to breaking changes. The release aims to provide clearer provider behavior, faster feedback during workflows, and a cleaner foundation for future Azure features. Detailed migration guidance and changelog are available to assist with upgrading.&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, 03 Aug 2026 19:03:30 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/check-this-out-cto-guide-august-2026/ba-p/4543597</guid>
      <dc:creator>TysonPaul</dc:creator>
      <dc:date>2026-08-03T19:03:30Z</dc:date>
    </item>
    <item>
      <title>Securing Enterprise AI Agents with Microsoft Sentinel</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/securing-enterprise-ai-agents-with-microsoft-sentinel/ba-p/4542583</link>
      <description>&lt;H3&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Introduction&lt;/H3&gt;
&lt;P&gt;Enterprise adoption of Generative AI is accelerating rapidly through Microsoft 365 Copilot, Copilot Studio, Azure AI Foundry Agents, Security Copilot, and custom AI agents integrated with business applications.&lt;/P&gt;
&lt;P&gt;Unlike traditional SaaS applications, AI agents can:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Access enterprise data&lt;/LI&gt;
&lt;LI&gt;Query internal knowledge repositories&lt;/LI&gt;
&lt;LI&gt;Invoke APIs and MCP tools&lt;/LI&gt;
&lt;LI&gt;Execute workflows&lt;/LI&gt;
&lt;LI&gt;Interact with business applications&lt;/LI&gt;
&lt;LI&gt;Make decisions on behalf of users&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;While these capabilities improve productivity, they introduce a new attack surface that security teams must monitor and secure.&lt;/P&gt;
&lt;P&gt;Common AI threats include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Prompt Injection&lt;/LI&gt;
&lt;LI&gt;Cross Prompt Injection Attacks (XPIA)&lt;/LI&gt;
&lt;LI&gt;Jailbreak Attempts&lt;/LI&gt;
&lt;LI&gt;Unauthorized Tool Invocation&lt;/LI&gt;
&lt;LI&gt;Data Exfiltration through AI Agents&lt;/LI&gt;
&lt;LI&gt;Agent Identity Abuse&lt;/LI&gt;
&lt;LI&gt;Excessive Data Access&lt;/LI&gt;
&lt;LI&gt;Malicious MCP Tool Execution&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Traditional SOC monitoring platforms were designed for users, devices, applications and infrastructure—not autonomous AI systems.&lt;/P&gt;
&lt;P&gt;To address this challenge, Microsoft provides a comprehensive AI security monitoring framework built around:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Agent 365 Observability&lt;/LI&gt;
&lt;LI&gt;Microsoft Agent Identities&lt;/LI&gt;
&lt;LI&gt;Microsoft Copilot Logs&lt;/LI&gt;
&lt;LI&gt;Defender XDR&lt;/LI&gt;
&lt;LI&gt;Defender for AI&lt;/LI&gt;
&lt;LI&gt;Microsoft Sentinel&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Together these components provide end-to-end observability of:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;User prompts&lt;/LI&gt;
&lt;LI&gt;Agent execution paths&lt;/LI&gt;
&lt;LI&gt;Tool invocations&lt;/LI&gt;
&lt;LI&gt;Safety signal detections&lt;/LI&gt;
&lt;LI&gt;Agent identities&lt;/LI&gt;
&lt;LI&gt;Security alerts&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Reference Architecture&lt;/H1&gt;
&lt;H2&gt;AI Security Monitoring Architecture&lt;/H2&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;H1&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Integration Architecture&lt;/H1&gt;
&lt;P&gt;Microsoft provides multiple telemetry sources that complement one another.&lt;/P&gt;
&lt;H2&gt;3.1 Agent Runtime Telemetry&lt;/H2&gt;
&lt;H3&gt;Sentinel Data Connector&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;Agent 365 Data Connector&lt;/STRONG&gt;&lt;/P&gt;
&lt;H3&gt;Table&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;UnifiedAgentObservability&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Captures runtime behavior of AI agents including:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;User prompts&lt;/LI&gt;
&lt;LI&gt;Session IDs&lt;/LI&gt;
&lt;LI&gt;Conversation IDs&lt;/LI&gt;
&lt;LI&gt;Agent identities&lt;/LI&gt;
&lt;LI&gt;MCP tool invocations&lt;/LI&gt;
&lt;LI&gt;Connector invocations&lt;/LI&gt;
&lt;LI&gt;Tool arguments&lt;/LI&gt;
&lt;LI&gt;Tool responses&lt;/LI&gt;
&lt;LI&gt;Request payloads&lt;/LI&gt;
&lt;LI&gt;Response payloads&lt;/LI&gt;
&lt;LI&gt;Execution errors&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This dataset provides the forensic trail of everything an AI agent performed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;3.2 Agent Governance and Asset Inventory&lt;/H2&gt;
&lt;H3&gt;Sentinel Data Connector&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Agent Identities&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Provides visibility into:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Agent inventory&lt;/LI&gt;
&lt;LI&gt;Agent blueprint inventory&lt;/LI&gt;
&lt;LI&gt;Ownership&lt;/LI&gt;
&lt;LI&gt;Relationships&lt;/LI&gt;
&lt;LI&gt;Governance metadata&lt;/LI&gt;
&lt;LI&gt;Risk context&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This allows SOC teams to answer:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Who owns this agent?&lt;/LI&gt;
&lt;LI&gt;What permissions does it have?&lt;/LI&gt;
&lt;LI&gt;Which business unit deployed it?&lt;/LI&gt;
&lt;LI&gt;Which related agents exist?&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;3.3 Copilot Audit and Usage Monitoring&lt;/H2&gt;
&lt;H3&gt;Sentinel Data Connector&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Copilot Logs Connector&lt;/STRONG&gt;&lt;/P&gt;
&lt;H3&gt;Table&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;CopilotActivity&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Provides:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Copilot usage auditing&lt;/LI&gt;
&lt;LI&gt;Operational visibility&lt;/LI&gt;
&lt;LI&gt;User interaction tracking&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Useful for governance, compliance and adoption reporting.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;3.4 AI Safety Telemetry&lt;/H2&gt;
&lt;H3&gt;Sentinel Data Connector&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Defender XDR Connector&lt;/STRONG&gt;&lt;/P&gt;
&lt;H3&gt;Table&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;CloudAppEvents&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;CloudAppEvents provides AI safety signals such as:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Prompt Shield detections&lt;/LI&gt;
&lt;LI&gt;Prompt Injection attempts&lt;/LI&gt;
&lt;LI&gt;Cross Prompt Injection Attacks (XPIA)&lt;/LI&gt;
&lt;LI&gt;Jailbreak-related verdicts&lt;/LI&gt;
&lt;LI&gt;Unsafe prompt classifications&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Think of CloudAppEvents as answering:&lt;/P&gt;
&lt;P&gt;"Was the prompt malicious?"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;3.5 AI Security Alerts&lt;/H2&gt;
&lt;H3&gt;Sentinel Data Connectors&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Microsoft Defender XDR&lt;/LI&gt;
&lt;LI&gt;Microsoft Defender for Cloud&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Tables&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;SecurityAlert&lt;/LI&gt;
&lt;LI&gt;SecurityIncident&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Used for:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;AI attack detections&lt;/LI&gt;
&lt;LI&gt;Security incidents&lt;/LI&gt;
&lt;LI&gt;Correlated investigation workflows&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Understanding the Two Most Important AI Tables&lt;/H1&gt;
&lt;H2&gt;CloudAppEvents&lt;/H2&gt;
&lt;P&gt;Focuses on AI Safety&lt;/P&gt;
&lt;P&gt;Questions answered:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Was Prompt Shield triggered?&lt;/LI&gt;
&lt;LI&gt;Was this a jailbreak attempt?&lt;/LI&gt;
&lt;LI&gt;Was XPIA detected?&lt;/LI&gt;
&lt;LI&gt;Was the prompt suspicious?&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;UnifiedAgentObservability&lt;/H2&gt;
&lt;P&gt;Focuses on Agent Runtime Behavior&lt;/P&gt;
&lt;P&gt;Questions answered:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;What tool was invoked?&lt;/LI&gt;
&lt;LI&gt;Which connector executed?&lt;/LI&gt;
&lt;LI&gt;What arguments were passed?&lt;/LI&gt;
&lt;LI&gt;What data was returned?&lt;/LI&gt;
&lt;LI&gt;What actions did the agent perform?&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Advanced Threat Hunting Scenarios&lt;/H1&gt;
&lt;P&gt;The Agent365 Observability hunting guide contains several investigation scenarios that can be used directly in Microsoft Sentinel.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Reference:&lt;/STRONG&gt; &lt;A href="https://github.com/SCStelz/security-investigator/blob/main/queries/cloud/agent365_observability.md" target="_blank"&gt;Agent 365 Observability — AI Agent Telemetry Hunting&amp;nbsp;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;https://github.com/SCStelz/security-investigator/blob/main/queries/cloud/agent365_observability.md&lt;/P&gt;
&lt;H2&gt;5.1 Prompt Injection Detection&lt;/H2&gt;
&lt;P&gt;Detect prompts containing indicators such as:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Ignore previous instructions&lt;/LI&gt;
&lt;LI&gt;Reveal system prompt&lt;/LI&gt;
&lt;LI&gt;Developer mode&lt;/LI&gt;
&lt;LI&gt;Disregard safety controls&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Investigation workflow:&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;Review Tool Activity&lt;/P&gt;
&lt;P&gt;This allows analysts to determine whether a suspicious prompt resulted in downstream actions.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;5.2 &amp;nbsp;Session Reconstruction&lt;/H2&gt;
&lt;P&gt;One of the most powerful capabilities of UnifiedAgentObservability is session reconstruction.&lt;/P&gt;
&lt;P&gt;Analysts can correlate:&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;This creates complete forensic timelines.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;5.3 MCP Tool Auditing&lt;/H2&gt;
&lt;P&gt;Monitor all MCP activity including:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;query_lake&lt;/LI&gt;
&lt;LI&gt;Graph API tools&lt;/LI&gt;
&lt;LI&gt;ServiceNow connectors&lt;/LI&gt;
&lt;LI&gt;SharePoint connectors&lt;/LI&gt;
&lt;LI&gt;Custom enterprise tools&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Questions answered:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Which tool was used?&lt;/LI&gt;
&lt;LI&gt;Who triggered it?&lt;/LI&gt;
&lt;LI&gt;What parameters were supplied?&lt;/LI&gt;
&lt;LI&gt;What data was returned?&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;5.4 Sensitive Data Access Monitoring&lt;/H2&gt;
&lt;P&gt;Monitor AI agent interaction with:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Employee records&lt;/LI&gt;
&lt;LI&gt;Customer data&lt;/LI&gt;
&lt;LI&gt;Financial information&lt;/LI&gt;
&lt;LI&gt;SharePoint repositories&lt;/LI&gt;
&lt;LI&gt;HR databases&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Useful for identifying:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Data exfiltration attempts&lt;/LI&gt;
&lt;LI&gt;Excessive access patterns&lt;/LI&gt;
&lt;LI&gt;Sensitive data exposure&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;5.5 Query Lake Monitoring&lt;/H2&gt;
&lt;P&gt;The GitHub hunting guide introduces monitoring of:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;query_lake&lt;/LI&gt;
&lt;LI&gt;RunAdvancedHuntingQuery&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Analysts can inspect:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Actual KQL submitted&lt;/LI&gt;
&lt;LI&gt;Target workspaces&lt;/LI&gt;
&lt;LI&gt;Data sources queried&lt;/LI&gt;
&lt;LI&gt;Scope of access&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This provides visibility into AI-driven security investigations.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;5.6 New Tool Detection&lt;/H2&gt;
&lt;P&gt;Identify newly observed tool usage.&lt;/P&gt;
&lt;P&gt;Examples:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Unauthorized MCP servers&lt;/LI&gt;
&lt;LI&gt;Newly registered connectors&lt;/LI&gt;
&lt;LI&gt;Unapproved tools&lt;/LI&gt;
&lt;LI&gt;Unexpected integrations&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This use case is particularly useful for governance programs.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;5.7 Tool Failure Monitoring&lt;/H2&gt;
&lt;P&gt;Monitor:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Permission failures&lt;/LI&gt;
&lt;LI&gt;Connector failures&lt;/LI&gt;
&lt;LI&gt;Application errors&lt;/LI&gt;
&lt;LI&gt;Access-denied responses&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;A sudden increase in failures may indicate:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Reconnaissance activity&lt;/LI&gt;
&lt;LI&gt;Misconfiguration&lt;/LI&gt;
&lt;LI&gt;Privilege abuse attempts&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;6.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Detection Engineering Opportunities&lt;/H1&gt;
&lt;P&gt;Organizations can create Sentinel Analytics Rules for:&lt;/P&gt;
&lt;H3&gt;6.1 Prompt Injection Detection&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Developer Mode prompts&lt;/LI&gt;
&lt;LI&gt;Prompt Override attempts&lt;/LI&gt;
&lt;LI&gt;System Prompt disclosure requests&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;6.2 Jailbreak Attempt Detection&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Safety bypass attempts&lt;/LI&gt;
&lt;LI&gt;Role manipulation prompts&lt;/LI&gt;
&lt;LI&gt;Instruction override patterns&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;6.3 Unauthorized Tool Usage&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;New MCP tools&lt;/LI&gt;
&lt;LI&gt;High-risk connectors&lt;/LI&gt;
&lt;LI&gt;Rare tool executions&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;6.4 Sensitive Data Access&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;HR data queries&lt;/LI&gt;
&lt;LI&gt;Identity information retrieval&lt;/LI&gt;
&lt;LI&gt;Large-volume exports&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;6.5 Agent Identity Abuse&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Ownership changes&lt;/LI&gt;
&lt;LI&gt;Unexpected agent activity&lt;/LI&gt;
&lt;LI&gt;Agent-to-agent anomalies&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;7.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Data Lake Exploration and Long-Term Analytics&lt;/H1&gt;
&lt;P&gt;Because agent telemetry resides within Sentinel Data Lake, organizations can perform:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Long-term AI investigations&lt;/LI&gt;
&lt;LI&gt;Historical AI attack analysis&lt;/LI&gt;
&lt;LI&gt;Agent baselining&lt;/LI&gt;
&lt;LI&gt;Governance reporting&lt;/LI&gt;
&lt;LI&gt;Trend analysis&lt;/LI&gt;
&lt;LI&gt;Tool inventory reporting&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Example dashboards include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Top Prompt Injection Attempts&lt;/LI&gt;
&lt;LI&gt;Most Active Agents&lt;/LI&gt;
&lt;LI&gt;High-Risk MCP Tools&lt;/LI&gt;
&lt;LI&gt;Agent Ownership Analysis&lt;/LI&gt;
&lt;LI&gt;AI Security Incidents&lt;/LI&gt;
&lt;LI&gt;Sensitive Data Access Trends&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;8.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Summary&lt;/H1&gt;
&lt;P&gt;AI agents represent the next major computing platform, but they also introduce a completely new attack surface.&lt;/P&gt;
&lt;P&gt;To effectively secure enterprise AI solutions, organizations require visibility across:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;User interactions&lt;/LI&gt;
&lt;LI&gt;Agent execution paths&lt;/LI&gt;
&lt;LI&gt;MCP tool usage&lt;/LI&gt;
&lt;LI&gt;Prompt safety signals&lt;/LI&gt;
&lt;LI&gt;Agent identities&lt;/LI&gt;
&lt;LI&gt;Security detections&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Microsoft Sentinel provides this unified view by integrating:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Agent 365 Observability&lt;/LI&gt;
&lt;LI&gt;UnifiedAgentObservability&lt;/LI&gt;
&lt;LI&gt;Microsoft Agent Identities&lt;/LI&gt;
&lt;LI&gt;Microsoft Copilot Logs&lt;/LI&gt;
&lt;LI&gt;CloudAppEvents&lt;/LI&gt;
&lt;LI&gt;Defender XDR&lt;/LI&gt;
&lt;LI&gt;Defender for AI&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;By combining AI runtime telemetry with AI safety signals and Defender detections, security teams can move beyond traditional monitoring and build a modern SOC capability for threat hunting, incident response, governance and forensic investigations across Microsoft 365 Copilot, Copilot Studio, Azure AI Foundry and future AI agent ecosystems.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Reference: &lt;/STRONG&gt;https://github.com/SCStelz/security-investigator/blob/main/queries/cloud/agent365_observability.md&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 31 Jul 2026 02:30:39 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/securing-enterprise-ai-agents-with-microsoft-sentinel/ba-p/4542583</guid>
      <dc:creator>SantoshPargi</dc:creator>
      <dc:date>2026-07-31T02:30:39Z</dc:date>
    </item>
    <item>
      <title>Device Code Flow: The Gift That Keeps on Giving — To Attackers</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/device-code-flow-the-gift-that-keeps-on-giving-to-attackers/ba-p/4540949</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Tags:&lt;/STRONG&gt; Microsoft Entra ID, Conditional Access, Device Code Flow, OAuth, Azure Arc, Azure Migrate, Identity Security, Zero Trust&lt;/P&gt;
&lt;H2 id="introduction"&gt;Introduction&lt;/H2&gt;
&lt;P&gt;Device Code Flow was built for a good reason: helping users sign in on devices that cannot easily show a browser or accept a password. Smart TVs, consoles, kiosks, command-line tools, and headless systems all benefit from that design.&lt;/P&gt;
&lt;P&gt;But the same design that makes it convenient also creates a serious enterprise risk. Attackers can initiate the flow themselves, send the user a legitimate Microsoft sign-in URL and code, and receive valid tokens once the user completes authentication. No password theft. No fake login page. MFA may still succeed. From the identity platform’s point of view, the protocol worked exactly as designed.&lt;/P&gt;
&lt;P&gt;This post explains how Device Code Flow works, how it is abused in real attacks, why some Azure workflows still depend on it, and how administrators can reduce risk without treating it as a recommended authentication pattern for Azure services and tools.&lt;/P&gt;
&lt;P&gt;Allow Device Code Flow only for documented constrained scenarios. Everything else should move to Managed Identity, brokered interactive sign-in, or certificate-based Service Principal authentication.&lt;/P&gt;
&lt;P&gt;Let’s start with the version of Device Code Flow most people have already used, even if they did not know its name.&lt;/P&gt;
&lt;P&gt;You may have experienced this. At night, you’re in a hotel room after surviving back-to-back meetings, and you just want to relax and watch something mindless on Netflix.&lt;/P&gt;
&lt;P&gt;You grab the remote and navigate to the Netflix app on the room’s smart TV.&lt;/P&gt;
&lt;P&gt;Now you need to log in.&lt;/P&gt;
&lt;P&gt;You stare at the on-screen keyboard. It’s one of those alphabetical grids — not even QWERTY, which would be bad enough — and your password is something like &lt;CODE&gt;C0llH0rs3@tt3ry&amp;amp;!&lt;/CODE&gt; because you read the right security blogs and you take this stuff seriously. You’re going to be clicking that remote for the next 10 minutes, and almost certainly making at least two typos.&lt;/P&gt;
&lt;P&gt;But then the TV does something clever. It shows you a short alphanumeric code — let’s say &lt;CODE&gt;ABCD-1234&lt;/CODE&gt; — and tells you: &lt;EM&gt;Go to netflix.com/activate on your phone or laptop, type in this code, and you’re done.&lt;/EM&gt;&lt;/P&gt;
&lt;FIGURE&gt;&lt;IMG style="width: 3.71579in; height: 4.38947in;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWEAAAGhCAYAAACwFwVjAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAGHaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj48dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCjw/eHBhY2tldCBlbmQ9J3cnPz4slJgLAABoGElEQVR4Xu3dd3wUdf4/8Nds30120wg1oZdAIBQREEQpSrVQPI/uCYoiYr2T8yyHh6hnv7OigKLYFQtyNKUJ0jsBAqGEEGqy2d5nPr8/vjOf3+wmNCWZCO/n47EPyLSdmZ15zWc+85kZIT09nYH8ITAAQmLH30mSxMROhJBqJFAIX9kEQZfYiRBSjSiEr3CM6RM7EUKqEYXwFU6nkxI7EUKqEYXwFY6qIwjRFoXwFU6noxAmREsUwlc4xujnJ0RLFMKEEKIhOhclhBANUQgTQoiGKIQJIURDFMKEEKIhCmFCCNEQhTAhhGiIQpgQQjREIUwIIRqiECaEEA1RCBNCiIYohAkhREMUwoQQoiEKYUII0RCFMCGEaIhCmBBCNEQhTAghGqIQJoQQDVEIE0KIhiiENSIIAkRRTOxMCLnCUAgTQoiGKISrmVICZoxBr9cn9iaEXGEohKsZhS8hRI1CmBBCNEQhTAghGqIQJoQQDVEIE0KIhiiECSFEQxTChBCiIQphQkiNoLShT7yT9HK/u5RCmBBSIyht6BPb0V/ubesphAkhREMUwoQQoiEKYUII0RCFMCGEaIhCmBBCNEQhTIgG1M2xLvcmWOTcKIQJ0YC6Odbl3gSLnBuFMCGEaIhCmJDzONudXIRcChTChJzH2e7kIuRSoBAmhBANUQgTQoiGKIQJIURDFMKEEKIhCmFCCNEQhTAhhGiIQpgQQjREIUwIIRqiECaEEA1RCBNCiIYohAkhREMUwoQQoiEKYUII0RCFMCGEaIhCmBBCNEQhTAghGqIQJoQQDVEIE0KIhiiECSFEQxTChBCiIQphjShv8CWEXNkohAkhREMUwtVMKQErr1EnhFzZKISrGYUvIUSNQpgQQjREIUwIIRqiECaEEA1RCBNCiIYohAkhREMUwoQQoiEKYUII0RCFMCGEaIhCmFx2lLsSRVGkZ3SQGo9CmFx2lLsS9Xo93aFIajwKYUII0RCFMNGUuuqAkCsRhTDRlLrqgJArEYUwIYRoiEKYEEI0RCFMCCEaohAmhBANUQgTQoiGKIQJIURDFMKEEKIhCmFCCLkIl/p5JBTChBByES7180gohAkhREMUwoQQoiEKYULIZedS19tWJQphQshl51LX21YlCmFCiCb+SKXVqkQhTAjRxB+ptFqVKIQJIURDFMKEEKIhCmFCCNEQhTAhhGiIQpgQQjREIUwIIRqiECaEEA1RCBNCiIYohAkhREMUwjUU3dJJyJWBQriGols6CbkyUAgTQoiGKIQJIURDFMKEEKIhCmFCCNEQhTAhhGiIQpgQQjQkpKens8SOhNQ0oihCkqS4bkajMe7vK1k0Go37W6fTURPHPwgKYQ0wduGrXBAExGIxGAyGxF5XDFEUYTabYbfbIQgCGGMQRRFlZWUUxHIA16pVKy50/X4/AoEABfEfAIVwNWOMoby8PLHzedlsNlgslsTOF0Ud/oIgxPWrKZR5VM+f0+nE+PHj8dRTT/FuBQUFGDBgANLS0mrsslQXp9OJlStXolGjRoC87mbNmoVnn30W6enpiYOTGobqhKtZeXk5vF4vRFG8oE8sFkNZWRmaNWuGcDicOLkLpoS/8nE6nQiFQomDacbpdMLpdMbNnyRJPJTtdjsaN26MRo0aolGjRqhXr17iJK5IyvqpX7++vH4aITs7G2lpaYmDkhqKQlgDkiRBp9Nd0Eev10MQhN9d2isvL8eHH37IPx988AHat29fI4LY6XRizJgxmDt3Lj788EPMnTsX//jHPxCNRuNKxpIkQRB0v3tdXK4YYxAEATodraM/EgrhP5CLqUuuzNixYzFu3DiMGzcOf/nLX9CwYcMKF3Sqm7JMHTt2xLhx43DHHXdg3LhxuPHGG8EY+93LfDm41OuAArpmoRDWGGMMx48fx4wZM876eeWVV1BeXg6dTodgMIhgMIhwOIxIJAIACIVCCAQC8Pl88Hg8FUqQZ6vGYIwhGo3y6ajFYjH4/X6Ul5fD5/PB7XYjHA7HtVBQnvQWjUb5fAWDQcRiMUiShFAodN5qD2V6SuCqgzcQCFQ6b2rRaBQ+nw8+nw9er7fSg4r6iXSiKCIYDMLtdsPn8/ELWJWNdy7qaYbDYfj9fni9Xni9Xv77CPJF1cRxRFEEYwzBYBB+vx8+n4+vJ2U+lGkzxmAwGCCKIgRBQDQaRSgU4t+l/LbnO2Cpf6vy8nIEAgF4vV74/X5EIpFzjkuqFl2Yq2ZOpxNutxsOhwOQQ2jXrl3o0KFD4qBxLBYLsrKyUKdOHd6trKwM+/btQ6tWrdCsWTOYzWaEw2EUFhaisLAQycnJYIyhfv36kCQJBQUFgOq0ddKkSVi7di38fj9KS0thNBrB5LrjOnXqICcnB6mpqdDpdIhGozhx4gS2bNmCpKQkmM1mCIKAUCiE7OxsZGRk8Pk6duwYioqKcN1116FWrVooLS3F5s2bK1xYlCQJer0etWvXxl//+leMHz+ez9uGDRswYcIESJKEvXv34sEHH8Srr74Kne7/yg07d+5E+/bt0axZM+Tk5MBkMiEYDKKgoACHDx+u9IJUIBCA0WhE27ZtUatWLRiNRh5KO3fuRCgUQnJycuJoZyWKItxuN9q0aYOGDRvCarWCMQav14uDBw/iyJEjyMzMRCwWiyt9KgfNq6++GrVr14bZbIYkSXC5XCgsLMSxY8f4/CtBrgSwIAjo1KkT0tPTwRjDiRMnsHHjRhQUFKB58+Z8/bz22mt45JFHkJGRwQ8EbrcbLVu2RJMmTWC1WiEIAnw+H4qKirB//366yKkRCuFqlhjCjDHs3LkTHTp0qDQ4lBKQy+XCtGnT8MADD/AdZcGCBdi1axceeughZGZmwmg0IhaL4fjx43jiiScwb948AMCiRYvQvn171K1bN67E43a7EYlE8MEHH+Dxxx9HamoqXC4Xxo4di6effhp16tSB3W7n81FWVob8/HxMnDgRR44cQVJSEtxuN9555x2MHDmSl8amT5+OFi1aYPTo0XA4HPj111/Ro0ePuJ1cEAR4PB706dMHc+fORXJyMmw2G5+3SCQCt9uNU6dOoWvXrrj77rvx2muvxYXwv//9bzz33HNo0KAB9Ho9X/Zp06bhww8/5OtTObBcddVVeOutt9CiRQs4HA4YDAZIksRD85FHHsGqVasq/R0SRaNReL1efPDBB+jfvz8Pdchhf+bMGbzxxht45ZVX+IEM8u/foUMHvP3222jZsiXvxxhDIBDAyZMn8fLLL2PmzJlISUmBwWBALBZDJBJBrVq18PnnnyM3NxfJycnQ6/VwOp2YN28eBg4ciObNm/P1q4Rweno6YrEYPB4P3nvvPQwaNAgZGRn8gBiJRHD69Gl88skn+Pvf/46UlBRq1lbNqDpCY+pQVFoIqD9ut5sPY7PZkJaWhpSUFKSkpGDQoEF45plnUK9ePej1ejDGoNPpkJWVhQ8++AA9e/YEAGRkZKBevXq8lKlITU1FnTp1eOnP5XJh8uTJmD17Npo2bYrk5GTeQkGn0yEzMxO9evXCt99+i4yMDH7KbLVa4XA4kJqairS0NEyePBmTJk2KC/DKiHL731q1asFms8WtC5PJhMzMTGRkZCAYDAJycCtB37RpU8ybNw8NGzbkoaHX69GwYUPMmjULN910E3w+Hxhj8Pv9uOmmm7B27Vp06dIFaWlp0Ov18oU+AXa7HR07dsS3336Lfv36wel08vlIpJRIvV4vvvrqK9xxxx2oW7cuX/+MMVitVjRs2BAvvfQSnnvuObhcLkiShEAggNzcXHz77be45pprkJ6eHndQSkpKQtOmTfHuu+9ixowZcVUFdrsd3333Hbp3786DUpIkpKWlYcqUKWjSpEnirALy2YbH48GXX36Ju+66C/Xq1eMlbyZXdTRo0ABTp07Fp59+inA4fNbfi1QNCuEaoE6dOnj11Vfx2muvVfjceeedcLvdiaMAANLS0mCxWCDIV8SVEBMEAXq9Hvfddx9QyYUdJczUAQAAN9xwA15++eW4kpA6tJXpKEHi8/l4P7WmTZvygINc2krEGIPRaIwbTumuXg7IIZ/IZrPFjYeE5Ro+fDgikQgkSYLFYsELL7wAk8lUYXi11NRUzJw5EzjHgYPJ1Q3PPPMMhg0bxrspJV1lHhRTp07FkCFDeBAvXLgQjRo14sspyC1f1OOJooiHHnoI/fv3hyiK8Hg8GDNmDNq1a8enq4yrjKP+/dVcLhdmzJjB51VZZmV45W9JkvDnP/8ZEyZMOOv2RqoGhXANkJmZiYcffhgPPvhg3EfZEc/G5/Nh8uTJaNGiBfr164dDhw7F9W/WrBlsNhsGDx7Md3SFXq/HmDFjUKdOHX4TxMiRI3ldryAIOHjwIAYMGICWLVvizjvvjLvJpFOnTrjxxhv532pMPrXevHkz1q1bh7179wIJoScIAkwmE9auXYuMjAy8+eabvGmVIAhYs2YNTCYT2rdvj2AwGDcuk0u399xzD1q1aoXu3btj06ZNfBhBEHD11VcDcpXLn//8Z7Ru3ZqP7/f7MXnyZDRr1gxDhgzB0aNHeb/GjRvjkUceqTSIBPkiZ5MmTXDPPffEfd/cuXPRtm1bXHPNNdi5c2dcOPbt2xcAcNddd/EbKiAfnJ544gnk5OSgX79+2LdvHwT5gGq1WjFlyhQEAgEAwD333MMPjowxFBQUoH///mjXrh1ef/31uEBVa9asGSZPnswPEgCwZMkSdOnSBW3atMGsWbP4OhcEAaNGjYKQcCAhVYtCuAZQNnr1zqDulkjpf/LkSbzzzjsoKSnBsmXL8Mknn8SNb7VakZycDL/fD6hKT4Lc5jYajeL06dOQ5BYKSqgqO+CcOXOwdOlSFBYWYu7cufj555/5/BiNxriSmZrL5ULv3r1x4403ol+/fnjqqaeQkpISNwxTlYRdLhc/7VbPn06n4y0r1OtBEAQcOnQI7733Ho4fP47169dj/vz5vFQtCAJq1arFh3/ggQd4wDPG8Msvv+Cdd97B4cOH8cMPP+CNN97g4zHG0K9fPz6PakxuTdK+fXs4HA4+TmlpKaZMmYLDhw9j/fr1mDNnDv8+yEEIAL169Ypbxp9//hnPP/88jh07hmXLluHNN98EVL9v7969kZWVhY4dO6JZs2Z8/gDgnXfewbJly1BUVIRHHnkk7kCi1q1bN37WIAgCysrKMGjQIGzatAkFBQV44YUX4tZbp06dAFWrFVL1KIRrgEgkgj179lT47Nu3DyUlJYmDc8oOqTxXwuPxxAWHIJeqzvV8BaVuMSsrC1lZWXHBn5aWhjvvvBMTJkzAHXfcgVq1avHpC4KApk2bAglhxRjD6tWrsXnz5riqhrNd7FGfxifSJTyERpk3pqqyUJbN5/PxaTA54CEvQ6tWrfg0BEGA2+3GX/7yF4wfPx533nknXw5l3Nq1ayM1NbXSIIpEIqhbty7MZjPvduLECXi9XphMJtjtdixZsgSjR4/GmDFjMGbMGLz22msAgOzs7Lh53LBhAyDXf9vtdqxZs4ZPE/Lv2qlTJzRu3LjC+luzZg2SkpJ498qqfACgSZMmcc8d8Xg8GDt2LMaPH48JEyagb9++cevebDajT58+Z23WSC49CmGN6XQ6FBYWom3btujdu3fcp1evXnjuuecqlCITqS9MqU87UUkdZWWi0ShatmwJqIZnjOFvf/sb5syZg1mzZuHDDz9E7969eYlJEAR+QU+9Eyv9lP+bTKYK8/R7CfLBpTLq74ccfInDjhgxArNnz8bs2bMxZ84cXncO1TybTKYK602Zbu3ateO6+/1+Xqo3Go04ceIEPv30U3zyySf45JNPsHr1akA+ICgYYygtLQVUy1NYWMj7KzIzM5GUlJTYGfv27YPBYOABm7iMisR5bdKkCebOnYvZs2dj1qxZmDlzZtz6gnwh92LbTZPfrvJfjlQr5SJQKBSq8IlGo2fdwRSJYfFbqE+fE3dKhaAKaKVUinN8v9Ji4FKrbP4q66ZI7MdUF9KU/soyIWFdqCn9lWaDatFolB8MjUYj0tLS+Ee5sFhZyRqq71dak6hJqudnqCkhWVk/tcRtJ3H4s/2mpPqce+8m1Uqv1/PSjfJJPA2tCkajMa4UpoTUM888gyFDhmDo0KFxnyFDhmDYsGF444034qZTE5WUlFQIno8//hgDBw6sdLmGDh2KKVOmIBKJVAgwxalTp+ICVTkjUL5H/SCi8vJyuFwu3l0hCAIvpUajUYiiiMaNG/P+ilOnTqG8vDxuGQRBQF5eXlxpNXEZFWfOnIn7+8iRIxg8eHDc7zps2DAMGTKEd9uwYUOlpW9SNSrfyki1UZd0lKeHJX7UrRLO5WylJjVlGJ1Ox2+HFUURR44cwaFDh3hpiDGGxo0b4/vvv8d3333HP7/++iv0ej2+++477NmzB6ikpPl7MMZ4wCm3//4eZWVl2Lp1a1xp7+qrr8aKFSviluv7779Heno6Fi5ciLVr10IUxUpD2GQy4fjx43G3YmdnZ6NOnToIBoNwOp249957EYlE+K3lP/zwAwDg0KFDfP0LgoDrrrsOkEvWfr8fvXr14tOEfNPH+vXrsXfv3rjbnxlj6Nu3LwKBAG9DXVkzPsjVFrFYjC97VlYWDAZDhd81HA7j+PHj+O6771BWVnZFP7+6ulXcyki1a9q0KVauXIlVq1ZV+KxcuRILFy5EgwYNEke7aMrzDCDvyCNGjEDPnj2Rm5sLAPjuu+948DDGMHr0aPz444+4/vrr0bZtWzz00EPYvn07Pv30U/Tv3583n7oU/H5/3Klxbm4u/vSnP6Fbt24wGAznPbicjcFgwIwZMwBVabFVq1b45ZdfcPPNN6Nt27YYOXIktmzZgvfffx8PP/wwQqHQWS9mWiwWbN68Oe7A6HA48M033+Cqq65C7969cf/990Ov18NoNMJgMKC4uBgA8PPPP0Mnt8+VJAm9evXCnDlz0Lp1a4wcOTLubkjGGBYtWgSn04nDhw/HNcEDgClTpmDYsGHo2LEjlixZctbtY8WKFfyCLZMvWH7xxRd47rnn0LZtW1x77bX4z3/+g6+//hqLFi1Cs2bN+DyS6kG3LVcz5S449W3LispKlEy+5TYjIwMvvPACHnvsMT5cQUEBcnJykJKSArfbjUcffRQvvfQS75+fn48bbrgBgUAAHo8Hu3bt4oGrEAQBS5YswYABA5Cbm4vFixejQYMGYKqmVEpoqEuG5eXl6NmzJ/bs2YMPP/wQ48aN48N+9913GDZs2AU/i8DpdOKOO+7A7Nmz4w4Cyv/T09MxduxYftuyJEnIz89HXl4ev9V68uTJcdUjLpcL6enpSElJQSQSwddff42BAwfyaSvLplBK34wxDBgwAKtXr67wHAlBfo6D2+3GPffcg//+979xYa1MT90qRJIk3HTTTfjpp58Qi8Xwyy+/oEePHnwc9XIq65gxBrfbjSFDhmDjxo0IBoMYNWoU5syZw79PPf/KNqQsF+Tblh999FEAwJ/+9Cd88MEHcXclnm38jz/+GH/5y18u6NZtcmlQSVgDyo6mDoMLCavzUaappjRBA8CfJYGEHU/5f35+Pnr06IFTp07xQFU+St20Mq8LFizAwYMH46alUJblQpcpOTkZ69evR1lZGe+mfL8kSSgvL+cBpf5XGU4t8W+d/Fzm22+/Hfv374egalmhXj6dfDFu7dq1WL9+fVwTtETp6emYOXMm3n//fUD1nep1qcz/fffdh8WLF8NutyM5ORk9e/ZEfn4+n5ayLEpwK9UVTzzxBFatWgWj0YjU1FR8+umnWLduHZ9P5buU8YqLiyssO+R5/eqrr/D000+DJRx81POrrIOlS5dWOh1SdfRWq3VaYkdSdYLBIAYOHIjS0lIcP378vJ8TJ07g6NGjWLFiBRo0aIDMzEze7+DBg/j6669hNpsRCoXQvHlzNGzYkPcvLCzEggULIMm37m7ZsgUGgwG1a9dGSkoKdPLNEBs2bMD333+P1NRUnDp1Cv/73/9gMBj4zR5msxnRaBRlZWVYt24dpk+fjmnTpiE5ORnhcBidOnVCcnIyn9/t27dj6dKl/Jbq89Hr9Th27Bh27NiBrKwspKen8+cbnDx5Eh9//DHq16+P7OxslJSU4Pjx4ygoKMD8+fNhtVoRjUb5WyWOHTuGkpISFBUV4aOPPoLVaoVBfgjOa6+9Br1eH7dckNvObt++He+88w4mTJgAo9FY4RZnhRLgRqMR3377LQKBAJKTk+FwOPg4ZWVlWLNmDf7xj3/g448/5mcESh384sWLodPpkJSUBKvVCovFwpf1l19+wdSpUzFv3jykpKTENX37+uuvkZaWhtq1a8Nut0MURezfvx9PPvkkVqxYgfr16+PYsWM4fvw4fv31V6xfv55Pf8WKFdixYwd/V5/FYoHBYEAkEkFxcTH+97//4d5778WiRYv4tkGqB1VHVDNJvkPsYtnt9rhnCEMOL5vNBqP8CMpwOBxXT2swGJCUlMRLT8rTtADw7pJ855yyU0L1qEX1cJCv4isXpJRgkeTnBqsvVFksFlgslovekX0+HyKRCCwWC4xGIwRBQCAQgNVqhSRJ/M4/hfIgGybfyZb4LIvEJ4KJ8qMnIc+jcmqvXq7Ecc7lfNPT6XRITU1NGOv/bqxQ5lX9+/j9foiiCIvFEvdEOUVUfnCQ0WjkF+KU31N5jKnCarXCbDbHlfq9Xi9i8ktjlX7q9Xop3mNILh6FsAaUU84LpT6FVE7Dle7qoFNOT9X91eNWNowyXGJgVjYczjLNxOWpbHoXKnFaUJU+E5ftfMte2TwkDqemhOHFUE7pE+f5bN+vONt8VLZ+1Sob70LWj6Ky9YvfuOzk0qAQJoQQDVU8VBJCCKk2FMKEEKIhCmFCCNEQhTAhhGiIQriGq+xKNiHk8nHFhbAgCBBFEZIk8UdIKt0q66/8rUXzHSa/iFF55bnysJ3LTeI6J+RKcsU2UavsjbqJr0iHfEOEw+GAKIqaPFlKuYFB7XK6r7+y5UtNTQVT3SpNao7femamFGISxz9f4eZih/8juiJD2Ol0Yvz48Wjbti3/kUtLS/H888/D4XDA4/FgxIgRyMvLw/bt2/Hll18iIyMDUsKbgauaz+fDgAEDcP311/Nup0+fxr///e8/fBAL8muGBgwYwN/YAQDFxcWYM2cOPwsgNYP6bsvfwmazVfrUPYfDcdbfubKC0uV4V98VF8JKKffbb7/FkCFDePf9+/ejVatWMBqNePPNNzFx4kRAvsPo+eefx5NPPnnBTwW7FJT5fOmll/DII4/wu5/27t2LNm3aVOu8VBWn04nnnnsOjz/+OO+2YcMG/oZpKglrTxAERCIRpKSkYMKECYm9L4ggCFi6dCmuueaauPf5SZKEZ555Ju6tJMrwZWVlmDBhAjp37hx3J+Dnn3+OLVu2XFZBTCEsU0I4MzMTy5cvR25uLpj8ZKk9e/YgNze3Wkufyny++OKLePTRRymEiWYikQiaNm2Kbdu2xW1zlVUxnK3bAw88gPr16+Pvf/877y8IAiZMmIA5c+ZU2LecTifWrFkT99jPaDSKjIwM6BJeAPtHd8VdmDsbZaPx+XwoLCyEoHqWrvKixsT6qUtBUF0UJKQmYvLzKpTgVO8bF9pNr9djyZIlCAQCvGTLGMOf//xnCPLDpZQAV/aHvLw8Pj0A+OWXX+Dz+Sp9JsYf2eW1NL+DsgHodDrccccd+PDDD7F792689957eOyxx2C32/kwl4ogn+pd6ukScikpQRoKheDz+eDz+eD1euH3+yu8506SJD6M8lFeU7Vnzx44nc647f2GG26AzWaDXq/n03K73fjLX/4S91B9URSxfPnyKikIae2yrY4Q5McsVvaIQwAVqiOUt1SkpaVV+k439SMOlekmPloRqsdHqk+XPB5P3DvCcI4LFervcTqd562OYGd5jKMiKSkJJpMJgiDEPaJSTX0q6Pf7K32vmzKMJElnffeb0WjkO1Qi9eMb1X5PdQSr5PGdag6HA3q9nu/0UiWPEbVardDr9ZXO24U81rKyi0d2u50/1pKpWtqoqVviRCKRSrclyNMyGAxxwVXZd6p/w3P1T+ynPFNZ/Xuqp6UUFAwGA9q0acO7K4H7wgsv8AvHjDGcOXMGN998c9wbRyBfcD169CjmzZuH0aNH8zAVBAHDhg3DggUL+NtmnE4nli9fjl69evFSdSwWw6BBgyp948kf3WVZEhYEAeFwGB6PB7Vr18Ynn3wCt9uNcDiMbdu2oW/fvkAlj/6D/NqeRYsWQZLfdiBJEubOnQu32w3GGGKxGFwuF5o0aYIZM2Zg48aNOHz4MHbv3o158+bh1ltvhSAIfGP3eDwYMmQIdu7ciR07dmDHjh347LPP0LJlS6xatQrRaBSSJGHPnj0YO3Ys3G43ovLbd89FEAQevrVr18aMGTOQn58Pv9+PSCSCw4cP47///S+ys7NRXl6OQCCA9u3bw+l08uVijGH69OlwOp0QRRGBQAC9evWK6y9JEiZNmgSn04lwOAyXy4Vrr70W8+fPx6lTpyDKz9RdtWoVBg0ahFAohGAwWCE0ateujVmzZqG0tBTRaBQ7duzATTfdBPzGah5RFFFeXo7WrVvj/fffx9GjR3kg5+fn469//SuMRiMP11gshnA4jJdffhlLlizBkiVLsHjxYlx11VXIzMzk8xaJRLBv3z7cfffdCAaDiEQilf4Wym+8fPnyuG2FMYaMjAz+G5aXl2Pt2rVx/X/66Sc4nU7EYjGUl5ejUaNGeP3113H48GFEIhGEQiHs3bsXzzzzDGw2G/x+Pz+IO51OPPTQQ3jzzTfx1ltv4a233sJ9993HS5hOpxMTJkzA22+/zfu/8MILcMovjX3xxRexePFiLF68GEuWLMG1116L6667jr9M9Pnnn48Laia/l44xhm3btvHP9u3bsX79ev48ZWWdxGIxbNq0KW7Ybdu2weVywWKxYNasWbzqQSlEdOnShS9fLBZDrVq1+EtQdfJbaJxOJ37++edKn7P8h5eens4ux4/RaGR//vOfmcvlYpIkMVEUmSiKTJIk5nK52JEjR5gkSUxRUFDAADAAbNGiRbw7Y4x99NFHDABLSUlhJpOJvfTSS8zlcvHpKR/GGIvFYmzbtm1s0KBBfHr33HMPE0WRT8/pdLLi4mLGGOPTUPq///77DABL/78zFPbSSy/Fjbtnzx4GgNntdmY0Gtnf//53duLECT4N9fyIosjKysrY008/zaxWKwPAtm7dyqclSRI7ePAgA8AcDgcDwL766qu4/qIosubNmzOLxcLS09PZF198wfx+f6XfF4lE2MKFC1mjRo1YUlISX4aBAweyo0ePVhgnFAqxAwcO8HXHGGPr169nKSkpLCUlpcJvmp6ezjIyMpjdbmcA2KuvvsrKysoYS1iPyvQOHjzIbrnlFr6+LBYLW758Of8uURTZRx99xIqKihiTl1f5MMbYvHnzmN1uZ6mpqRXmIz09nZnNZjZ48OC430cURTZ69Gj+nWazmXk8Ht4/Fouxv//973zbePzxx9mZM2f4uMoyKNM8evQoGzVqVNw28dNPPzGmmt8ffvgh7jf86KOP4vofP36cCYLAALCff/6Z92OMsQULFrBIJMKHfeWVVxgAlpaWVmF5Ez8A2Pfffy8v2f8pKSlhgiBUGDY9PZ2lpaUxACw/Pz9unEWLFjFBEJjD4WBms5ndfPPNLBaL8f6SJLFp06YxQRAuaL7+aJ/LsiQsydUFzz77LD/FUY68kE8zs7OzE8Y6P7fbjTFjxuDhhx+Gw+GAIFd5KDccKKdO7du3x1tvvYX69esDqFjSS0lJQVZWFh8equqT8ePHY/To0bw0kjiuIhqNolevXpg2bRrq1KkDyNMIhUIIh8N82qmpqXjsscfQrVs3AMCXX34ZN52mTZuiY8eOiEajSE1NxQ033BDXf/ny5SgsLEQoFML06dNx++23w2q1gqleUKkwGAwYNGgQZsyYwUtvtWrVwosvvsiXV81sNqNZs2Zx3c5HkiR4vV48/PDDePjhh5GWlgZJ1X5bJ78tgjGGpk2bYs6cOWjQoAEk1R2QCkEQMGbMGDRs2DDut4C83m+77Ta0b98+7q0hCkEQYLFYsHDhQhQVFcX169KlCwDA6/Vi/PjxcafP4XAYv/zyCwDg7rvvxnPPPYf09PQKy6BsD1lZWfjwww/RrVs3/np7yPOn3qahqlqAvJ6U/lLCQ+CV30GSX0JqkN9mLSTcOVpVli5dGrcttG7dmpdww+Ew8vLy4r4/FArh5ZdfrpLrMjXBZRnCLpcLf/vb39C8efO4H3vRokV46qmnsHz58goBcqEef/xxvpMIgoB33nkHgwYNwsSJE/kpIQA0atQIo0ePBlQ7jEIQBGzduhWPPfYYnnvuOX5BQie/lPK5557jO+7ZNrpQKITHH38cZrOZD7N7927cfvvtGDduHI4ePQrI00xKSsKDDz4IAHjnnXfiXoEOANdffz2CwSC6detWYUd++umnAQDNmzfHmDFj4nboVatW4emnn8aHH37Ip8UYw4gRIzBw4EB4PB706tULOTk5gLwsjDEsXboU06ZNw/fff8+ndaGU73/44Yfjfts9e/bgmWeewdtvv82HkSQJGRkZmDdvHr+IlHggYIzxF2F+9dVXcXX3ZrMZffr0qTSEmepmEnX1lSAfhBWTJk2KG6e4uBhr166FyWTClClT4raNgwcP4rnnnsOrr74Kl8vFuxuNRrzyyitxv01l24Uy78p2VBllu1X+r8yzMrxy92JlVTC/l/Idq1evRjgc5ussOzsbeXl5fD/o1KlT3Pxv2rQJfr//vPXzf1SV/1J/YMpONmnSJL4zMsZQUlKCwYMHY8aMGejbty8OHDhQYYe8EE2bNuUbMWMMs2bNwpo1a/DRRx9h5cqVOHToEAoLC3Hw4EG0atUqcXRAHm/s2LF4+eWX8eSTT+K+++6Lm5fMzEx06tSJD3s2Ho8HK1aswIoVK7B69Wq8++67+PHHH/HVV19h6dKlccN27twZkEvzP//8c9wydO3aFQDQvn37uB29sLAQ69atA+SDj91u5/3KysowfPhwPPvssxg/fjxee+013k+n02Hy5MkAgKFDh0IvvwcOAA4cOIDRo0fjX//6F4YMGYIvv/yyQkntbJj8Kvj7778f2dnZYKpXC40fPx7PPPMMJk+ejLvuugtQhUynTp146TTRp59+ittvvx3PPvssbr/99rg3ITPG0KJFC/7/RJL8AtVVq1bFlSDbtm0LAMjJyUFubi6gOhC/8cYbAICePXvy4SC/APauu+7Ck08+iUcffRQjRoxALBbjy9e2bdu4C2O/l3JADIfDeO+993DTTTehf//++Prrr2Gz2c56F9vvwRiDw+HA1q1b+UFGOQD86U9/4iV9ZdtXxlm5cqVqKpefyy6EY7EYmjRpgrp16/IfWRAEzJw5E5BfUAn59e6VlSbOx+VyQVK1mXz//fcxceJEtGrVCrfddhuaN2+Oli1bokWLFrjnnnsSRwfkDcvn88FutyM1NRWzZ8+Ou8BhNBrRpEmTuHESpaenY8iQIejTpw/69OmD2267DQcOHMCoUaMwevRo1K1bN2549QWNRYsWxZ2aK0HRvXt3fiGEqdpHA8Dw4cMBVQnsm2++iXtF/Y8//hi3Plu2bAkAuOaaawDVeFu3bkVZWRn/HQ4dOnTRJZzbb7+d/18QBBw4cAAbN25EWloaUlJS8NFHH+HEiROAfECwWq08TNUEQeCtJZT5KS8vj9tuMjIyEsb6/wRBgNFoxLp163gLDSZfmBs6dCg6deoUt06cTifeeustAMCwYcP4NCDfNr9x40akpKTAbrdjz549OHLkCO/vcDjiQvtSmTt3Lu655x4sXboUq1atwoEDB2CxWCo96PxeyrIUFRVh7dq1vLskSRgxYgQEQUCXLl149RCTLwyvWbPm8rwgJ7vsQlgURaSlpfHTGSUst27dWuE15uod5EK9/fbbfANljKFz58545513sGfPHhQUFGDq1Klo3rw5kBB8lRFU9XXqQBMEIa7UWZlYLAaj0Yirr74a//vf/3DixAksXboU8+bNw7x583DzzTfH7UjKstpsNmzatCnuOQBKQF177bV84xcEAatWrQLkqpWUlBQ+PGMM99xzD0RRRCwWQywWw4oVK/jBCar6yXr16vFxBDkw8RvXvSInJ4dPDwC2bNkCJEzz2LFj/G+DwcDnI1Fi2CSWys92Wq8wGAwoLi7G0qVL4w5g9957L7p16wZBLnFCrl9XtG/fvsL8BoNB6PV66HQ6eDyeCq0ULrb+/EIo211ycjKSkpLizoQuNSZX4ZjNZsycOZOva0EQUK9ePXTq1AkjR47k64XJZz4//fQTdJfxi0jPvYX9QalPpZSdwOPx/O5TLLvdjueffx4vvfRSXCN1QS41tWjRAs8//zxWr16Nf/7zn/B6vXHjV0aZp8oCM/H/auFwGNdffz0WLFiAAQMG8FN+9U5f2bgmkwnbt2/ndwVCDswlS5bEBW0oFMKSJUviXq+upnyXXq+HXq/ndYvKNJXwUpZPJ18wq6zN7MVKDIpTp07F/Q1V/aiismW4FARBgM1mw4svvsjXAWMM1113Hfr168e7SZIUd1qdeIBObCfMGKtwITGxEJGost+7JrLZbFi2bBkOHToEyMvKGMM111yD2267jQ8nCALeffddQD47vFxddiEsyC0EEqWlpSEUCsWVkNXBdyGUHePxxx9Hx44dMW/ePBQWFlYIlrp16+Lxxx/HtddeG9ddTUi4XVld8pUkqdJlUAuHw3jrrbdQp04dvvNt2bIFnTt3hk6nw0svvZQ4CqDaUd9777244OzXrx+/sUEQBHzyyScoLS2FxWKpMC+C/ICV/fv3Y+/evdi7dy/279+PgoICFBQUYP/+/Th8+DCSk5MRCAT4uhYEgZ/2K0RRvOjfIfFpXkorFLXEkFNX91xqFosFmzdv5lVcOp0OFosFrVq14ttbLBbDypUrkZSUBMjVHur1orTiUbYJo9EIk8kUVzJXB3Vl60wZV5IveJ2PVqGtfO/ixYv59iYIAkaNGoXatWvz4UKhEF599dXznhX+0V12IaycHqoDTjnKSpLEr/4KqhLjhapVqxZatWqF9u3bIxwOY9y4cejSpQsGDRqEBx54IO5uLJPJhJEjR8aNryZJEsLhMJxOJ/Ly8lCrVi3eTxRFHD9+HDjLzga5rlV9esoYw7Rp0/ipuXJqnEiQqzqUmxMqEw6H8e9//xvJyckwGAw4cuQISktL46Z38OBB5OTkoE2bNmjTpg1at27NPzk5Objpppvg8/lw5MgRPo4gCGjXrh3wO6++79ixIy5AlINdLBZDNBqFIAhxTRCj0ShOnjzJ/77UlPWyZMmSStc5AB7SSml2/fr1gGo7zMrKQnp6OkRRRCgUQkpKCjIzM3l/QRD4RcPE76jsDE+rgL1QBoMBa9eu5fsjYwxXXXVV3LJs3rwZTqfzoq8Z/NFcdiGs0+lQXl6OrVu38m6CIODee+9F06ZN4fV6kZOTg2uuueaiN9TRo0djx44d/HT+22+/hcvlwoYNG/Dmm2/yFgnKTnK2ekhlflq2bIl27dph9uzZcRuacteXMmxl0tPTK/RT33qblZUV11+94yqls8QWFIrdu3fjwIEDMKhul3333Xfj6kc7duzIH/cJuYqgV69eOHLkCPr06cNLq8uWLYs7++jcuTM6deoEv9+PBg0axD0r+XwE+ULYzJkz45anQYMGuP3223mV0/Tp0+NK3F6vF7t37+bTuNSU+Vq7dm2FahDIB9x///vfMBqNEOTqi6+//jquyVytWrUwePBghMNhWK1W9OvXjx9IBEFAaWkpCgoKAHl51PLy8pCZmQm3243s7Gx+oKupBEGA2WzGli1b4s5qEqsclIt3VfGb1SSXXQgLggCTyYTp06fzOjVBvmnhp59+wvr16/Hzzz+jdu3aFUoU5zN//nzEYjF+AWrgwIGYPXs2br/9dkyZMgXXXXcdn6YgCLx5V2WmTp2Kn3/+GStWrODNx5h8Nfijjz6qcANAogMHDvB6VuU73333XbzzzjtYtmwZhg4dGje8OuSV0sZPP/3EbzJRMMb4zQTKxp+SkoJp06ahsLCQl8rMZjNee+017NixA+vWrcOmTZuwcOFCNGzYEO+//z6ys7NhMpkwf/58eDwe/jtkZWVh/vz5WLNmDdasWYOePXte1O+QnJyMBQsW8BI/k0/p33nnHWzcuBG//PILfxaFsj5/+OEH7Nmzh3erCjabDT///DN/Spjyu0iShKNHj2LBggW8KsJoNGLbtm08ZBhjMJlM+O9//4tff/0VK1aswOuvvw5Bdba2bt06XrDYunVr3HLUq1cP69atw/r167Fq1Srk5eXxfjURYwxmsxmFhYXYsGFDXMgqF+CY3DonMZgvR5ddCEN+aM3SpUvx888/841VEAQ0atQIXbp0Qb169eLuPrpQe/fuxbRp03g9ptFoxJ133okvvvgC//nPf3izOJ1Oh71792LWrFmJk4hTp04dpKWl8SBhjCE/Px8PPfQQUlNTEwePs3//fnz22Wd8gxUEAS1btsS9996Lvn37Vth4bTYb7HY7L30lJydj48aNlT64ZunSpXEXsvR6PURRxL/+9a+4ekmr1Yp27dqha9euyM3NhcVigSAIyMzMRJ8+fRCJRLBjxw7eygLyTtawYUN07doVjRs3rnAQOB9Bvhj4/PPPIxQK8R04NTUVnTt35qVApfuOHTsq3LV2qSnf5fV68fnnn/MDDuTlVS7IKWcEer0eJpMJzz//PMrLy3nwpKSkoHPnzmjfvj1MJhOYfFfikSNHMGXKFNhsNiQlJeHTTz+NazkhCAKaNGmCLl26oEmTJghX8nClmoTJj7bU6/V488034woSivLycixevLjKLqjWJJdlCEO+0PXoo4/i0KFDvGSi7BxFRUW48847eUmysosYSiiq+zscDsyYMQPTp09HJBLhO4+aIAhYuXIlRo8efdadgTGGt99+G1DtmDqdDps2bcKYMWNgs9n4dJUdUUq47dZut+OBBx7A//73Pz4fOrkeOBaL4Y033oAgBzSTmwZdf/31vA7OaDRi79692L59O/8eSZJw+vRpLF68mD95TZGWloaPP/4YQ4cORX5+Pl8nyjpV5qGoqAhjx47F3LlzkZKSAkEQMGnSJH5Dg3LAYIzB5XLh6aef5kGsLOv56osdDgfmz5+PIUOG8La06t9C+f/KlSvx5z//GVarlZf+1etE2SaU7grlN1dvF+r+iZRQsdvteOGFF/hyMjlY1AchRVJSEpYtW4Zbb70Ve/fujZu+enk2btyIYcOGoaioCFarFUajEYcOHcL9998Pp9PJ16fyOXLkCF588cW45VSfBTH54rJ62X8v9fq8EIL8oB+Hw4HFixejqKiI7wfKtJR2/Ur3y9ll+ShLQX7CmCiK8Pv9+Otf/4revXvDaDTiwIEDePnll3H48OG417V4vV58+eWXsNvtSE9Ph81m4xu41+vl9Y2i/NSwli1bYty4ccjLy0NycjJCoRCOHj2KhQsXYsGCBbDZbDCbzSgvL8fdd9+NmTNn8o1eaePbrl07XH/99fzq+sqVK2G1WvnRPxQKoUOHDsjJyeE7Znl5Ob777js4HA5Eo1F4vV6MHj0at9xyCzIyMlBaWopPPvkECxYswIgRI/i0GGMoKCjA9u3b+bMfysvL8cknn2DUqFGQJAk6nQ5PPfUUnn322QqPM4zFYtDpdAgEAgiHw/jLX/6C3r17o379+hAEAWfOnMGKFSvw3nvvAXKdtSSXcERRhM/nw+TJk3HjjTfCbrejoKAAr732GrxeL2688UZ+waqsrAwrV66EJEmVXnBSKPOfnp6OkSNHomfPnqhVqxa/qDl//nwsWLAAycnJMJvNvD3zjTfeiLp16/KA3LdvHzZt2gSLxQKfz4eBAwfG3ehy/PhxLFmy5IJK0tFoFLFYDKdOnUJSUhIE+TGQOTk5KCsrizs7UbZR5alpEyZMQN++fXk12fHjx7Fo0SJ8/vnnsMnvVRNULWpcLhfatGmDu+++G61btwYAbN++HW+//TaSkpIwZswY/j1erxfPP/88TCYTXz5l21ae7ncxrwtStodwOIy+ffsiKyuLd/f7/fj4448rvCnjbHw+H/r27RtX/y0IAn744Qf4fL5zbgOXi8syhNWkSp4hqzzvN7GpU2pqKnQ6XdwFEyUMBPk0WBE6y7N5dTodLwFCvkuqshBu3rx5XL2vUsoxyo8NVFT2PcoGruzIicuhzIPL5YqbVlJSEgwGA0LyQ37y8vKwfPlyfhErEAigRYsW8Pv9FaozoNr5BNWdZokSd75zjWOz2WA0GuOaj5nNZpjN5grroTKCHHKJF6ogNxszq56rAXm9eL3euDbeyjwozfNcLldcSVyv18e1n66McjAEgE8++YTf/QX5gUkjRow46+uozrUMBoMBtoRbiJX1qdfrEankGc1K+Cd2V56NrDxsSqE+6F8oZR4MBgPcbneFi5GJ28D5BAKBCs0gk5OTeZXF5e6yD2GtVRbCoiiiadOmcLlc1X6k9/v9uPHGGzF16lS0bt2a35bL5Ofc9uvXjx+MfgulhKUl4Tc0P/ytotEo0tPT8fbbb6N58+Zo0aIFX/5QKISuXbuisLDwokqa5Mry2/Y0cklUV1CohcNh1K5dGz169IgrsUiShM8++wz4nfVwWgcwqnm9MsZgtVrRq1cvNG/enC8/YwzLly/Hzp07K9zhR4jab9/byAUT5HoulnChRKvAUuYHcli43W68++67+OCDDy76VJL8f8pvLIoiCgoK+JsxtPqdyR8DVUdUsWAwiGuuuYY/Wxhy8D3xxBMIBAKV1r1WpVAohJycHNx1110wmUw4deoUFi9ejF9++QV2ux26y+x14lVNFEWYTCbcc889aNy4MUKhEDZt2oQlS5agvLyctw0m5GwohKtBMBis0C5ZudijReCFw+G49r7KxZ8LuRhGKlJazKglJyef94E7hIBC+MpWEy6iEXKlozrhKxgFMCHaoxAmhBANUQgTQoiGKIQJIURDFMKEEKIhCmFCCNEQhTAhhGiIQpgQQjREIUwIIRqiECaEEA1RCBNCiIYohAkhREMUwoQQoiEKYUII0RCFMCGEaIhCmBBCNEQhTAghGqIQJoQQDVEIE0KIhiiECSFEQxTChBCiIQphQgjREIUwIYRoiEKYEEI0RCFMCCEaohAmhBANUQgTQoiGKIQJIURDFMKEEKIhCmFCCNGQkJ6ezhI7VjXGGCRJSuxcZQRBgE5HxxtCSM1T7SHMGIPX60VmZiYEQYAgCImDnJUS3nq9PrHXOXm9Xuh0OgpiQkiNU60hzBhDeXk57r77bphMJoRCoQsORkmSkJWVhdq1a2PLli3Q6/VgjJ03xBljsFqteOONN5Cenp7YmxBCNFVtIcwYg8FgwJkzZzB79mxMmDABAC64VCuKIsaOHYvrr78ed911F/R6PURRPO/4oiji7rvvxvvvv08hTAipcS6sGHoJCIKAWCwGyIEMAOnp6XA4HBf0UaahcDgc5x0/JSWFf59SciaEkJqk2kL4bJR64fN9ziZxuMQPIYTUZJqHMCGEXMkohAkhREMUwoQQoiEKYUII0RCFMCGEaIhCmBBCNEQhTAghGqIQJoQQDVEIE0KIhiiECSFEQxTChBCiIQphQgjREIUwIYRoiEKY1EiCIEAUxcTOhFx2KIRJjaQ8A9rpdP7uj9/vT5w8ITVGtb1ZA6rXG82aNQt33XXXRb3pwul0Yty4cbjuuutw1113IS0t7bzPCxYEAWVlZbjrrrvwwQcfwOFwnHccUnM4nU7ccccdaNasWWKvi7Jq1Sr8+uuvsFqtib0I0RyVhEmN1qxZM/Tr1w89e/a86M+1116L6667DhkZGYhGo4mTJqRGoBAmNZogCIhGo2CMXfRHkiT+lm16tRWpqag6gtRIjDGEQiHccMMNaNCgwe/63bZt24adO3fCYrEk9iJEcxTCpMZijMHv9yMSiST2uig2m40CmNRYVB1BaixBEJCcnIz09PTf9aEAJjUZhTAhhGiIQpgQQjREIUwIIRqiECaEEA1RCBNCiIYohAkhREMUwoQQoqE/VAgLgkA3WxBCLit/mBC22WzYs2cPFi5cCKPRSGFMCLks/GFC2GKxID8/HwsWLIDdbk/sTQghf0h/mBCGHMQUwISQy8kfKoQJIeRyo+lT1FJSUhIHuaQEQYDL5TrrU9QkSar258zq9frETtX+LjVBEKDTVTz+1pT50EJ1bwtnW/aa8Bsoz2KuTjVlPnQ6XbVfb9IkhGfPno0JEyYgOTk5cZBLzufz4e6778b7778f9/jLWCwGyDtfdTIYDHEbmyiKmux4er1e8/lAJetDC5Ik8e2hOiUue034DZTgq+75UB6+r54PURSrff8UBAEGg6Fag7haQxjyc4G//fZbFBcXV8uCMsaQlpaGsWPHIl1+frEkSQiHw3jwwQfRoEGDxFGqDGMMDzzwAJ8PyOvjv//9LyBvANVh+/btmD17Np8P5eD4xhtvgDFWLfMhCAI2bdqEuXPnxq0PLTidTjz00ENo1qxZtS1/IBDA1KlTK2wLb7zxRtxwVUVZzsOHD+PVV1/lBRRRFCEIAp599tlqPTNYtWoVvv/+e37NJxwOo1mzZpg4cWK1zse8efOwa9euan38abWFsCC/psbj8eDbb79FnTp1qmXlCoKAM2fO4NZbb+UbmiRJiEQi+Pe//428vLxqOeozxhAMBnHTTTdV2PF+/PFHWK3Watn5DQYDFi9ejOeee07T+TAajfj222/x6quv1ogQfu6559CjR49q2RYEQcCpU6cwYsSICr/BwoULq+WFpIwxGAwGbNy4EX/729/iQliv1+PTTz+FyWRKHK1KGI1GzJs3DzNnzuTrIxQKoW3btnjhhRcSB68yBoMBzzzzTLW/FLbaQhjyxufz+dC7d2907dq12k5DCwsLMW/ePKSlpQHyBhiLxdC5c+dqb22xePHiuGoYn8+HAQMGxA1T1U6fPh33uh8mv0roxhtvTBy0Sp08eRK7d++u1lJHZUKhEK666iq+fVSHaDSK5cuXIykpiXerzm1BEAQwxuByubB582b+Gyin/9ddd13CGFXr6NGjOHDgAMxmMyBXF6ampqJDhw6Jg1ap3bt348yZMzAajYm9qky1hbAgCIjFYjAYDPD5fAiHw4mDVBlBEOBwOOIuiinBUx0lH7XK6sF9Pl9ipyplMBgqBB+TXyVUnSqbD62EQqFqrRcWBCEugBU1YVuQJAmBQCCuW1UzGo08gBWxWAyhUCiuW1Uzm83VGsCozhCGKoiVMFROfS62WkI5bUqkTCuxf2UtEgghpCao1hAmhBASr3oqZQkhhFSKQpgQQjREIUwIIRqiECaEEA1RCBNCiIYohAkhREMUwoQQoiEKYUII0RCFMCGEaIhCmBBCNEQhTAghGqIQJoQQDVEIE0KIhiiECSFEQxTChBCiIQphQgjREIUwIYRoiEKYEEI0RCFMCCEaohAmhBANUQgTQoiGKIQJIURDFMKEEKIhIT09nSV2vNQEQUAsFgNjDLFYLLE3IYTUCIIggDEGo9EIvV6f2LtKVHkIC4KAcDgMSZJQr149ZGZmQqfTgbEq/VpCCLloSl6dOHECbrcbZrM5cZBLrkpDWBAERKNR6HQ6NGrUCGlpabw0XF1HGUIIuRCiKMJgMIAxBkEQcOTIETidThiNxsRBL6kqDWEAkCQJVqsVLVu2hCRJfAGpJEwIqUmUXBIEAQCg1+uxfft2AIBOV3WXz6puyjJRFOFwOOJClwKYEFLTKLmk/CtJEpKTk6s8r6o8hCEfRagemBBCKqqWEKbwJYSQylVLCBNCCKkchTAhhGiIQpgQQjREIUwIIRqiECaEEA1RCNdQSoPx3yJx3MS/LwV1o3bI36F8fgvG2O9uRfNbv1uhnv/EZbtUlO9QllWZ9u9ddvLHRSFcQ/n9foTDYYRCobjP+R6AJMgPS1KHifrvS4ExBp1Ox+dRFEXEYjH+78V+F2MMwWAQwWAQ4XA4sfcF+b3LqYwfi8UQjUbh9/sRjUYB4HdNV039HUajEYJ8W38wGEQoFPrNy07+2PRWq3VaYsdLSZIkOBwOJCcnQ5KkxN4kAWMM0WgUderUQVJSEpKTk5GcnAybzYbk5GQAQCQSOedtlHq9Hj6fD6FQCIwx6PX6cw5/sYLBICKRCOrUqQObzYZIJIJAIACLxQK9Xn/RpTq/349evXqhXbt2KC0tRSAQuKhnizDG4PP5EA6Hf9eyiqKIUCiE1NRUpKSkQKfToby8HCaT6ZKEMABEo1F+QNXr9RBFEbm5uejYsSPcbje8Xi8MBkPiaKSaKWcs5eXl593ffi8K4RqGMYZIJIJbbrkFLVq0QKtWrdCiRQu0bNkSbdq0QSQSwdGjR3kwqEu8yr8ejwddu3ZFt27dEA6HKzyERB0o6mmona2b2+1GdnY2hg4dipycHLRo0QK5ubmwWCwoKCiA2WyGTqc76/iJ3QVBQCgUQocOHZCZmYn9+/cjGAxWOr+J4yv/DwQC6N+/P/Ly8lBcXMwfGpX4XeeiHLBuvvlmdOrUCS1atEDr1q3RoEED7NmzB4IgnPPAoJ63yr5XWc769evjhhtuQHp6Oo4cOQIAyMvLQ6NGjVBSUgKXy1UhhAXVMw3UH3X/xP9XNg/kwinrmEL4CsTkp8y1atUKRqMRmzdvRnFxMY4fP46SkhKcOnUKXq+Xl6YikQjC4TCCwSAAwGAwwOl0onnz5mjevDkKCwtRUlICk8kEnU6HUCjES43KM54hl57dbjdCoRBEUYTP54Ner+fBIwgCAoEA0tLS0L9/f1gsFuzatQslJSWwWq1o2rQpIpEITp48CUEQEIlEEAqFeKlZkiQIggBJkqDX6xGNRhEIBOD3+xEMBtGuXTtYLBbs37+fB6KyXIFAAKIo8jDS6/UQ5FP7SCSCEydOoHv37rDb7di8eTOi0SjMZjOv4lDPg8FgqBBQoihCkiTccsstyM7Oxr59+3D48GFEIhG0atUKKSkpOHjwIA/HQCDAq06i0Sh/8lYsFuNnIMpwyrIAgM/nQ2pqKvLy8uB2u7Ft2zakpKQgPz8fhw4dwtGjR+PmW5IkhEIh+P1+QP5tRVGE1+tFIBCATqeD0WiE3+9HIBBANBqFXq+HwWDg01C2kbMtO6kchfAVTNmZ27RpA8YYVq1ahSNHjuDUqVM4duwYAoEAkpKSMGrUKLRo0QIWiwX9+vVDbm4uysrKcOzYMfTv3x8dOnRAWVkZcnNzkZ2djb179yIYDKJ58+bo168funTpgvr16+Pw4cMQRRF+vx933nknOnXqBFEUceutt6K4uBg+nw9GoxGxWAyhUAgDBgyAw+HA2rVrsXbtWpw8eRJOpxOtW7eG3W7H7t27IYoizGYz+vTpg549e6JNmzYQRRHFxcWw2WwIBAIwGo0YOHAgevToAbvdDpPJhOTkZBw4cACRSAR+vx+5ubl8XtPT01FYWBhX3SCKIux2O+69914e8Ndccw1OnjyJoqIipKamol+/fujZsydatWqFYDCIY8eOwWKxxIVRMBhEXl4ecnJyUFBQgPnz58PpdKKoqAgNGjRA7dq1cfDgQQQCAbhcLnTt2hV9+/ZFx44dkZmZyQPbaDRi3LhxaNGiBZxOJ2655RZ07twZwWAQhw4dQs+ePdG7d294PB5kZWWhZcuWWLNmDW6++WZcd911cLvdKC0txeDBg3HNNdcgGAyiT58+6NKlC5KSklBYWIhoNIqbbroJvXv3xvHjx3H8+HE0btwYt99+O7Kzs5Gfn49AIIDk5GT069cPPXr0QOvWrREIBHD8+HF+pkLOrTpDuOqmTH43vV6PunXrokmTJmjcuDGaNm3KN4ZIJILU1FRkZ2fj9OnTSElJQc+ePZGWloaSkhKUlJQgOTkZBw8exJEjRxAOh9GmTRv07t0bjDEUFRUhOzsbt912Gy8hKSW7Ll26QJIfOwrVlXur1YrU1FREIhHs3r0bmZmZSElJQXl5OZYtW4bNmzdDkp88NXToUDRu3BjFxcWIxWK49tprcdVVV8Hj8YAxhsGDB6Nhw4Y4c+YMGjRogKysLH6Q9vv9uPrqq9GzZ08Eg0EcOXIEubm5GD58OCRJ4qViZT3s2L4dkiTBaDQiPz8fHo8HTZo0wW233Ya6devi8OHDEAQBffr0QW5uLi+pqpctMzMTkUgEhw8fRq1atZCcnAxBELBp0yasXLkSkiRBkiQMHjwYXbt2hdvtxunTp5GTk4MBAwZAFEWIoohIJAKbzYZevXrh9OnTMJvN6NKlC2rVqoUTJ05g//79sFqtOHPmDPbv3w+LxcIvBqovDBoMBlxzzTVwOp1gjCEnJwfNmzdHOBxGJBLh1RNKvbIkSYhGoxBFEcnJyRg0aBAaNmyIo0ePgjGGXr16oUmTJvwMiErENQeFcA0mCAIGDhyIm266CQMHDkSfPn2g1+v5TlReXo5vvvkG8+fPx/Hjx2EymWC327Fr1y6cOXMGer0eR48exZYtW6DT6dC+fXtEo1F88803mDNnDtauXQuHw4GWLVvyK/MWiwVLly7FzJkzUV5ezt8sIEkSLBYLmHzhUBRFXio1m804evQoiouLIQgC8vLykJycjF9//RU//vgjvv76a4RCIbRv3x6MMTRr1gypqakoKirCnDlzMGfOHJSXl0Ov1/OQzc3NRTAYxLx58/D6669j06ZNyMjIQKNGjRCJRAD5ICWKIlauWsVP37ds2QKn04k2bdrAZDJh9erV+OGHH7Bs2TLEYjG0a9eOt3qAHMLKKTzkA4ByMEhKSsKJEydQVFSEQCCAOnXqICsrC8eOHcPXX3+Nzz77DMXFxahTpw6vjlHOZGbOnInPP/8chYWFsFgsaNiwIfbt24f9+/dDp9OhrKwMmzZtgtVq5fOSaNGiRfjqq6+wc+dOGAwG1KpVi8+7IFfNMLmlisLj8aBz585IT0/HqlWr8MEHH2D27NkIh8O45pprEA6HefUJqRkohGu4FStWYMWKFVi1ahXWrl0LSZLidjqr1QqHwwFJrnNljMFqtfLTKZ1OB5PJBIfDAavVClEUcfPNN+ORRx5BXl4edDodbDYbDx5RFHkp2mKx8O8RBAGiKPL/K8NDDmilBGc0GmGz2RAKhVBaWgq73Y5oNAqn0wm9Xo/MzEykpqZCr9ejqKgI9evX56VrJcDq16/P6z9HjhyJadOmoVmzZjAYDEhKSooroev1ethsNv63yWSC2WyG2WxGKBSCy+VCrVq1cOrUKYRCIdhsNhiNRj4NZVmUQDMYDNDpdPyAEJOb3kUiEVgsFhgMBrjdblgsFmRmZmLfvn3Q6XSoW7cuYnLzQaWapFatWggGg/y7DAYDTCZThflOpMyTXq9HamoqotFo3DKfC2MM6enpiEQiaNOmDR588EGMGTMGJpMJSUlJMBqNiEajVBKuQSiEazBRFHHs2DEcOHAABw8exKFDh4BzXPlm8imqKIrQ6XS8VKlLeJbzgQMHUFJSggMHDmD9+vU4ffp0XGsE5SWH6nEMBgO8Xi8kSYLJZEJaWhq/kMcYw4ABAzBw4EB4vV4+f4LcDlY5GECeRyWElFK9El7KOMr4oiji4MGDOH78OPbs2YP169fzMFcCMzGUlNNy9TIzOdx1uv9rMcEYgyhXaSjrKyQ3GXM4HAiFQohGo/B4POjRowcGDhxYoRQKubmZMk3loKReTvWwib+Z8tskdldTplvZNJT1qCybehyd/PzuwsJCHDt2DCdOnMCmTZuwe/fuKn9VD7l4FMI1nBJySmlNFMUKwaOmBBzkQLBYLLwVgsfjgclkQiAQwMKFC7Fr1y5ej6qcjldGCSqdToeCggJYLBb06tULSUlJEAQB7dq1Q4sWLQA5OF0uF2w2Gxo1aoRQKITatWsjPT0doVAIZ86cwenTpxEOh9GkSRPEYjFYrVbYbDYerGfOnEE4HIbFYkFZWRl+/PFHHDp0CIIg4ODBgzCZTMBZSoXKOnK73UhOTkZWVhacTidatWoFi8WC8vJyHp4Ko9GIwsJCQG4uVqdOHUQiETRu3BgtWrRAeno6b2kQjUaRnp7OD3ItW7aEKIooKiri83UuykHAYrEgLL8A92IoQazX65GWlga/3486derE/eYlJSUwGAxIS0vD8uXLsXTpUkiShI0bNwLy8la27og2qHVEDaOUbNq2bQuLxYIOHTqgY8eOyMvLQ+fOnWE0GlFUVIQOHTpAFEUUFBQAAFq0aMFbF3i9XjgcDjRq1AiNGzdG48aNkZ+fj1AohMaNG6NVq1bo0qULOnbsiLp168Lr9aK0tBQdOnSA0WjErl27eIlKoZebhR04cADZ2dmoX78+cnNz0bZtWzRu3Bgulwtr165FJBJBaWkpmjRpgiZNmqB9+/Zo06YNdDod1q1bx7+rcePGqF27Ntq3b4+OHTtCEAQYDAYcOHAAHo8HkiShYcOGyMnJQZcuXXg4njp1Cn6/n4cO5DvasrOzUadOHbRr1w4ejweHDx9G06ZN0bRpU3To0AE5OTlgjOHXX3+F3+/n1Q6QS/nHjx+HzWZD/fr10bp1a+Tl5aFVq1aQJAn5+fk4evQo/H4/0tLSkJ2djby8PHTo0AHp6ek4fPgwdu7cCZPJhLy8PDDG+Dps1KgR6tevj6KiIpSVlUEUReTk5CAjIwOtW7fG+vXrkZOTg8zMTBw8eBAulyuuWZzL5UK9evXQrFkznDx5EkeOHIHNZkPDhg3RuHFjdO7cGfXq1YNevkGnqKgIxcXFaNy4MRo1aoSrrroK3bp1Q/PmzeFwOHDw4EHo5OoWcnZCNbaOoBCugURRREZGBtxuN8rLy+FyueB2u+HxeHD69Gl4PB6kpqbC6/Xi2LFjYIwhIyMDPp8PJSUlEAQBJ06c4O1sT506hfLycpSWluL06dMIhUIIBAIoKSnBhg0bcOTIERiNRmRmZsLn8+HIkSPQV3LnmV6+gHX48GEEAgEEAgF4vV4UFhZi06ZNKC0thcPhQDgcxsGDBxEOhxEOh3HmzBls27YNR48ehdFohMlkwsGDByFJEvx+P/bt24czZ85AFEUcP34cAHDq1CmUlpbyeS0uLsaGDRtw6tSpuLpUpWRZVlYGAHA6nSgpKcGJEydw7NgxhOTbgY8fP44tW7bg2LFjsNlsFapbLBYLDh06xHc6r9eL48ePY+vWrdi/fz+Sk5NhNpuxb98++P1+xGIxeDwe7Nu3Dzt27ODVEikpKfB4PCgqKuLVG5FIBKdPn4bX6+W/STQaxZkzZ3Ds2DHUqlULoVAIJ0+ehN/v5yXvkpIShEIhOBwOiKIIp9MJj8fDD0ThcBilpaXYvn079Ho9XC4Xjh07BqvVikOHDvHSu8vlws6dO7Fp0ybYbLZKq3FIvOoM4Sp/23I0GkWDBg3iLlyQc2OMwe/3x+0oglw/aDAYeIN+ALDZbBDkGymU01ylFBsMBiHKrRhMJhOMcsN+5ZRdKd0qF7t8Ph8AwGw2w2QyIRaLVbrDiqLIv5/JV+eVcBXkqgulBUUsFuOBbjabeQlMaWolyU3LRPmin9FohMFggF6vh1++SUGUX0WuXNiqTES+OUQv1zVbrVbeHEuZB6PRCKP8zAY1Qa67NplM8Pv9EOUqH6V0bjab+TiMMYTkG1ogn/4rLUiUfgB4EzePxwODwQBJkmC32/kyh0IhvjzKulJ+J6WaQrnI6PP5+PwohRn1POjlunWdTodk+dZ2pb9S8NHr9dRG+CIoIXzo0CF4vV6+3VYFCuE/EHUQnIugekpXYrez/XuuYStzvn5QXSisbDhlGCQMV9m4SrezHRQUZ5tv5W/1tBIJCRfBLpZ6vhO7S3KLFuX7E/9WxjnXNBKHPZ+LGZZUJFRjCNNh8Q9ECZLzqWwYpdvZ/lU7Vz/F+fqdbxrKMInDnavbuQIY55hv5e9zBSw7R0BfCPV8J3ZXB2Jlf6uHPds01P9eiIsZlmiLQpj8YVCwkMsRhTAhhGiIQpgQQjREIUwIIRqiECaEEA1VSwj/nqvOhBByOauWEKY75QghpHLVEsJ0lw4hhFSuytNRkN83ptyNRFUThJCaSMkmQfXs7Oq4y7fKb1tWqiJyc3Oh0+n4PfKEEFKTKLfFQ37Wht/vx969eyt93silVOUhDHnhlEcrKg+NobufCCE1ld/vR0FBQdwjT6tKlYewIL+aXGG32/lj/wghpCZh8jsUXS5XtT11rspDWI3Jb4gghJCarDqrTKs1hAkhhMSr+rI2IYSQs6IQJoQQDVEIE0KIhiiECSFEQxTChBCiIQphQgjREIUwIYRoiEKYEEI0RCFMCCEaohAmhBANUQgTQoiGKIQJIURDFMKEEKIhCmFCCNEQhTAhhGiIQpgQQjREIUwIIRqiECaEEA1RCBNCiIYohAkhREMUwoQQoiEKYUII0RCFMCGEaIhCmBBCNEQhTAghGqIQJoQQDVEIE0KIhiiECSFEQxTChBCiIQphQgjREIUwIYRoiEKYEEI0RCFMCCEaohAmhBANUQgTQoiGKIQJIURDFMKEEKIhCmFCCNEQhTAhhGiIQpgQQjREIUwIIRqiECaEEA1RCBNCiIYohAkhREMUwoQQoiEKYUII0RCFMCGEaIhCmBBCNEQhTAghGqIQJoQQDVEIE0KIhiiECSFEQxTChBCiIQphQgjREIUwIYRoiEKYEEI0RCFMCCEaohAmhBANUQgTQoiGKIQJIURDFMKEEKIhCmFCCNEQhTAhhGiIQpgQQjREIUwIIRqiECaEEA1RCBNCiIYohIkmBEFALBZDMBhEOBxGJBKBKIoQRTFx0CqnnpdYLKbJPJArF4VwNQiHw/D7/ZAkKbEXPB5PYqdLTpIkMMYSO1+QUCgEv99fYXxJkuD1euO6nUviPESjUcRiMbRu3RodO3ZEkyZNoNfref9QKHRBYcgYQygUgtfrRSgUqnQdQx5OFEU4nU7+CYVCYIxBkiR4PB706NEDdru9wrISUpWE9PR02uKqUCQSQYsWLZCVlYXFixcjKSkJOt3/Hfs8Hg+GDx+OL774Aunp6Ymj/m6CICASiUAQBACAXq/n/78QoVAIubm5qFOnDn788Uekp6dDFEXodDqIooj+/fvju+++g91uTxw1jiRJiEQiMBqN0Ov1iEajAIBJkyahVatW8Hg8sFqtYIxh0qRJsFgs6NatG/bt24dgMBgXzmqSJMHlcuHqq69Go0aNUFZWhnXr1sFsNseNwxiDx+NBUlIShg8fjlatWsHv9+PHH3/Etm3bAACTJ0/Gm2++iUWLFmHQoEFIS0u7qHVFyG9FJeEqJAgCgsEgsrOzMWrUKAwZMgQulwuMMTDGEIvF0KtXL0AOCuVf5bRcFEU+rPJ/hSiKcaW+yk7lldLq448/jrS0NB5+SulPGedspcdoNIqGDRtizJgxuOWWW+B0OmEwGBCLxWAwGNC7d29eooX8feppKvPucrnw9NNPo0GDBggGg2CMoUGDBmjSpAlefPFFPPzww5gzZw6fTigUQvv27VGnTh2IoohoNFph2UVRhMvlwqRJk3DrrbfCarXi2muvxX333Qe32x23Pr1eL2677Tbs3r0bc+bMwdSpU/Gvf/0LGzZswH//+18AwO7du/Hrr79i5cqVgPzbiaKIWCzGqyii0Sj/HdTdY7EY71cZ9biJf1c2rXNViajHVX+vev1IksT7xWIx/vuebT4S+59teyBVg0K4CjHGYDAYAACBQACDBw9GXl4ewuFw3DAAeOkyGAzCaDTCbDYDchBKksTDjzGGaDQKnU4HSZJ48AmCAL1ez3cwJQBtNhtSU1NhMplgNBrjdkSj0Qij0YhoNIqoHNCVCQQCGDJkCHJychAMBiEIAph8YADA500p7ZrNZh4SAGCz2ZCSkgKLxcKXKykpCYwxFBQUIDk5GbFYjJ8hOBwOzJo1C3v37oUgCLBYLBDl4A2Hw9DpdDAYDLBYLGjatCmefPJJfPzxx5g+fTqys7PRsGFDPm+SJMFsNmPKlCnIzs7GW2+9BZvNhiFDhkAQBEyZMgX9+/fHqlWr0KNHD7zzzjtITU1FMBhEKBRCUlISrFYrIpEI7HY7jEYjQqEQrFYrrFYrfD4frFYr7HY7nz81URRhMplgt9uh0+n4mYndbofZbEYoFILFYkFSUhJEUYz7vkgkUmFaer2ef5cyXUEQEAgEwBhDJBKBy+WC2WyG3W6HyWSCy+VCJBKBwWDgw0ciETDGYLfbEQ6HEYvF+LQFQaAgrkYUwlVMCdmjR49i8+bNGDhwIN9h1P1FUYTb7cYdd9yBBx54ABMnTsTf/vY3NG3aFLFYDJMmTcK1114Lv98PyKfPY8eOhcvl4uONHDkSbrcbkMM7KysLEydOREpKCm677Tb07NkTbrcbzZo1w1//+ldMmjQJ999/P+677z7YbLYKOz3kEmFBQQF27tyJAQMGIBAIQKfTxZ2qKyWu8ePHY8qUKbjnnnvw17/+FQ0aNEBaWhomTpwIh8OBwYMHo3///mjfvj0GDx6M1NRUPPTQQ+jcuXNc3bjH48FTTz2FVq1awWAwYPLkyRg+fDjcbjfS09Mxbdo09OzZE4wxzJgxAykpKUhOTgbk0I0mlJx1Oh2MRiMkScKGDRsQDAbx/fffY+LEiXjmmWfg9/sxduxYMMbw0UcfweVyoVGjRli+fDmKi4tx7Ngx/PTTTygpKcEXX3wBvV6PPXv24MCBA1i6dCmKiopQUlKCH3/8kdf9KwcBt9uN//znPygpKcGoUaPg8/kwbNgwlJSU4P3330cwGMSCBQtQXFyMDRs2oKSkBEVFRfjyyy+Rmpoad3B0u92YOnUqSkpKsHTpUuzZswclJSXYtWsXhg4divLycqSnp2P+/Pk4dOgQSkpKUFBQgLlz5yIajaJjx44oKSnBhx9+CJ/PhwcffBAlJSUYMWIEPB4PlixZgpKSEtSvX/+cB2VyaVEIVwNBvvr+5ptvolatWhg0aBBcLlfcMD6fD2PHjkVycjKefvppPPvss1i3bh0GDx4Mv9+PY8eOIS8vD5FIBA6HA2lpacjKykJmZiZSU1ORkZGBHTt2wGq1AgDMZjMOHTqE119/HWVlZZg3bx5++OEHAMDIkSOxfv16TJ8+HdOmTYPb7cbEiRPh8/ni5kkhiiJef/11ZGdn44YbbuBVKkoQe71ejBo1CgDwz3/+E9OnT8fOnTsxaNAgPg8ulwtff/01vvjiC6xduxZfffUVysrK8Prrr2PlypVITU2N+05JkiAIArxeL9566y107NgRtWrVQvfu3REKhfDdd9/BZrMB8oHM5/NhypQpKC4uxokTJ3idsE6ng9frxapVq6DT6fDRRx/hk08+Qffu3fHBBx9g2rRpWLNmDV8WJbzffPNNdO/eHfv27cP06dPRoEEDMLkax+fzIRaLwW63Izk5GS+99BJcLheuv/56jBw5Ei6XC3q9vsKBVn1gUP8tSRL0ej28Xi+eeuoplJWV4aabbsKQIUMqvfjJGEPz5s3x5ptvYvXq1cjKysKECRMAAA888ACGDh2Kw4cPY+rUqSgtLcW4cePw5JNP4qeffoLT6cR1110HQRBw5513AgAmTpwIAOjQoQOKioqwZ88efsZCqh6FcDVRdrgFCxZg+PDhaNOmDSAHNOTT8+7du+Pw4cPo2rUrunXrhv3796NevXoAgP379yMzMxMZGRlo0aIFNm7cCJ1Oh4yMDCQnJ8NisWDHjh1852GMwWKx8O83GAwwm83o1q0bLxEqJchff/0V2dnZaNWqVYXTabVly5bhT3/6E5o1a4by8nI+7xkZGejYsSMKCwvRpUsXdOnSBUePHkXjxo35PDDGYDQakZSUhOTkZBiNRj6+zWaLK1mrWSwWnDlzBitWrMDkyZPRqVMnvPHGG7Db7ZAkCTqdDh6PB2PHjkXdunXxzTffwOFw8KoNQRDgcDjw2GOPYdy4cVi3bh1GjRqFtWvXYuPGjRg6dGjc9zHGULduXbRo0QIulwsjR47Ev/71L0yfPj1uOKUK4Oabb8ZTTz2F77//HowxNGnShE/nbMuUSKkeePrppzFjxgy88sorAIAbbrghcVA+3c8++4zPl3JgBoDhw4cD8pnSiy++iMcffxyxWAw9e/YEAGzfvh1paWkYMGAAmjRpgmAwiKuvvhoDBw6EwWDA5s2b+feQ6kEhXE0EQYDRaMTq1atRWFiI/v37x/VPTU2FTqdDnz59MHToUAwdOhR33XUXgsEgateujX379sFsNiMpKQk9evTArl27sHXrVjRt2hQpKSk4ceIEvF4vDx81JQyi0SgyMzPh8/kgyvXIAOD3+xGJRJCSkpIwZrzFixejpKSEz7uyo6akpECv12PQoEEYPnw4hg8fjj/96U8IBoO85YTyXYKqvvFCQ8rhcGD9+vWoU6cOCgoKcOzYMQiCAIPBAEmSYLPZ0K1bNzzxxBP84qGCyXXjdrsdH3/8Mbp3747OnTvj22+/xdVXX40vv/wSTZs2jQudkydPIikpCaWlpbyaRCmZqzHGeIk7FApBEASYTCZAVcefOPzZqOe5oKAAAPgBWD2eMg/qaatbvdSvXx8AsHXrVlgsFhQXF4MxhoyMDAiCgO3btwPy2RAAfP/99xAEAaNHjwYAbNu27aIOIOT3q7jHkipjsViQnJyMd999F3Xr1sUNN9zAdzClBPr555/j73//O6ZOnco/4XAYTqcThw4dQps2bZCRkQGv14tNmzYhLy8PnTp1Qn5+Pr8gdi5utxsWiwV6vZ5fOLNYLDAajQgEAufc+ex2O9599100a9YMffv25d2DwSAA4IMPPuDz/Nhjj/F5/718Ph+uuuoquN1utGzZErVr1wYAPv9paWlYuHAhrFYrD0GFKIpISUnB4sWLsWTJEtSrVw9btmzBsGHDsGbNGhgMBgwePDgu6DIzMxEOh2G32+PC8UKcK2gVlV30Ui66AkCDBg0AAGfOnAEu4GCl7l9eXg4AaN68OUKhEA9fr9cLxhh27NgBALj11lshSRL+85//QKfT4eabb4YkSdizZw+vPxcTWl2QqkEhXMUSdyCdTodAIICffvqJ18lBLn0dOnQInTp14t1q1aqFa6+9FpFIBElJSdiyZQuGDx+O06dPo7i4GG63GzabDbm5uTh27BhMJlOlbWqVko3FYsHmzZvhcDiQnZ2NSCQCn8+HNm3awOPxID8/v9LQUXZEg8GA8vJy/PLLL5gwYQLvfuLECRw9ehRXX301H6dBgwbo3r07D0ql6sDn8/HSunoHZ3J9q5okX2RLSUlBv379MHPmTOzcuRP33XcfPB4PdDodGGNwOp1Yt25dXBWHQpCrDRwOB/r164dnnnkG3bp1w4gRI9C1a1cAQElJSdzB68yZMzhy5Ajq1KmDf/zjH+jcuTNGjx4NJpeqoSphK8siyS1VlGWIyc34AKCsrAwA0KdPH7Ru3ZpXGainZTKZMHjwYLRv355vF2vXrsXZqNedet4XL14MAHjsscfQpk0b3HvvvTAYDNiyZQsgN8WLxWJwOBxYvnw51q9fj/z8fNjtdkQiEezZs4cfyKxWa9zBgVQNCuEqJMgX5BRKMyCr1Yq1a9di9+7dPDTsdjtmz57NL8w9+OCDePjhh1GvXj2EQiHodDoUFhYiHA5j27ZtvOR68uRJMMZQWlpaaVUEABQXF2PixIm8dcPXX3+NcePG4f7778ff/vY3dOzYETNnzoy7kURNXb9qs9mwbNky7N27l3dPSkrCvHnzUK9ePTzxxBN48MEHcd999yEzM5Mv/6FDhzBmzBiMHj0aPp+PHxjU1AcQpZ/JZML999+P/Px8HDlyBKtXr0bt2rUxePBgfptxo0aN8OCDD8Lj8cStb6gOeg8++CB27dqFu+++G+vWrcNnn30GnU6HN998E/Pnz69w8Hr00UdRUlKC8ePHY9OmTcjJyQFU86XT6fhBQKFLaDXCGIPVasV3332HcDiM2267DXv27EHnzp3jpgU5SO+66y5s374d3bp1w+7du/HZZ5/x6pyzEeRqLuW3ePHFF7Fz506MGjUK+fn5uPXWW7FixQq8/PLLsNls2Lp1Ky8tK22k3333XQiCgKKiIuzfvx+xWAzdu3fHo48+itTU1POeXZHfh+6Yq2JKU7H09HTs2LEDJpOJn+bp9Xp07doVK1euRFJSEn+GQseOHeFwOPhOkZ6eDia3y+3YsSO2b98OQRAQjUaRnZ2NzMxMbN68mbeMUAjyBR+j0YiOHTvyEp5yISc3NxexWAy7du1CNBqtcEU8Go2iUaNGsNvt2LFjB7/IFo1GkZSUhLy8PKxevRpJSUkIhUKIRqPo1KkT7HY7Dh06hIMHD/K77GKxGDp37gyfz4f8/HxkZGSgbdu2+PXXXyEIAlJSUtC6dWusWbMGANC1a1fs27cPRqMRrVu3Rn5+PjweD4LBINq2bQuHw4FNmzbBYrEgGAyiXbt22LVrF2w2W4WSG2MMgUAA4XAYN954I1q3bo1wOIz169djx44dsNlsaNGiBW644QYcPHgQCxcuRDQaRdOmTdG7d2+UlpaiWbNmeOWVV/DNN9/gtttuw6RJk2A0GvHxxx/D7/ejb9++yM3Nxfr163l9rHIQDgQCyMjIwLBhw+Dz+bBlyxYMGDAAhw8fxvz587F+/Xp07NgRzZs3x8CBAxEOhzF37lwkJSXF/SbBYBDdunVDp06dsH37dqxduxZZWVkYNGgQysvL8f333yMajSIYDGLo0KFo2LAhCgsLsXDhQtjldsp+vx/Dhg1D/fr18frrryMlJQVutxuPPPIICgoKsGzZMt7uuUmTJtiyZQvMZnOFAya5dCiEq0FUvjkicWMW5cb9SlMrqG7xZfKNHkajkfdjjCEcDsMo3/4L1bTVLSESiaKISCQCvV7PT9lF+aYNAHHTS3S26V/svCvfJwgCr7sOh8OwWq18ftR/h0IhPr5yIFFO78PhMJiq9YeyXhLnMZE6jCG3ylDGCcvP91C+59prr8VLL72E559/HrFYDC+99BKaNGmCO++8Ex9++CGfpnJR0u/38/VR2XxEo1He3CwpKYm393Y4HFi6dCm6dOmCAQMGYOnSpYBquomCwSCCwSCsVissFgtisRifrnJxl8lN9qLRKEwmE5KSkuK2O7fbDVEU+a3ZotxG3WQy8fbWyu+VuM2SS49CmBCZcvA4c+YMJk+ejOnTpyMtLQ2Qw2/JkiW48847Icp3G/4eylmKIAj46aefcPXVV2PAgAH8rIhcOSiECVFR6qqdTifatm2LZs2awWQyoaysDJs3b4YkSRVaYPxWTH5uRPfu3WG327Fhwwa43e5KL46SyxeFMCGVYPJzGNTVK+aEp7NdCkoViSiKsNlsFMBXIAphQgjRUMX2SIQQQqoNhTAhhGiIQpgQQjREIUwIIRqiECaEEA1RCBNCiIYohAkhREMUwoQQoiEKYUII0RCFMCGEaIhCmBBCNEQhTAghGqIQJoQQDf0/MAdvbmMQitUAAAAASUVORK5CYII=" alt="Device Code Flow image" /&gt;
&lt;FIGCAPTION aria-hidden="true"&gt;
&lt;P&gt;Device Code Flow image&lt;/P&gt;
&lt;/FIGCAPTION&gt;
&lt;/FIGURE&gt;
&lt;P&gt;So you do. You grab your phone, navigate to the URL, enter the code, authenticate normally (biometrics, password, MFA, whatever your setup requires), and within seconds — without touching that remote again — the TV lights up with your profile.&lt;/P&gt;
&lt;P&gt;This is defined in &lt;STRONG&gt;RFC 8628&lt;/STRONG&gt; — the &lt;STRONG&gt;OAuth 2.0 Device Authorization Grant&lt;/STRONG&gt;, colloquially known as &lt;STRONG&gt;Device Code Flow&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H3 id="whats-actually-happening-under-the-hood"&gt;What’s Actually Happening Under the Hood&lt;/H3&gt;
&lt;P&gt;Device Code Flow exists to solve a genuinely hard problem: some devices don’t have a practical way to run a full browser-based authentication experience. Smart TVs. Streaming sticks. Gaming consoles. IoT devices. CLI tools. Printers. The kind of hardware that has a network connection and a purpose, but whose input methods were clearly designed by someone who has never had to type an email address using a D-pad.&lt;/P&gt;
&lt;P&gt;Here’s the flow:&lt;/P&gt;
&lt;OL type="1"&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;The TV (the “device”)&lt;/STRONG&gt; contacts the authorization server — in this case, the identity provider — and says, &lt;EM&gt;“Hey, I’d like to get an access token on behalf of a user, but I can’t do a full browser login. Help me out.”&lt;/EM&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;The authorization server&lt;/STRONG&gt; responds with two things: a &lt;STRONG&gt;device code&lt;/STRONG&gt; (a long, opaque string used internally) and a &lt;STRONG&gt;user code&lt;/STRONG&gt; (that short, human-readable &lt;CODE&gt;ABCD-1234&lt;/CODE&gt; you saw on screen). It also provides a &lt;STRONG&gt;verification URI&lt;/STRONG&gt; — the URL you go to on your other device.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;The TV starts polling.&lt;/STRONG&gt; It repeatedly asks the authorization server, &lt;EM&gt;“Has the user authenticated yet? What about now? Now?”&lt;/EM&gt; — at a defined interval, patiently waiting.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;You, on your trusted device&lt;/STRONG&gt;, navigate to the verification URI, enter the user code, and complete a full, normal authentication flow — browser, password, MFA, the works.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;The authorization server connects the dots.&lt;/STRONG&gt; It sees that the user code has been satisfied by an authenticated session, and the next time the TV polls, it gets back a shiny access token.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;The TV is now logged in.&lt;/STRONG&gt; You watch your show. Everyone is happy.&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The authentication burden is shifted entirely to a device that &lt;EM&gt;can&lt;/EM&gt; handle it — your phone, your laptop, something with a proper browser and a keyboard. The TV never sees your password. The TV never needs to. It just waits, politely, for the authorization server to say &lt;EM&gt;“yes, that user is who they say they are, and they consented to this.”&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Device Code Flow solves a real usability problem. It lets a constrained device complete sign-in through a second device that has a proper browser and keyboard.&lt;/P&gt;
&lt;P&gt;And it is being weaponized against your users &lt;EM&gt;right now&lt;/EM&gt;.&lt;/P&gt;
&lt;H3 id="but-what-happens-when-youre-the-tv"&gt;But What Happens When &lt;EM&gt;You’re&lt;/EM&gt; the TV?&lt;/H3&gt;
&lt;P&gt;Here’s where I need you to shift your mental model — because this is the pivot that makes Device Code Flow so dangerously exploitable.&lt;/P&gt;
&lt;P&gt;In the legitimate hotel TV scenario, &lt;EM&gt;you&lt;/EM&gt; initiated the flow. You sat down in front of the TV. You opened Netflix. You decided you wanted to authenticate. The device code appeared because &lt;EM&gt;you asked for it&lt;/EM&gt;, and the verification URI was presented &lt;EM&gt;in context&lt;/EM&gt;, on a screen in a room you were physically occupying.&lt;/P&gt;
&lt;P&gt;Now imagine this instead:&lt;/P&gt;
&lt;P&gt;You receive a Teams message, or an email, or a LinkedIn DM from someone claiming to be from IT, or a vendor, or a colleague. They say they need you to help verify something, or access a shared resource, or complete an onboarding step. They send you a URL and a code. They ask you to go to — and here’s the thing — a &lt;STRONG&gt;completely legitimate Microsoft URL&lt;/STRONG&gt;, enter the code, and sign in.&lt;/P&gt;
&lt;P&gt;The URL is real. The sign-in page is real. Your MFA prompt fires and you approve it, because you’re authenticating to a genuine Microsoft identity endpoint. Everything &lt;EM&gt;looks&lt;/EM&gt; exactly like a normal authentication flow.&lt;/P&gt;
&lt;P&gt;Except you didn’t initiate it. &lt;EM&gt;An attacker did.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;The attacker has the same role as the TV in the legitimate scenario: it starts the device authorization request and waits for the authorization server to return tokens. When the victim completes the sign-in, those tokens go to the attacker-controlled session.&lt;/P&gt;
&lt;P&gt;No malware. No credential theft. No password phishing. Your MFA fired and &lt;EM&gt;you approved it&lt;/EM&gt;. From the identity provider’s perspective, everything went exactly according to spec.&lt;/P&gt;
&lt;P&gt;You just authenticated someone else’s session. You were the TV.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Welcome to Device Code Phishing.&lt;/EM&gt;&lt;/P&gt;
&lt;H2 id="the-attackers-who-love-your-tv-how-device-code-flow-was-weaponized"&gt;The Attackers Who Love Your TV (How Device Code Flow Was Weaponized)&lt;/H2&gt;
&lt;P&gt;Remember that elegant, user-friendly device code flow we just finished praising? Turns out, the same properties that make it perfect for your Xbox also make it a gift-wrapped attack vector for threat actors. The absence of a browser on the &lt;EM&gt;authenticating&lt;/EM&gt; device. The deliberate separation of code generation from authentication. The real Microsoft sign-in page that victims visit. Every single one of these “features” is a weapon in the right — or rather, wrong — hands.&lt;/P&gt;
&lt;P&gt;Let’s walk through exactly how this works, because the mechanics are genuinely diabolical in their simplicity.&lt;/P&gt;
&lt;H3 id="the-anatomy-of-a-device-code-phish"&gt;The Anatomy of a Device Code Phish&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;Step one&lt;/STRONG&gt;: The attacker initiates a device code flow. Not on some sketchy custom app — on a legitimate, trusted client application like Azure CLI, Microsoft Graph PowerShell, or even the Microsoft Teams client. They call the device authorization endpoint and receive back two things: a &lt;CODE&gt;device_code&lt;/CODE&gt; (which stays server-side) and an &lt;CODE&gt;user_code&lt;/CODE&gt; — that friendly eight-character alphanumeric string like &lt;CODE&gt;FPQR7WXT&lt;/CODE&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step two&lt;/STRONG&gt;: The attacker packages that user code into a phishing lure. An email. A Teams message. A LinkedIn DM. The lure is engineered to look like a legitimate IT notification, an MFA re-enrollment prompt, a SharePoint access request — anything that provides plausible context for why the recipient should navigate to &lt;CODE&gt;microsoft.com/devicelogin&lt;/CODE&gt; and type in a code.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step three&lt;/STRONG&gt;: The victim visits &lt;CODE&gt;microsoft.com/devicelogin&lt;/CODE&gt;. This is the actual, legitimate Microsoft authentication endpoint. The victim enters the code, authenticates with their credentials, satisfies MFA, clicks Approve, and goes about their day feeling completely fine about what just happened.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step four&lt;/STRONG&gt;: The attacker’s polling loop — which has been calling the token endpoint at the interval returned by the authorization server since step one — suddenly gets a 200 OK response. It receives a fully formed OAuth access token and may also receive a refresh token, depending on the client, scopes, tenant policy, and session controls. The attacker now has authenticated access to whatever Microsoft 365 services that token covers. No credentials were stolen. The user-facing authentication step may appear to originate from the victim’s normal device and location, while later token use may show different infrastructure depending on how the attacker operates.&lt;/P&gt;
&lt;P&gt;Microsoft Entra guidance treats Device Code Flow as a high-risk flow that should be blocked unless users have a documented need to sign in to shared or input-constrained devices.&lt;/P&gt;
&lt;H3 id="storm-2372-when-nation-states-discovered-the-phish"&gt;Storm-2372: When Nation-States Discovered the Phish&lt;/H3&gt;
&lt;P&gt;This isn’t theoretical. A threat actor tracked as &lt;STRONG&gt;Storm-2372&lt;/STRONG&gt; operationalized device code phishing at scale against high-value targets.&lt;/P&gt;
&lt;P&gt;The Storm-2372 campaign followed the playbook described above — crafting contextually relevant lures delivered via email and messaging platforms, directing targets to the legitimate Microsoft device code authentication page, and harvesting the resulting tokens. Once armed with valid access tokens, and in some cases refresh tokens, the actors conducted reconnaissance across Microsoft 365 environments, accessed email, Teams conversations, SharePoint documents, and pivoted laterally through organizational infrastructure. Refresh tokens are particularly valuable when issued because they can be used to obtain new access tokens, subject to token lifetime, tenant policy, Conditional Access, Continuous Access Evaluation, revocation, sign-in risk, and downstream access patterns.&lt;/P&gt;
&lt;H3 id="ai-in-the-loop-dynamic-code-generation-and-the-15-minute-problem"&gt;AI in the Loop: Dynamic Code Generation and the 15-Minute Problem&lt;/H3&gt;
&lt;P&gt;Device code flow has a natural defense built in: the user code expires after fifteen minutes. For manual phishing operations, this creates operational pressure — the attacker needs the victim to act quickly. The campaign solved this problem elegantly and unsettlingly.&lt;/P&gt;
&lt;P&gt;Using automation and AI-assisted tooling, the campaign deployed phishing pages capable of &lt;STRONG&gt;dynamic code generation&lt;/STRONG&gt;. Rather than embedding a static user code in the phishing lure, the infrastructure generated fresh device codes on demand as victims interacted with the page. A victim who hesitated, navigated away, or took longer than expected to authenticate would receive a freshly generated, fully valid code — the fifteen-minute clock reset transparently in the background. The victim experienced a seamless interaction. The attacker maintained a continuously valid polling session.&lt;/P&gt;
&lt;P&gt;The campaign also employed &lt;STRONG&gt;role-aligned phishing lures&lt;/STRONG&gt; — AI-generated pretexts tailored to the apparent role or organization of the target. An IT administrator received a message consistent with a service health alert. A finance employee received something that looked like an approval workflow notification. This contextual alignment dramatically increased conversion rates and reduced the likelihood of targets pausing to question the request.&lt;/P&gt;
&lt;P&gt;The result was compromise of organizational accounts at scale, with the automation layer removing the human operational bottleneck that had previously limited the throughput of device code phishing campaigns.&lt;/P&gt;
&lt;P&gt;Device Code Flow is not a new problem, but the risk has changed. Automation now makes these attacks easier to run at scale, and Conditional Access policies that ignore the flow leave a clean path for token theft.&lt;/P&gt;
&lt;H2 id="the-azure-reality-security-guidance-and-operational-constraints"&gt;The Azure Reality: Security Guidance and Operational Constraints&lt;/H2&gt;
&lt;P&gt;The Microsoft Entra guidance is clear: organizations should get as close as possible to a unilateral block on Device Code Flow, allowing it only in well-documented and secured use cases. In practical terms, Microsoft does not recommend Device Code Flow as the standard authentication pattern for Azure services, administration, automation, or onboarding workflows.&lt;/P&gt;
&lt;P&gt;The nuance is that some Azure tools still expose or require Device Code Flow in constrained situations: Server Core, Linux terminals, headless appliances, remote shells, and migration or onboarding workflows where a local browser is not available. That is a compatibility reality, not a security recommendation. The presence of a Device Code Flow path in a tool should be read as an exception mechanism, not as guidance to prefer it over Managed Identity, brokered interactive sign-in, or certificate-based Service Principal authentication.&lt;/P&gt;
&lt;P&gt;This is the Azure reality. Security guidance pushes administrators to block or tightly restrict Device Code Flow; some product workflows still need it in edge cases. The operational answer is not to normalize Device Code Flow across Azure, but to document the few cases that truly require it and move everything else to stronger identity primitives.&lt;/P&gt;
&lt;H3 id="azure-arc-enabled-servers-dcf-in-constrained-onboarding-scenarios"&gt;Azure Arc-Enabled Servers: DCF in Constrained Onboarding Scenarios&lt;/H3&gt;
&lt;P&gt;Let’s start with &lt;CODE&gt;azcmagent connect&lt;/CODE&gt;, the command you run to onboard a server to Azure Arc-enabled servers. This is a core hybrid infrastructure workflow — the kind of thing organizations run at scale across hundreds or thousands of servers.&lt;/P&gt;
&lt;P&gt;The official CLI reference documentation notes that Device Code Flow is the authentication method for &lt;CODE&gt;azcmagent connect&lt;/CODE&gt; on Windows Server Core editions and on Linux distributions.&lt;/P&gt;
&lt;P&gt;The reasoning is understandable: Server Core has no browser. Linux servers in an automated pipeline may have no interactive session at all. The arc agent needs &lt;EM&gt;some&lt;/EM&gt; way to authenticate a human operator (or a service) during the initial onboarding handshake, and Device Code Flow conveniently sidesteps the need for a graphical environment. But “understandable” and “consistent with your Conditional Access policy” are two very different things.&lt;/P&gt;
&lt;P&gt;When a Conditional Access policy blocks the Device Code Flow grant type — which aligns with the recommended security posture for most tenants — infrastructure teams may see onboarding failures for Linux servers or Windows Server Core nodes unless they have planned an alternate authentication path. This creates a real operational tension between strong tenant-level controls and some constrained onboarding workflows.&lt;/P&gt;
&lt;H3 id="azure-migrate-known-registration-constraints"&gt;Azure Migrate: Known Registration Constraints&lt;/H3&gt;
&lt;P&gt;Azure Migrate’s standard appliance-registration experience still depends on Device Code Flow. The appliance Configuration Manager requires an operator to copy a device code, open a browser-based Azure sign-in prompt, and authenticate with an Azure user account. As a result, a Conditional Access policy that blocks Device Code Flow for the registering user and relevant resources prevents the default registration path.&lt;/P&gt;
&lt;P&gt;Azure Migrate documentation identifies Device Code Flow restrictions as a common sign-in challenge and states that disabling DCF can block appliance registration. This is notable because our Entra guidance also recommends blocking Device Code Flow wherever possible, except for well-documented and secured use cases.&lt;/P&gt;
&lt;FIGURE&gt;&lt;IMG style="width: 5.83333in; height: 5.10216in;" src="data:image/png;base64,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GGOMMcaYEbCwNsYYY4wxZgQsrI0xxhhjjBmBLSusn/vc50722GOPyUtf+tKpfcaY7QPH5ec///nJr371q8kTTzwxicD/F1544WSHHXZYSsuxyzFMHi3HrA922WWXyR133LHUj4Trr79+WT9uNnbeeefJ61//+k3dxs3K7rvvPvnZz342eeCBByZPP/10N175y/a//uu/TnbcccepPMYoW1JYH3DAAZOHHnpo6aA577zzJi9+8Yun0hlj1o43vvGNk5tuumnpgqYhBBnH6sUXX7yU7re//e3kE5/4xFR5ZvuzlYT13//9309uvPHGpXFJu/fee+9N2dbNBjfnRx555OT3v//9srEa4cknn5wccsghFtZmEFtOWL/85S+f3HbbbcsOmj/+8Y+Tww47bCqtMWZteO1rXzslwDSEIPvmN785eeqpp5btu/nmmycve9nLpso125dFCuvrrrtuWbkRHnnkkckHPvCBVdXxyU9+simyzj333LLsU089deqm8LLLLrMY2wAcd9xxkz/84Q/L+i4HC2szD1tOWDODwIlXw5lnnjmV1hizNvDUSAMi5b777ptcc801k1tuuWVy9dVXd4Lm7LPP1qTdE6g999xzqlyzfdkewppw+umnr6qOajxGaAnra6+9VpN2bX/Vq15Vpjfrg/e9731LT7BzePzxx7snaPTrPffcMznwwAMtrM0gtpywZsb61ltvXXYAcaf6hS98YSqtMWbxvOUtb5k8+OCDy45JLmpf/OIXp9LCEUcc0T1lyoE12S960Yum0prty/YS1jyVfMUrXjGVZwj//M//PDUec2gJ65NPPnnqScoFF1xgMbbO+elPfzr1pAEx/bd/+7dlP2ee//znTz7+8Y93S9NYh33wwQe7v83WE9bwzne+c3LXXXd1B9Njjz02+f73v+8XoIzZThx00EHdo9Yczj///OZFjWMVEUMejmFmlfbaa6+pdGb7s72ENZMl3JitpJ5jjjlmSiDn0BLWrP2/6KKLups+uPzyy7sXGau0Zv3AE7EsrHmi/cEPfnBmv5100knLzlteLmKCLSmsjTHrB4SMBuJmXdjM+mcthbWK4V/+8peT5z3veVP5+njhC1/YvYAYAYGu5baEtdl4cONz++23L+vfO++8c7LbbrvN7OOzzjprmSC3sDaBhbUxZrtiYb15WUthfffddy8TwSt5iVFf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5Nprr53ccsstnbjR/euBl770pZMLL7xwcs8993RCVvcH84jcsVhNndxYcx7Si51nrFd38c9sdBG61157dfZnEb/R2wRjir3NyBBhjci9/fbbZ4rcMX1tYb1yLKwXCBdiLppciLOQ4YJCGDI7vdZgEwEbdZ9Znwzts9Z4XE+E6JolNlcjclfKauq0sH4WC+saC+utiYX15mNdC+tvfOMb3UUH+F/3D0WFdRYYXNh++9vfdsKEvwzyyHfooYd2M2cs5QAGGbN+LYGS6wmxkwP5yZNDpK/E9mte85rJ5Zdf3j1aIvD3Rz/6UVcn5WBDntX75Cc/Obnrrrs6W1nTfdNNN3Un66Ftxn4NLbEW9n7/+9+fXHLJJV191JvrhJe//OWTs88+e/L444936bGBPKwzz+VccMEFnS3qD9rLGnXKZh/biBDqibhTTjllqTwVma9+9as7+6J+/lL/rH1aDrzrXe/qlvaw9jrSk59y2J/75bDDDlsaO4899tjkyCOPXCqnr94Kxn4ehw8++GBXPvuG9lk1HmP8Pv/5z58cf/zxnd0E7GHN/4tf/OJleVlvTjw+xw765bWvfe0gO4FxQKAuxjVjBi6++OKurlgilUNLdFYil7F21llnTY215z3veZOTTjqpizv//POXLjiMGWbw6c8vfOELXfwnPvGJqWMojjGtM7aHCMRZwjqWHkXQpQexJCFCVVYQwpUycxr8n/2lZeoNQ/RXhGwTdtN2jr0qb0brueiii7r06jd8FAFfZDEZ/qNN9E2VphKhIVarclsCPwtcxmQuM9rNvtymWf2V21yJJ8qNduUyo37+z+1A7ORytJ3RH60xAoz9HCpBf/jhhy9b0kQf5HopgzjytvpFxZ5uYzvCMgLHQxaGkb7yufoglxN2RJpYllntU7gmUuepp566VGfYlfuqZWuO45yZ66VM0oSQDmFd9TGClv1xTtN9andVf2434bjjjpvpN2xj/Kiwvvrqq7uyKKOq32xj3QprLtIaViquW8KaCyrrlBnov/rVr7oBwyN1xAIi9fe//30nDn7605923HrrrV3eIcKagc3FnAMCwciyj29961ud0ECQEBBXDFBecFRhzdppbMMmLu7kR4xwIauE9ec+97muLpadkDYEECdF0g9p8+c///nOJgI2fve73+2EhvoTwt7f/e53XTk//vGPu7ooDz8hchBL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" alt="Azure Migrate Official doc" /&gt;
&lt;FIGCAPTION aria-hidden="true"&gt;
&lt;P&gt;Azure Migrate Official doc&lt;/P&gt;
&lt;/FIGCAPTION&gt;
&lt;/FIGURE&gt;
&lt;P&gt;The alternative is not simply a Conditional Access exclusion or an additional user permission. It is a separate, certificate-based authentication model: an organization preconfigures a Microsoft Entra application and service principal, grants that principal Contributor access to the Azure Migrate project’s resource group, installs a certificate on the appliance, and completes registration using the application identity rather than an interactive user sign-in.&lt;/P&gt;
&lt;P&gt;This removes the user-context Device Code Flow dependency, but it does not remove the appliance-registration process itself. It also introduces operational overhead: the application is effectively dedicated to one appliance, its certificate must be protected and rotated, and the approach does not apply to the Azure Site Recovery replication appliance.&lt;/P&gt;
&lt;H3 id="azure-cli-and-powershell-when-dcf-appears-as-a-fallback"&gt;Azure CLI and PowerShell: When DCF Appears as a Fallback&lt;/H3&gt;
&lt;P&gt;The Azure CLI and Azure PowerShell modules are more nuanced cases because they support multiple authentication paths. Both tools prefer modern, platform-integrated authentication flows — browser-based interactive login, Integrated Windows Authentication, managed identity — when those options are available. The operative phrase is “when those options are available.”&lt;/P&gt;
&lt;P&gt;In headless environments, restricted execution contexts, containerized build agents with no browser dependency, or remote SSH sessions on machines that are not domain-joined, the preferred authentication hierarchy can become harder to use. In those cases, Device Code Flow may appear as a fallback when stronger approaches are not available or have not yet been implemented.&lt;/P&gt;
&lt;P&gt;For individual developers this may be a minor inconvenience. For enterprise teams running automated pipelines in tightly controlled environments, it can become a recurring source of breakage that traces back to the gap between DCF-blocking Conditional Access policies and workflows that still rely on DCF as an exception path.&lt;/P&gt;
&lt;H3 id="the-real-world-fallout-exception-requests-and-operational-friction"&gt;The Real-World Fallout: Exception Requests and Operational Friction&lt;/H3&gt;
&lt;P&gt;Security-mature enterprises that implement tenant-level blocks on Device Code Flow can discover this tension through production failures. An infrastructure engineer attempts to onboard a batch of Azure Arc servers. The &lt;CODE&gt;azcmagent connect&lt;/CODE&gt; command fails. A ticket is raised. The security team investigates. The root cause is identified: DCF is blocked, as intended, by policy.&lt;/P&gt;
&lt;P&gt;Now the organization has a decision to make: create a tightly scoped policy exception for the onboarding workflow, pre-provision service principal credentials and reconfigure the process, or pause the rollout while the right risk decision is made. None of those options is free. Each has security, operational, and ownership implications.&lt;/P&gt;
&lt;P&gt;This is where guidance, product behavior, and customer operations need clearer alignment. Until that alignment is complete, customers need a practical operating model: block DCF by default, document the constrained cases, and move repeatable workflows to stronger identity primitives wherever possible.&lt;/P&gt;
&lt;H2 id="the-clean-path-forward--a-five-tier-authentication-hierarchy"&gt;The Clean Path Forward — A Five-Tier Authentication Hierarchy&lt;/H2&gt;
&lt;P&gt;The Azure authentication model has a clear order of preference: use platform-managed identity where possible, use certificate-based service principals where you need external automation, and reserve Device Code Flow for cases where no stronger option is available.&lt;/P&gt;
&lt;P&gt;Here’s a five-tier decision framework for authenticating to Azure — ordered from preferred and durable to “only if you absolutely must.” This is also the practical interpretation of the guidance: Device Code Flow may exist in the toolbox, but it should sit at the bottom of the toolbox, not on the workbench.&lt;/P&gt;
&lt;H3 id="tier-1-managed-identity--the-gold-standard"&gt;Tier 1: Managed Identity — The Gold Standard&lt;/H3&gt;
&lt;P&gt;If your workload runs inside Azure — a virtual machine, an App Service, a Function App, an AKS workload using Microsoft Entra Workload ID, or an Azure Arc-enabled server — use the platform identity model wherever possible. There is no serious debate here.&lt;/P&gt;
&lt;P&gt;Managed Identity works by giving the Azure platform itself the responsibility of credential issuance and rotation. The workload requests a token from the Instance Metadata Service (IMDS) endpoint (&lt;CODE&gt;http://169.254.169.254/metadata/identity/oauth2/token&lt;/CODE&gt;), and Azure handles everything behind the scenes: certificate lifecycle, token signing, rotation. You never see a secret. You never store a secret. There is no secret to leak, rotate, audit, or accidentally commit to a GitHub repository.&lt;/P&gt;
&lt;P&gt;System-assigned Managed Identities are scoped to the lifecycle of the resource itself — they live and die with the VM or service. User-assigned Managed Identities give you reuse across multiple resources and more fine-grained RBAC control. For Azure Arc-connected machines, the Arc agent provisions a Managed Identity backed by a locally managed certificate in a protected directory, giving even on-premises and multi-cloud workloads access to this same zero-secret model.&lt;/P&gt;
&lt;P&gt;The operational rule: &lt;STRONG&gt;if your code or process runs on a platform that supports Managed Identity, using anything else is a conscious downgrade that requires justification.&lt;/STRONG&gt;&lt;/P&gt;
&lt;H3 id="tier-2-service-principal-with-certificate--the-right-tool-for-scale"&gt;Tier 2: Service Principal with Certificate — The Right Tool for Scale&lt;/H3&gt;
&lt;P&gt;ManagedIdentity isn’t available for every scenario. If you’re building a CI/CD pipeline in GitHub Actions, running an onboarding script from an on-premises orchestration platform, or automating Azure Arc server registration at scale across thousands of machines, you need a Service Principal — and you should be using &lt;STRONG&gt;certificate-based authentication&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Here’s why certificates are usually stronger than secrets in the Service Principal world: certificates are easier to govern through a managed issuance and rotation process, and they avoid long-lived shared strings being copied across scripts, repositories, and build systems. Microsoft Entra Conditional Access for workload identities can also apply to selected service principals, subject to licensing and feature scope, with controls such as location-based restrictions and risk-based blocking. That is not the same policy surface as user Conditional Access, and managed identities are not covered by those workload identity policies.&lt;/P&gt;
&lt;P&gt;For Azure Arc onboarding specifically, scope your Service Principal to the minimum viable role: &lt;CODE&gt;Azure Connected Machine Onboarding&lt;/CODE&gt;. This built-in role grants exactly what the &lt;CODE&gt;azcmagent connect&lt;/CODE&gt; process needs — nothing more. It cannot read your Key Vault secrets, enumerate your subscriptions, or touch your production workloads. Least privilege isn’t just a best practice checkbox here; it’s your blast radius control.&lt;/P&gt;
&lt;P&gt;Certificates should be issued from a managed PKI, stored in protected certificate stores (never in flat files on shared drives), and rotated on a defined schedule. Integrate certificate lifecycle management with your existing PKI or use Azure Key Vault-backed certificates where possible.&lt;/P&gt;
&lt;H3 id="tier-3-service-principal-with-secret--the-acceptable-compromise"&gt;Tier 3: Service Principal with Secret — The Acceptable Compromise&lt;/H3&gt;
&lt;P&gt;Sometimes certificates are genuinely impractical. Legacy tooling, third-party integrations, or constrained environments may force your hand toward client secrets. This tier isn’t forbidden — but it carries an explicit operational contract.&lt;/P&gt;
&lt;P&gt;Client secrets &lt;STRONG&gt;must&lt;/STRONG&gt; be treated with the same discipline as passwords: stored in secrets management systems (Azure Key Vault, HashiCorp Vault, your CI/CD platform’s native secrets store), never hard-coded, never logged, and &lt;STRONG&gt;rotated on a defined cadence&lt;/STRONG&gt;. Microsoft Entra ID lets you set expiration periods — use them. Ninety-day rotation is a reasonable baseline; shorter is better for high-sensitivity workloads.&lt;/P&gt;
&lt;P&gt;Client secrets remain bearer credentials. If a secret is copied, an attacker can use it until it expires or is revoked, subject to workload identity controls and any other enforcement points in the environment.&lt;/P&gt;
&lt;H3 id="tier-4-interactive-browser--brokered-authentication--for-human-admins"&gt;Tier 4: Interactive Browser / Brokered Authentication — For Human Admins&lt;/H3&gt;
&lt;P&gt;When a human being is sitting at a keyboard performing administrative tasks — deploying resources, running &lt;CODE&gt;az&lt;/CODE&gt; CLI commands, executing PowerShell modules against Azure Resource Manager — the right authentication pattern is interactive browser or brokered authentication.&lt;/P&gt;
&lt;P&gt;The Azure CLI (&lt;CODE&gt;az login&lt;/CODE&gt;), Azure PowerShell (&lt;CODE&gt;Connect-AzAccount&lt;/CODE&gt;), and the Azure Portal all support this flow. On modern Windows workstations with the Web Account Manager (WAM) broker enabled, authentication is handled through the broker, which integrates directly with Windows Hello, device compliance state, and Primary Refresh Token (PRT) infrastructure. This means your Conditional Access policies — require compliant device, require MFA, require specific named locations — all apply and are enforced at login time.&lt;/P&gt;
&lt;P&gt;This is authentication that knows &lt;EM&gt;who&lt;/EM&gt; the user is, &lt;EM&gt;what device&lt;/EM&gt; they’re on, and &lt;EM&gt;whether that device meets your security baseline&lt;/EM&gt;. It’s the complete picture. Never suppress this flow with automation flags when a human is the actor.&lt;/P&gt;
&lt;H3 id="tier-5-device-code-flow--the-last-resort"&gt;Tier 5: Device Code Flow — The Last Resort&lt;/H3&gt;
&lt;P&gt;Device code flow (&lt;CODE&gt;az login --use-device-code&lt;/CODE&gt;, &lt;CODE&gt;Connect-AzAccount -UseDeviceAuthentication&lt;/CODE&gt;) should be treated as the last resort for Azure services and tools. It exists for a specific, narrow set of scenarios: headless Linux terminals, Windows Server Core deployments without a GUI, SSH sessions into remote systems where a browser genuinely cannot be launched, or constrained appliance and migration workflows where the product has no stronger supported option yet.&lt;/P&gt;
&lt;P&gt;In these cases, the operator signs in on a separate device and the initiating workload receives the token after authorization completes. That separation creates a control gap: Conditional Access evaluates the sign-in context of the device used for authentication, not necessarily the posture of the headless server, appliance, or remote shell that initiated the request.&lt;/P&gt;
&lt;P&gt;If you permit device code flow in your environment, do it deliberately: create a scoped Conditional Access exception, document the justification, and treat each use as a compliance event worth auditing. And ask yourself seriously whether Managed Identity or a Service Principal could solve the problem instead.&lt;/P&gt;
&lt;P&gt;Put plainly: if a workflow can use Managed Identity, brokered interactive authentication, or a certificate-based Service Principal, that is the route Microsoft customers should prefer. Device Code Flow is the exception path for constrained environments, not the recommended operating model for Azure.&lt;/P&gt;
&lt;H3 id="quick-decision-table"&gt;Quick Decision Table&lt;/H3&gt;
&lt;P&gt;When in doubt, consult this table before typing a single auth flag:&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;th&gt;Scenario&lt;/th&gt;&lt;th&gt;Recommended Pattern&lt;/th&gt;&lt;th&gt;Avoid&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Azure VM / App Service&lt;/td&gt;&lt;td&gt;System-assigned or user-assigned Managed Identity&lt;/td&gt;&lt;td&gt;Service Principal with secret; Device Code Flow&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Azure Arc server process&lt;/td&gt;&lt;td&gt;Managed Identity via the Azure Arc agent identity model&lt;/td&gt;&lt;td&gt;Interactive login; hardcoded credentials&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Azure Arc onboarding at scale&lt;/td&gt;&lt;td&gt;Service Principal with certificate and the &lt;CODE&gt;Azure Connected Machine Onboarding&lt;/CODE&gt; role&lt;/td&gt;&lt;td&gt;Service Principal with secret; Global Administrator credentials&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Azure Migrate registration&lt;/td&gt;&lt;td&gt;Preconfigured Microsoft Entra application with certificate-based authentication&lt;/td&gt;&lt;td&gt;Device Code Flow as the default path; over-privileged roles&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Human admin task&lt;/td&gt;&lt;td&gt;Interactive browser or WAM brokered authentication with Conditional Access&lt;/td&gt;&lt;td&gt;Shared service accounts; suppressed MFA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Linux / Server Core / headless CLI&lt;/td&gt;&lt;td&gt;Managed Identity where available, or Device Code Flow with a scoped Conditional Access exception&lt;/td&gt;&lt;td&gt;Persistent CLI sessions with cached tokens and no expiry&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;The hierarchy is deliberate. Every tier down represents a trade-off — more operational burden, less platform-enforced security, more human discipline required to compensate. The goal is to push as many of your workloads as possible to Tier 1, use Tier 2 for what Managed Identity can’t reach, and treat everything below that as a documented exception rather than a default pattern.&lt;/P&gt;
&lt;P&gt;Authentication choices are architectural decisions. Make them intentionally.&lt;/P&gt;
&lt;H2 id="hardening-your-tenant--what-administrators-must-do-today-and-why-your-cloud-is-not-a-hotel-tv"&gt;Hardening Your Tenant — What Administrators Must Do Today (And Why Your Cloud Is Not a Hotel TV)&lt;/H2&gt;
&lt;P&gt;The hardening work starts with visibility. Before blocking or allowing Device Code Flow, administrators need to know where it is already being used, which workflows depend on it, and which of those workflows can move to stronger authentication.&lt;/P&gt;
&lt;H3 id="action-1-inventory-current-usage--find-where-dcf-is-active-right-now"&gt;Action 1: Inventory Current Usage — Find Where DCF Is Active Right Now&lt;/H3&gt;
&lt;P&gt;You cannot harden what you cannot see. Start in &lt;STRONG&gt;Entra ID Sign-In Logs&lt;/STRONG&gt; and filter for authentication protocol equals &lt;CODE&gt;deviceCode&lt;/CODE&gt;. This will surface every user, application, and IP address currently relying on Device Code Flow across your tenant. Pay close attention to service accounts, unattended scripts, and any sign-ins originating from datacenter IP ranges — those are your highest-risk signals.&lt;/P&gt;
&lt;P&gt;If you haven’t already, flip your Conditional Access policies targeting DCF clients into &lt;STRONG&gt;report-only mode&lt;/STRONG&gt; first. This gives you a real-world blast radius assessment before you enforce a block. Surprises in production are exciting exactly once.&lt;/P&gt;
&lt;H3 id="action-2-classify-every-use-case--automation-or-genuine-terminal-fallback"&gt;Action 2: Classify Every Use Case — Automation or Genuine Terminal Fallback?&lt;/H3&gt;
&lt;P&gt;Not every Device Code Flow invocation is malicious, or even wrong. Walk through what you find in the logs and ask one honest question for each entry: &lt;EM&gt;Is this a human logging into a device with no keyboard, or is this a script pretending it has no other option?&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Genuine headless terminal scenarios — a shared kiosk, a network appliance with a PIN pad, a restricted industrial device — are legitimate. Everything else, especially recurring automated sign-ins from servers or pipelines, is a Service Principal waiting to be born.&lt;/P&gt;
&lt;H3 id="action-3-replace-repeatable-workflows-with-the-right-identity-primitive"&gt;Action 3: Replace Repeatable Workflows With the Right Identity Primitive&lt;/H3&gt;
&lt;P&gt;This is the most impactful action on the list. Every server onboarding script, appliance registration routine, and CI/CD pipeline that currently uses Device Code Flow should be migrated to one of two things:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Managed Identities&lt;/STRONG&gt; — for anything running inside Azure. Zero credentials. No rotation. No excuses.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Certificate-based Service Principals&lt;/STRONG&gt; — for workloads running outside Azure where Managed Identity isn’t available. Certificates are auditable, rotatable, and are not susceptible to this specific device-code phishing pattern.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;If a team finds that migration difficult, treat it as an implementation gap to close, not as a reason to keep a weaker authentication pattern in place.&lt;/P&gt;
&lt;H3 id="action-4-scoped-exceptions-only--no-tenant-wide-free-passes"&gt;Action 4: Scoped Exceptions Only — No Tenant-Wide Free Passes&lt;/H3&gt;
&lt;P&gt;If you must allow Device Code Flow for a specific use case after completing Actions 1 through 3, then scope it surgically. Target specific named users, restrict to compliant or named network locations, and limit to the exact application that requires it. Attach strict sign-in monitoring alerts so that any deviation from the expected pattern pages someone immediately.&lt;/P&gt;
&lt;P&gt;Granting tenant-wide exceptions because one team has a legacy appliance is the organizational equivalent of leaving the front door of your office building unlocked because the mailroom needs early access. Scope it. Monitor it. Review it quarterly.&lt;/P&gt;
&lt;H3 id="action-5-improve-error-clarity--make-failures-actionable"&gt;Action 5: Improve Error Clarity — Make Failures Actionable&lt;/H3&gt;
&lt;P&gt;When Device Code Flow is blocked by a Conditional Access policy, the error experience can be difficult for operators to act on. If the message is opaque, teams either open a ticket without enough context or look for a workaround. Neither outcome helps the customer.&lt;/P&gt;
&lt;P&gt;Internal scripts and tooling should catch Conditional Access block errors and surface clear, prescriptive guidance. Suggested runtime error wording:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;“Device Code Flow authentication was blocked by your organization’s security policy. This workflow requires an identity with delegated permissions in an interactive session. For automated workloads, use a Managed Identity or a Service Principal with certificate-based authentication. Contact your identity platform team for migration assistance.”&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;For product and documentation improvements, language like the following would help customers make safer choices:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;“Device Code Flow (RFC 8628) is designed for input-constrained devices such as smart TVs and kiosks. It is not recommended for automated scripts, CI/CD pipelines, or server-side processes. For unattended authentication scenarios, use Managed Identities for Azure-hosted workloads or certificate-based Service Principals for external workloads. Enabling Device Code Flow in enterprise environments without Conditional Access restrictions significantly increases phishing risk.”&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Clear documentation prevents the next engineer from making the same mistake and helps customers choose the right authentication pattern earlier.&lt;/P&gt;
&lt;H3 id="the-hotel-tv--a-final-word"&gt;The Hotel TV — A Final Word&lt;/H3&gt;
&lt;P&gt;Let’s go back to where we started: you, in a hotel room, staring at a television that doesn’t have a keyboard, trying to log into Netflix. You pull out your phone, navigate to a short URL, type an eight-character code, and thirty seconds later you’re watching something you’ll regret staying up for. It is, genuinely, a delightful piece of user experience engineering. RFC 8628 solved a real problem elegantly, and for that use case — a constrained device, a human present in the room, a low-stakes personal account — Device Code Flow is perfectly appropriate.&lt;/P&gt;
&lt;P&gt;The problem is not Device Code Flow. The problem is transplanting a mechanism designed for hotel televisions into environments where a compromised token can exfiltrate production databases, pivot across subscriptions, and trigger regulatory breach notifications at three in the morning.&lt;/P&gt;
&lt;P&gt;Your enterprise Azure tenant is not a hotel TV. The stakes are not whether someone watches an extra episode before sleep. The stakes are your customers’ data, your company’s reputation, and in regulated industries, your legal exposure. Authentication mechanisms must be matched to the environment they protect — and an environment with that much at risk deserves better than a flow designed for leisure viewing.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Block Device Code Flow by default. Do not recommend it as the normal way to use Azure services or tools. Migrate automation to proper identity primitives. Grant exceptions only where the use case genuinely demands it, and monitor them relentlessly.&lt;/STRONG&gt; The elegance of the original protocol is not a reason to leave the door open. It is simply a reason to appreciate it on the television where it belongs — while you protect everything else with something far more serious.&lt;/P&gt;</description>
      <pubDate>Mon, 27 Jul 2026 00:46:16 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/device-code-flow-the-gift-that-keeps-on-giving-to-attackers/ba-p/4540949</guid>
      <dc:creator>akyamaza</dc:creator>
      <dc:date>2026-07-27T00:46:16Z</dc:date>
    </item>
    <item>
      <title>Understanding Microsoft 365 Copilot Risk Surface and Mitigations</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/understanding-microsoft-365-copilot-risk-surface-and-mitigations/ba-p/4538712</link>
      <description>&lt;P&gt;It’s a shift that carries important security implications organizations should understand&amp;nbsp;before scaling deployment.&amp;nbsp;Customers with Microsoft 365 E5 licensing may already have access to many of the tools that can help identify and reduce Copilot-related risk, but licensing alone does not reduce exposure.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What’s often missing during early Copilot deployments is a clear understanding of the risk surface itself: &lt;EM&gt;what data is exposed, who can access it, and &lt;/EM&gt;t&lt;EM&gt;hrough which vectors&lt;/EM&gt;.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Organizations beginning their Zero Trust journey can use the Zero Trust Workshop to assess their current posture, identify gaps, and better understand how existing permissions and governance impact Copilot readiness. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this post, we take a broader look at the types of risks Copilot can amplify and how those risks align to key Zero Trust pillars.&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Why Copilot changes the risk conversation&lt;/H2&gt;
&lt;P&gt;Before assessing specific risks, it's worth understanding why AI solutions like Copilot introduce a different risk conversation than traditional Microsoft 365 applications.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Most enterprise applications operate within a bounded context. A user opens a file, reads an email, or searches a SharePoint one item at a time. The time and effort required to manually locate, connect, and synthesize information across systems creates a natural friction layer. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;While that friction was never designed as a formal security control, it did create a practical limit on how quickly users could surface and act on organizational data at scale.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Microsoft 365 Copilot removes much of that friction entirely. It operates at the speed of a prompt across the full scope of a user's access rights, synthesizing information from emails, files, meetings, chats, and other Microsoft 365 data sources into a single response.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The exposure is not the result of new permissions; it comes from how quickly and easily existing access can be discovered and aggregated. In short, Copilot makes data once hidden by volume discoverable by intent.&lt;/P&gt;
&lt;H2&gt;Use Zero Trust to assess Copilot risk&lt;/H2&gt;
&lt;P&gt;Zero Trust rests on three principles: &lt;STRONG&gt;verify explicitly&lt;/STRONG&gt;, &lt;STRONG&gt;use least-privileged access&lt;/STRONG&gt;, and &lt;STRONG&gt;assume breach&lt;/STRONG&gt;. Rather than trusting users or devices by network location, it requires continuous validation of every user, endpoint, and request. This analysis focuses on the four pillars most directly involved in Copilot deployments.&lt;/P&gt;
&lt;P&gt;Together, these pillars answer three questions: who can access Copilot; from which endpoints and applications; and what data Copilot can surface once access is granted.&lt;/P&gt;
&lt;H2&gt;The two-layer Copilot risk model&lt;/H2&gt;
&lt;P&gt;The foundation is simple: Copilot acts as a force multiplier for whatever access a user already has. If that access is governed well, Copilot improves productivity; if not, it amplifies exposure. Risk is therefore examined in two layers — access to the Copilot service itself, and access to the data Copilot can ground on and surface.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;MICROSOFT 365 COPILOT&amp;nbsp; ·&amp;nbsp; TWO-LAYER RISK MODEL&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 70.2778%; border-width: 1px;"&gt;&lt;colgroup&gt;&lt;col style="width: 43.6545%" /&gt;&lt;col style="width: 56.3455%" /&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;STRONG&gt;Layer-1 Access Risk&lt;/STRONG&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Identity&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;Device&lt;/STRONG&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Who can access copilot&lt;/td&gt;&lt;td&gt;From which devices&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Under what conditions&lt;/td&gt;&lt;td&gt;Device compliance posture&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;STRONG&gt;Layer-2 Data &amp;amp; Governance Risk&lt;/STRONG&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Apps&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;Data&lt;/STRONG&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;What copilot can access and surface&lt;/td&gt;&lt;td&gt;Sharing and permissions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Connected data sources&lt;/td&gt;&lt;td&gt;Labeling, classification, output context&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Table-1:&lt;/STRONG&gt; Two-layer model for Microsoft 365 Copilot risk&lt;/EM&gt;&lt;/P&gt;
&lt;H1&gt;Risk Layer-1: Who can access Microsoft 365 Copilot?&lt;/H1&gt;
&lt;P&gt;The first layer of risk begins at the point of entry: the conditions that determine whether a user can access Copilot. Organizations don’t need to address every potential exposure point at once. Think of the following table as a map of where exposure &lt;EM&gt;can&lt;/EM&gt; exist across identity and device controls. For details of how remediation works for this layer of risks; you may refer to the blog post: &lt;A href="https://techcommunity.microsoft.com/blog/fasttrackblog/mitigating-microsoft-365-copilot-access-risk-identity-and-device-controls-for-ze/4534574" target="_blank" rel="noopener"&gt;Mitigating Microsoft 365 Copilot access risk: Identity and device controls for Zero Trust.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The following risks are primarily governed by the Identity and Devices pillars of Zero Trust and define whether Copilot is being accessed by the right person, from a trusted device, under appropriate authentication and access conditions.&amp;nbsp;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 948px; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Risk&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Pillar&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Description&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;R1&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Unmanaged identity access&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Identity&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;A compromised, shared, or former employee account can authenticate to Microsoft 365 and access Copilot. Because Copilot operates across the full scope of a user’s permissions, compromised accounts expose a much larger&amp;nbsp;risk surface than before Copilot existed. Strong account hygiene and identity lifecycle management therefore directly reduce Copilot exposure.&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;R2&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Weak or absent multi-factor authentication&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Identity&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;If organizations do not enforce MFA, or if legacy authentication bypasses modern sign-in controls, users can start Copilot sessions using only a password. In environments with inconsistent MFA coverage, attackers may need only&amp;nbsp;stolen credentials to gain access. Because Copilot synthesizes data across services, compromised accounts create significantly greater risk than access to a single application.&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;R3&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Unmanaged or non-compliant devices&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Devices&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Users can access Copilot through browsers and native applications from any device where they can authenticate. Unmanaged devices without EDR coverage, disk encryption enforcement, or compliance posture evaluation can expose Copilot sessions and allow attackers or unauthorized users to store or exfiltrate outputs locally.&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;R4&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;License sprawl without role-based scoping&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Identity &amp;amp; Apps&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Enterprise Copilot pilots often start with broad license assignments across departments, floors, or business units instead of deliberate, security-reviewed pilot groups. When organizations assign licenses without reviewing each user’s access rights, permission posture, and role sensitivity, Copilot can amplify risk across both highly governed and minimally governed users. Broad pilot enrollment without access review is itself a risk factor.&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;R5&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Missing real-time risk evaluation at sign-in&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Identity &amp;amp; Devices&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;If Conditional Access does not evaluate sign-in and user risk signals—such as impossible travel, anomalous token activity, or identity protection alerts—high-risk sessions may still gain access to Copilot. Without real-time risk gating, controls respond only after access is granted, by which point Copilot may already have surfaced and synthesized sensitive content.&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;R6&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;App protection gap on mobile devices&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Devices &amp;amp; Apps&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Users can access Microsoft 365 Copilot mobile—and the broader Microsoft 365 mobile surface that exposes Copilot—from personal devices that are not enrolled in MDM or MAM. Without an application protection policy, organizations cannot prevent users from copying Copilot outputs into unmanaged apps, remotely wipe organizational data from lost devices, or restrict screenshots and screen recordings during Copilot sessions containing sensitive data.&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 101px" /&gt;&lt;col style="width: 236px" /&gt;&lt;col style="width: 155px" /&gt;&lt;col style="width: 456px" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Table - 2: &lt;/STRONG&gt;&lt;/EM&gt;Risks in Layer-1: Who can access Microsoft 365 Copilot&lt;/P&gt;
&lt;H2&gt;Key observations from Layer 1:&amp;nbsp;&lt;/H2&gt;
&lt;P&gt;Identity appears most frequently across Layer 1 risks, reflecting how tightly Copilot access depends on authenticated user permissions and sign-in conditions. Device-related risks also play a major role because unmanaged or non-compliant endpoints can expose Copilot sessions and outputs beyond the organization’s trusted environment.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Together, these risks highlight a central theme: securing Copilot access is not just about controlling who can sign in, but also validating the devices, conditions, and access patterns associated with every session.&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Risk layer 2: What data can Microsoft 365 Copilot reach?&amp;nbsp;&lt;/H1&gt;
&lt;P&gt;The second layer of risk assumes that the user is already authenticated and actively using Copilot.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;At this stage, the focus shifts from who can access Copilot to what data Copilot can surface on the user’s behalf.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;These risks reflect the full scope of data exposure created by existing permissions, overshared content, connected systems, and governance gaps. &amp;nbsp;Layer 2 risks are governed primarily by the Apps and Data pillar, with Identity playing a secondary role in defining the scope of data each user can access.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For mitigating risks in this layer, you may refer to the blog post: &lt;A href="https://techcommunity.microsoft.com/blog/fasttrackblog/limiting-microsoft-365-copilot-data-exposure-risk-with-zero-trust-apps-and-data-/4534642" target="_blank" rel="noopener"&gt;Limiting Microsoft 365 Copilot data exposure risk with Zero Trust apps and data controls.&lt;/A&gt;&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;table border="1" style="width: 939px; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Risk&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;Pillar&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Description&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;R7&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Overshared SharePoint and OneDrive content&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Apps &amp;amp; Identity&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Content shared with "Everyone," "Everyone except external users," or broad groups becomes part of Copilot’s query able surface for any licensed user, even if that user would never have found those files manually. Years of SharePoint oversharing, combined with Copilot’s ability to traverse and synthesize content in a single prompt, can turn long-standing governance debt into immediate exposure. Copilot makes data once hidden by volume, discoverable by intent.&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;R8&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Sensitivity label gaps&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Apps &amp;amp; Data&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Microsoft Purview sensitivity labels tell Copilot how to handle content, including whether it can summarize, cite, or include that content in responses. Leaving content unlabeled, mislabeling, or miss inheriting labels across containers such as SharePoint sites and Teams, Copilot treats the content as unclassified and may surface it freely. Many enterprise tenants still contain large volumes of unlabeled legacy content, and Copilot cannot infer classification on its own.&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;R9&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Excessive user permissions&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Identity &amp;amp; Apps&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Like overshared content, Copilot follows each user’s existing Microsoft Graph permissions and does not surface content users cannot access. In many enterprise environments, however, users accumulate access far beyond their current role through leftover project permissions, broad temporary group memberships, and inherited rights from outdated organizational structures. Copilot does not create this overprovisioning, but it makes the full scope of that access immediately visible and usable.&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;R10&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;No DLP coverage on Copilot-generated outputs&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Apps &amp;amp; Data&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Copilot outputs—including summaries, drafts, and synthesized answers—are generated content, and traditional DLP policies do not always preserve links to original source data.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Users may receive Copilot responses containing aggregated PII, financial data, or confidential project details and paste that information into emails, Teams messages, or external documents without triggering DLP policies designed to detect the original source files. As content shifts from source material to generated output, organizations often lose the underlying sensitivity context.&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;R11&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Plugin and connector data surface expansion&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Apps &amp;amp; Identity&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Organizations can extend Microsoft 365 Copilot through plugins and Microsoft Graph connectors that pull external data from CRM systems, ITSM platforms, HR applications, and custom line-of-business tools. Each connector expands the data surface Copilot can query on a user’s behalf and often reaches into systems whose access control models do not align natively with Microsoft 365 permissions.&amp;nbsp;As organizations add connectors, each connected source introduces governance and audit risk that expands alongside the broader Copilot data surface.&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;R12&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Audit and visibility gap&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Apps &amp;amp; Data&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Organizations need visibility into what users asked Copilot, what data Copilot accessed, , and what responses it generated to maintain an effective security posture for both incident response and risk monitoring. Disabling Copilot interaction logging, retaining audit logs for too short a period, or failing to forward logs to a SIEM, obscures the organization’s visibility into how users interact with Copilot, whether Copilot surfaces unexpected content, and whether activity may indicate compromise. Without audit data, organizations cannot reliably detect misuse or investigate incidents.&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;R13&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Privileged user data amplification&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Identity, Apps &amp;amp; Data&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Administrators, senior IT staff, and other privileged users often hold access that spans organizational boundaries, including mailboxes, site collections, security groups, and configuration data that most users never access.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A compromised admin account with Copilot access gives adversaries an organization-wide view of data that far exceeds the exposure associated with a compromised end-user account. Organizations therefore need to apply the strictest Copilot access governance to privileged identities.&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 101px" /&gt;&lt;col style="width: 213px" /&gt;&lt;col style="width: 183px" /&gt;&lt;col style="width: 441px" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Table – 3:&lt;/STRONG&gt;&lt;/EM&gt; Layer-2 Risks: What data can Microsoft 365 Copilot reach?&lt;/P&gt;
&lt;H2&gt;Key observations from Layer 2:&amp;nbsp;&lt;/H2&gt;
&lt;P&gt;Apps-related risks appear throughout Layer 2 because Microsoft 365 Copilot depends heavily on connected systems, accessible data sources, and governance over generated outputs. The Data pillar further emphasizes the need to protect not only sensitive source content but also AI-generated responses that aggregate and surface information across systems.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The table above maps each identified risk to its primary and secondary Zero Trust pillars. Primary pillars represent control areas that most directly govern a given risk, while secondary pillars represent contributing dimensions.&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Conclusion &amp;amp; next steps&lt;/H1&gt;
&lt;P&gt;Copilot typically does not grant broader access than a user already has — it makes existing access easier to discover, connect, and use across Microsoft 365. Organizations that successfully scale Copilot are the ones that understand and govern that access first.&lt;/P&gt;
&lt;P&gt;Reducing Copilot data exposure is not a one-time cleanup; it is a continuous governance posture. Oversharing accumulates, labels drift, permissions grow, and connectors are added. Together, the Layer 1 and Layer 2 controls in this guide create the feedback loops that keep the risk surface governed as the organization and its use of Copilot evolve — governing not only who can access the service, but what it can reach on their behalf.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;WHERE TO GO NEXT&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Assess your current posture: &lt;/STRONG&gt;Zero Trust Workshop — &lt;A href="http://zerotrust.microsoft.com" target="_blank" rel="noopener"&gt;http://zerotrust.microsoft.com&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Understand the framework: &lt;/STRONG&gt;Zero Trust Overview on Microsoft Learn (&lt;A href="http://learn.microsoft.com/security/zero-trust" target="_blank" rel="noopener"&gt;http://learn.microsoft.com/security/zero-trust&lt;/A&gt;)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 23 Jul 2026 15:37:20 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/understanding-microsoft-365-copilot-risk-surface-and-mitigations/ba-p/4538712</guid>
      <dc:creator>AtilGurcan</dc:creator>
      <dc:date>2026-07-23T15:37:20Z</dc:date>
    </item>
    <item>
      <title>Should You Use the New Microsoft Entra Tenant Governance or Azure Lighthouse? (part 3 of 3)</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/should-you-use-the-new-microsoft-entra-tenant-governance-or/ba-p/4532297</link>
      <description>&lt;P&gt;In&amp;nbsp;&lt;A href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/implementing-azure-lighthouse-a-technical-guide-for-service-providers-and-enterp/4490592" target="_blank" rel="noopener"&gt;Part 1&lt;/A&gt;&amp;nbsp;we built Azure Lighthouse the technical way. In&amp;nbsp;Part 2,&amp;nbsp;&lt;EM&gt;"&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/azure-lighthouse-bring-your-partner-in-without-letting-their-identities-in-part-/4529852" target="_blank" rel="noopener" data-lia-auto-title="Bring Your Partner In, Without Letting Their Identities In" data-lia-auto-title-active="0"&gt;Bring Your Partner In, Without Letting Their Identities In&lt;/A&gt;,"&lt;/EM&gt; we made the security case for it: let a service provider operate a customer's Azure resources without creating any identity in the customer's tenant.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This third part introduces another, newly available delegation model&amp;nbsp;&lt;STRONG&gt;Microsoft Entra Tenant Governance&lt;/STRONG&gt;&amp;nbsp;and helps you to answer the question:&amp;nbsp;&lt;EM&gt;which one do I use, and when?&lt;/EM&gt;. If you already know Lighthouse, you have everything you need to follow along - If not, catch up on the previous two articles. While most of the focus will be on Microsoft Entra Tenant Governance, we will compare and contrast it with Azure Lighthouse.&lt;/P&gt;
&lt;P&gt;There's one idea that makes the whole comparison click:&amp;nbsp;&lt;STRONG&gt;the two models project access in opposite directions.&lt;/STRONG&gt;&lt;/P&gt;
&lt;H2 class="lia-linked-item"&gt;&lt;a id="community--1-One" class="lia-anchor"&gt;&lt;/a&gt;1. Azure Lighthouse, and its boundary&lt;/H2&gt;
&lt;P&gt;As a brief refresher, &lt;SPAN class="lia-text-color-21"&gt;Azure&lt;/SPAN&gt; Lighthouse lets a service provider manage a customer's Azure resources (subscriptions and resource groups) from the provider's own tenant. The provider's users never get an account in the customer's directory and never become guests there; instead, the customer's subscriptions and resource groups are &lt;EM&gt;delegated&lt;/EM&gt;&amp;nbsp;to the provider through Azure Resource Manager, and the provider operates them with their&amp;nbsp;home credentials&amp;nbsp;(&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/architecture" target="_blank" rel="noopener"&gt;Azure Lighthouse architecture&lt;/A&gt;). No identity sprawl, no extra license, no charge (&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/overview" target="_blank" rel="noopener"&gt;Azure Lighthouse overview&lt;/A&gt;).&lt;/P&gt;
&lt;P class="lia-align-left"&gt;Lighthouse is&amp;nbsp;scoped to the Azure Resource Manager control plane. It delegates&amp;nbsp;&lt;EM&gt;resources from subscriptions or resource groups such as&lt;/EM&gt; virtual machines, storage, networking, policy, and Sentinel workspaces. It does not grant Microsoft Entra directory roles, it does not reach resource data planes such as Storage blob data or Key Vault secrets, and it doesn't reach Microsoft 365 (&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/cross-tenant-management-experience" target="_blank" rel="noopener"&gt;cross-tenant management experience&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;But it leaves a real question open. What happens when the partner (or an enterprise with multiple tenants) legitimately needs access to the directory, to read identity configuration, run security operations, administer users, or govern identities, and not just the resource estate? Lighthouse, by design, can't take you there. That's the gap the second model fills.&lt;/P&gt;
&lt;H2 class="lia-linked-item"&gt;&lt;a id="community--1-Two" class="lia-anchor"&gt;&lt;/a&gt;2. Two directions of projection&lt;/H2&gt;
&lt;P&gt;The easiest way to keep the two models straight is to consider the following:&lt;/P&gt;
&lt;img&gt;Fig 1 - Access delegation direction of trust&lt;/img&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure Lighthouse projects the customer's&amp;nbsp;&lt;EM&gt;resources up&lt;/EM&gt;&amp;nbsp;into the provider's tenant.&lt;/STRONG&gt;&amp;nbsp;The provider manages those resources from its&amp;nbsp;own&amp;nbsp;context. The customer's subscription is, in effect, presented inside the provider's Azure portal.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Microsoft Entra Tenant Governance projects the provider's&amp;nbsp;&lt;EM&gt;identity down&lt;/EM&gt;&amp;nbsp;into the customer's tenant.&lt;/STRONG&gt;&amp;nbsp;A principal from the provider tenant becomes usable&amp;nbsp;inside the customer, and a provider&amp;nbsp;user or service principal&amp;nbsp;uses it there to do the work.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Each delegate cross-tenant access without local accounts, but the&amp;nbsp;&lt;EM&gt;thing that moves&lt;/EM&gt;&amp;nbsp;is opposite. And&amp;nbsp;who moves strongly shapes whose rules apply.&amp;nbsp;When the customer's resources come&amp;nbsp;&lt;EM&gt;up&lt;/EM&gt;&amp;nbsp;to the provider, the work happens in the provider's context. When the provider's identity goes&amp;nbsp;&lt;EM&gt;down&lt;/EM&gt;&amp;nbsp;to the customer, the work happens in the customer's context.&lt;/P&gt;
&lt;P&gt;Think of the word "projection" as a way to reason about&amp;nbsp;trust direction, not a literal claim that objects are copied between tenants. Lighthouse is delegated management&amp;nbsp;&lt;EM&gt;from the provider's context&lt;/EM&gt;; Tenant Governance creates&amp;nbsp;&lt;EM&gt;a governed principal in the customer's context&lt;/EM&gt; that can hold directory roles&amp;nbsp;and&amp;nbsp;Azure RBAC.&lt;/P&gt;
&lt;H2 class="lia-linked-item"&gt;&lt;a id="community--1-Three" class="lia-anchor"&gt;&lt;/a&gt;3. What is Microsoft Entra Tenant Governance?&lt;/H2&gt;
&lt;P&gt;Microsoft Entra Tenant Governance&amp;nbsp;is the capability that lets one tenant securely administer another. The connection between a specific pair of tenants is called a&amp;nbsp;governance relationship: a&amp;nbsp;&lt;EM&gt;directional&lt;/EM&gt;&amp;nbsp;link in which one tenant, the&amp;nbsp;governing&amp;nbsp;tenant (the provider), administers another, the&amp;nbsp;governed&amp;nbsp;tenant (the customer) (&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/how-to-set-up-governance-relationship" target="_blank" rel="noopener"&gt;set up a governance relationship&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;Throughout, this article is written from the&amp;nbsp;provider's&amp;nbsp;vantage point: when it says&amp;nbsp;&lt;EM&gt;you&lt;/EM&gt;, it means the provider (governing) side, and the other tenant is always referred to explicitly as&amp;nbsp;&lt;EM&gt;the customer&lt;/EM&gt;. The topics discussed here apply equally to Enterprises needing to manage many of their own tenants as well as Service Providers who manage many customer tenants.&lt;/P&gt;
&lt;P&gt;You set it up in two steps:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;A&amp;nbsp;&lt;STRONG&gt;policy template&lt;/STRONG&gt;&amp;nbsp;in the provider tenant that declares&amp;nbsp;&lt;EM&gt;which principal&lt;/EM&gt;&amp;nbsp;will be projected and&amp;nbsp;&lt;EM&gt;which Entra roles&lt;/EM&gt; it should receive. Note that RBAC assignments are not part of the governance relationship and must be completed by the customer in their tenant.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;A&amp;nbsp;&lt;STRONG&gt;handshake&lt;/STRONG&gt;&amp;nbsp;between the two tenants that establishes the trust boundary and provisions the access.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Now let’s dive into the details:&amp;nbsp;&lt;EM&gt;what gets projected&lt;/EM&gt;, and&amp;nbsp;&lt;EM&gt;how it gets its powers&lt;/EM&gt;.&lt;/P&gt;
&lt;H2 class="lia-linked-item"&gt;&lt;a id="community--1-Four" class="lia-anchor"&gt;&lt;/a&gt;4. What actually gets projected: one proxy principal&lt;/H2&gt;
&lt;P&gt;In the provider tenant you start with something completely ordinary, a&amp;nbsp;security group&amp;nbsp;(say, your "Cloud Operators" group), or a custom&amp;nbsp;multitenant application. When you form the governance relationship, a&amp;nbsp;proxy of that principal is created in the customer tenant:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A&amp;nbsp;&lt;STRONG&gt;security group&lt;/STRONG&gt;&amp;nbsp;is projected in as a&amp;nbsp;&lt;STRONG&gt;remote tenant group&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;An&amp;nbsp;&lt;STRONG&gt;application&lt;/STRONG&gt;&amp;nbsp;(a custom multitenant app) is projected in as a&amp;nbsp;service principal, when the relationship is established,&amp;nbsp;Tenant Governance automatically creates a service principal with the same permissions in the customer tenant&amp;nbsp;(no manual step on the customer's side):&amp;nbsp;&lt;EM&gt;"Tenant Governance creates a service principal with the same permissions in the governed tenant"&lt;/EM&gt; (&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/governance-policy-templates" target="_blank" rel="noopener"&gt;governance policy templates&lt;/A&gt;).&lt;/LI&gt;
&lt;LI&gt;&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI-SPOILER label="Note"&gt;
&lt;P&gt;Using a multitenant app registration with Tenant Governance requires an Entra ID Governance license.&lt;/P&gt;
&lt;/LI-SPOILER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img&gt;Fig 2 - Provider principal is projected into the customer tenant&lt;/img&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It’s important to keep two things straight, neither&amp;nbsp;is a local account or a guest:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;The proxy&lt;/STRONG&gt;, the remote tenant group (or, for an app, the service principal), is a&amp;nbsp;new principal created in the customer tenant by the relationship. It is&amp;nbsp;&lt;EM&gt;not&lt;/EM&gt;&amp;nbsp;a copy of the provider's group,&amp;nbsp;&lt;EM&gt;not&lt;/EM&gt;&amp;nbsp;a local group created in the customer, and&amp;nbsp;&lt;EM&gt;not&lt;/EM&gt;&amp;nbsp;a guest. It exists only because the relationship projects it, and it is what the provider grants roles to.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;The people and apps that use it&lt;/STRONG&gt;, the provider's&amp;nbsp;users and service principals, stay in the&amp;nbsp;provider&amp;nbsp;tenant. They never receive a member account or a guest invitation in the customer; they reach the customer&amp;nbsp;&lt;EM&gt;through&lt;/EM&gt;&amp;nbsp;the proxy.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Here is what that provider&amp;nbsp;user or service principal&amp;nbsp;is and isn't, from the customer's point of view:&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;The provider&amp;nbsp;user or service principal&amp;nbsp;is&amp;nbsp;NOT…&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;…it&amp;nbsp;IS…&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;A local member account created in the customer's directory&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;An identity that stays in the&amp;nbsp;&lt;STRONG&gt;provider&lt;/STRONG&gt;&amp;nbsp;tenant and authenticates with&amp;nbsp;&lt;STRONG&gt;provider&lt;/STRONG&gt;&amp;nbsp;credentials&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;A B2B guest invited into the customer&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Reachable only&amp;nbsp;&lt;STRONG&gt;through the projected proxy&lt;/STRONG&gt;, a signed-in user shows in the customer's logs as the provider tenant's name +&amp;nbsp;Technician&amp;nbsp;(e.g.&amp;nbsp;Contoso Technician)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;A standing, permanent object listed among the customer's users&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Present only as a&amp;nbsp;&lt;STRONG&gt;governed session or principal&lt;/STRONG&gt;, scoped by the relationship and revocable by the customer&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;To work in the customer tenant, a provider user opens a supported admin portal (Entra or Azure) and&amp;nbsp;appends the customer's tenant ID, for example&amp;nbsp;https://entra.microsoft.com/{customer-tenant-id}, then&amp;nbsp;signs in with their provider-tenant credentials. The customer's logs then show them a directory display name of&amp;nbsp;user_{object-id}&amp;nbsp;(the provider object ID without dashes), and, in&amp;nbsp;sign-in and audit logs, the&amp;nbsp;provider tenant's name followed by&amp;nbsp;Technician, so for a provider tenant named Contoso the entry reads&amp;nbsp;Contoso Technician&amp;nbsp;(&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/how-to-delegated-administration" target="_blank" rel="noopener"&gt;use cross-tenant delegated administration&lt;/A&gt;). No local account, no guest object, the resource-plane property Lighthouse provides, now on the directory plane (&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/cross-tenant-delegated-administration" target="_blank" rel="noopener"&gt;cross-tenant delegated administration&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;A note on the two projection mechanics, because they differ in a way worth understanding. A&amp;nbsp;&lt;STRONG&gt;group&lt;/STRONG&gt;&amp;nbsp;projects as a&amp;nbsp;&lt;EM&gt;remote tenant group&lt;/EM&gt;, a cross-tenant reference back to the provider's group, with no new local membership stored in the customer. An&amp;nbsp;&lt;STRONG&gt;application&lt;/STRONG&gt;&amp;nbsp;projects as a&amp;nbsp;&lt;EM&gt;real service principal&lt;/EM&gt; that is actually created in the customer with the consented permissions. Same idea, a governed proxy of a provider principal, but a group is a reference, while an app is an instantiated object.&lt;/P&gt;
&lt;H2 class="lia-linked-item"&gt;&lt;a id="community--1-Five" class="lia-anchor"&gt;&lt;/a&gt;5. How the proxy gets its powers: roles attach to the one principal&lt;/H2&gt;
&lt;P&gt;The proxy is&amp;nbsp;one principal. You don't create separate identities for "directory access" and "resource access." Instead, you&amp;nbsp;grant roles to that single proxy, and the roles can come from&amp;nbsp;two different planes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Directory roles&lt;/STRONG&gt;&amp;nbsp;govern the customer's Microsoft Entra directory. Think of&amp;nbsp;well-known&amp;nbsp;ones such as&amp;nbsp;Global Reader&amp;nbsp;(read-only across the directory),&amp;nbsp;Global&lt;STRONG&gt; &lt;/STRONG&gt;Administrator, or&amp;nbsp;User Administrator, selected as built-in roles in the policy template (&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/governance-policy-templates" target="_blank" rel="noopener"&gt;governance policy templates&lt;/A&gt;).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure RBAC roles&lt;/STRONG&gt; govern the customer's Azure resources. Think of the familiar Reader, Contributor, or a service-specific roles like Virtual Machine Contributor, assigned to the remote tenant group at a subscription or resource-group scope. This is not done as part of the governance relationship as the Entra directory role is. This must be assigned after the relationship is established likely by a privileged customer admin.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The bridge from directory to resources is the remote tenant group itself: because the projected group can be referenced by Azure RBAC, the same proxy that holds&amp;nbsp;Global Reader&amp;nbsp;in the directory can&amp;nbsp;&lt;EM&gt;also&lt;/EM&gt; hold&amp;nbsp;Reader&amp;nbsp;or&amp;nbsp;Contributor&amp;nbsp;on a resource group. Critically, these are&amp;nbsp;not separate identities, they are both&amp;nbsp;roles held by the one remote tenant group, as the diagram above shows. And the directory role grants&amp;nbsp;no&amp;nbsp;Azure access on its own; the resource rights come entirely from the explicit RBAC assignment you choose.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;That single design choice, &lt;EM&gt;roles branch off one proxy&lt;/EM&gt;, is what lets one projected principal span both planes: the same remote tenant group can hold a directory role&amp;nbsp;and&amp;nbsp;a separate, explicit Azure RBAC grant, without ever issuing a local account.&lt;/P&gt;
&lt;P&gt;What do these identities actually look like in the customer tenant? The only place you will see the security group is in the governance relationship. You will not find it among your other Entra groups.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img&gt;Fig 3 - Governance relationship shows the projected principal in the customer tenant&lt;/img&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img&gt;Fig 4 - The projected principal does not appear in the customer tenant security groups&lt;/img&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For RBAC purposes, you can find the proxy security group under resource Access Control (IAM) as a foreign group.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img&gt;Fig 5 - The projected principal is available for RBAC assignments as a foreign group&lt;/img&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 class="lia-linked-item"&gt;&lt;a id="community--1-Six" class="lia-anchor"&gt;&lt;/a&gt;6. The building blocks, and how they depend on each other&lt;/H2&gt;
&lt;P&gt;Now that the concept is in place, here's the assembly order. Each block depends on the one before it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img&gt;Fig 6 - Sequence of creating a governance relationship&lt;/img&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;A role-assignable security group&lt;/STRONG&gt;&amp;nbsp;in the provider tenant, the principal you intend to project.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;A policy template&lt;/STRONG&gt;&amp;nbsp;that selects which directory roles that group should receive when projected (&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/governance-policy-templates" target="_blank" rel="noopener"&gt;governance policy templates&lt;/A&gt;).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;A governance relationship&lt;/STRONG&gt;, established by a&amp;nbsp;handshake. In the standard three-step flow the customer&amp;nbsp;&lt;EM&gt;invites&lt;/EM&gt;, the provider&amp;nbsp;&lt;EM&gt;requests&lt;/EM&gt;&amp;nbsp;(carrying the template), and the customer&amp;nbsp;&lt;EM&gt;accepts&lt;/EM&gt;; a streamlined&amp;nbsp;two-step&amp;nbsp;flow (request → accept) applies when the two tenants already share a qualifying signal, such as a billing relationship or an existing governance relationship. At acceptance, the role assignments are provisioned in the customer (&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/how-to-set-up-governance-relationship" target="_blank" rel="noopener"&gt;set up a governance relationship&lt;/A&gt;). The template's role set is&amp;nbsp;projected&amp;nbsp;onto the relationship, so later template edits require a fresh request and re-approval, the customer always gets to review what changes.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;The projected proxy plus its role assignments&lt;/STRONG&gt;&amp;nbsp;in the customer, the remote tenant group (or service principal), now holding the directory and/or Azure RBAC roles you granted.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Under the hood:&lt;/STRONG&gt;&amp;nbsp;this cross-tenant delegation is powered by&amp;nbsp;granular delegated admin privileges (GDAP), the same delegation technology behind Partner Center (&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/cross-tenant-delegated-administration" target="_blank" rel="noopener"&gt;cross-tenant delegated administration&lt;/A&gt;). You don't configure it directly; the relationship and the template do it for you. That's all you need to know about the plumbing.&lt;/P&gt;
&lt;P&gt;The whole flow is also scriptable through the&amp;nbsp;Microsoft Graph&amp;nbsp;Tenant Governance APIs (&lt;A href="https://learn.microsoft.com/en-us/graph/api/resources/tenantgovernanceservices-tenantgovernance-overview?view=graph-rest-beta" target="_blank" rel="noopener"&gt;API overview&lt;/A&gt;), and a default template can bring&amp;nbsp;new add-on tenants&amp;nbsp;under governance automatically at creation (&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/deployment-guide#configure-a-default-policy-template-optional" target="_blank" rel="noopener"&gt;deployment guide&lt;/A&gt;).&lt;/P&gt;
&lt;H2 class="lia-linked-item"&gt;&lt;a id="community--1-Seven" class="lia-anchor"&gt;&lt;/a&gt;7. Key Features&lt;/H2&gt;
&lt;P&gt;Because the proxy can hold both directory roles and Azure RBAC, Tenant Governance unlocks delegated administration across the&amp;nbsp;&lt;EM&gt;entire&lt;/EM&gt;&amp;nbsp;surface a partner might legitimately need:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Directory administration&lt;/STRONG&gt;, read or manage the customer's Microsoft Entra directory with least-privileged built-in roles, using home credentials, no local accounts.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Identity governance&lt;/STRONG&gt;, run access reviews, entitlement management, and lifecycle workflows across many customer tenants from one place.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Security operations&lt;/STRONG&gt;, operate security and compliance tooling centrally. Microsoft Defender XDR and Microsoft Sentinel multitenant management for MSSPs is&amp;nbsp;one&amp;nbsp;prominent example built on this model (&lt;A href="https://learn.microsoft.com/en-us/unified-secops/governance-relationships" target="_blank" rel="noopener"&gt;governance relationships for unified SecOps&lt;/A&gt;).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure resource management&lt;/STRONG&gt;, the remote tenant group can carry Azure RBAC for any Azure service, exactly the way a local group would. That covers the management (control) plane only; neither model delegates the resource data plane (for example, blob data or Key Vault secrets), so those operations still require an identity native to the customer tenant.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Application management&lt;/STRONG&gt;, project a custom multitenant app as a service principal with consistent, least-privileged permissions across tenants (&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/governance-policy-templates" target="_blank" rel="noopener"&gt;governance policy templates&lt;/A&gt;).&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The provider's&amp;nbsp;users and service principals&amp;nbsp;use their&amp;nbsp;provider-tenant identities, and no local or B2B account is ever planted in the customer. The one object the customer does gain is in the&amp;nbsp;application&amp;nbsp;case, a governed&amp;nbsp;service principal&amp;nbsp;of the projected app, created and maintained through the relationship rather than as a standing local login.&lt;/P&gt;
&lt;H2 class="lia-linked-item"&gt;&lt;a id="community--1-Eight" class="lia-anchor"&gt;&lt;/a&gt;8. Comparing Tenant Governance with Azure Lighthouse&lt;/H2&gt;
&lt;P&gt;Now that both models are understood, the comparison is straightforward. They operate on different planes and point in different directions.&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;Dimension&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Lighthouse&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Entra Tenant Governance&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;Direction of projection&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Customer&amp;nbsp;&lt;STRONG&gt;resources → provider&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Provider&amp;nbsp;&lt;STRONG&gt;identity → customer&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Where the provider identity operates&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;From the&amp;nbsp;&lt;STRONG&gt;provider&lt;/STRONG&gt;&amp;nbsp;tenant (customer resources projected up; no customer sign-in)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;In the customer&lt;/STRONG&gt;&amp;nbsp;tenant, authenticated by the provider home tenant — as&amp;nbsp;{Provider} Technician&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Planes reached&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Azure resource (ARM) plane only&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Directory plane&amp;nbsp;&lt;EM&gt;and&lt;/EM&gt;&amp;nbsp;Azure resource plane&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Data-plane access (e.g., blob data, Key Vault secrets)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Not supported&lt;/STRONG&gt; (control/ARM plane only)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Not supported&lt;/STRONG&gt; (the proxy can hold a DataActions role, but cannot obtain a data-plane token)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Identity footprint in customer&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;None&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;A&amp;nbsp;&lt;STRONG&gt;projected proxy&lt;/STRONG&gt;&amp;nbsp;principal, no local or guest object&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Conditional Access&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Only the&amp;nbsp;&lt;STRONG&gt;provider's&lt;/STRONG&gt;&amp;nbsp;policies apply (&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/recommended-security-practices" target="_blank" rel="noopener"&gt;security practices&lt;/A&gt;)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The&amp;nbsp;&lt;STRONG&gt;customer's&lt;/STRONG&gt;&amp;nbsp;policies apply, the customer is the resource tenant for the technician's sign-in (&lt;EM&gt;lab-verified; see below&lt;/EM&gt;)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Where the privileged assignment lives&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Provider&lt;/STRONG&gt;&amp;nbsp;tenant (JIT approvers in the provider) (&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/create-eligible-authorizations" target="_blank" rel="noopener"&gt;eligible authorizations&lt;/A&gt;)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Customer&lt;/STRONG&gt;&amp;nbsp;tenant (the role assignment is owned customer-side)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Audit of provider actions&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Customer&amp;nbsp;&lt;STRONG&gt;Activity Log&lt;/STRONG&gt;&amp;nbsp;(&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/view-service-provider-activity" target="_blank" rel="noopener"&gt;view activity&lt;/A&gt;)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Customer&amp;nbsp;&lt;STRONG&gt;audit log&lt;/STRONG&gt;&amp;nbsp;records the provider user’s&amp;nbsp;&lt;EM&gt;actions&lt;/EM&gt;; the&amp;nbsp;&lt;STRONG&gt;authentication sign-in is recorded provider-side,&lt;/STRONG&gt; it appears in the customer's sign-in log only when the customer's CA fires&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Role types&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Azure built-in roles only, &lt;STRONG&gt;no custom roles&lt;/STRONG&gt;;&amp;nbsp;&lt;STRONG&gt;Owner&lt;/STRONG&gt;&amp;nbsp;and roles with&amp;nbsp;&lt;STRONG&gt;DataActions&lt;/STRONG&gt;&amp;nbsp;excluded, and&amp;nbsp;Microsoft.Authorization/*&amp;nbsp;writes excluded except&amp;nbsp;&lt;STRONG&gt;User Access Administrator&lt;/STRONG&gt;&amp;nbsp;for managed-identity assignments (&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/tenants-users-roles" target="_blank" rel="noopener"&gt;role rules&lt;/A&gt;)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Directory roles&amp;nbsp;and&amp;nbsp;Azure RBAC (including&amp;nbsp;&lt;STRONG&gt;custom&lt;/STRONG&gt;&amp;nbsp;RBAC) on the proxy&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Setup&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;ARM template / Marketplace offer (&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/onboard-customer" target="_blank" rel="noopener"&gt;onboard&lt;/A&gt;)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Relationship handshake (invitation → request → acceptance)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Revocation&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Remove the delegation, either party (&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/remove-delegation" target="_blank" rel="noopener"&gt;remove&lt;/A&gt;)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Terminate the relationship, either party&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Operational view&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Single pane of glass&lt;/STRONG&gt;, every delegated customer's resources surface in the provider's&amp;nbsp;&lt;STRONG&gt;own&lt;/STRONG&gt;&amp;nbsp;portal&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Per-customer&lt;/STRONG&gt;, the admin signs in to each customer tenant individually&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Best for&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Scaled&amp;nbsp;&lt;STRONG&gt;Azure resource&lt;/STRONG&gt;&amp;nbsp;operations&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Directory / identity / security&lt;/STRONG&gt;&amp;nbsp;delegation&amp;nbsp;plus&amp;nbsp;resources&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;&lt;EM&gt;The sign-in, Conditional Access, footprint, and audit rows describe &lt;STRONG&gt;the&amp;nbsp;human delegated-administration&lt;/STRONG&gt;&amp;nbsp;path (a projected group). In the&amp;nbsp;application&amp;nbsp;case the customer instead gets a governed&amp;nbsp;service principal, so those rows read differently.&lt;/EM&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt; Direction of projection, the root cause. &lt;/STRONG&gt;Everything else in the table is a consequence of this one row. Lighthouse brings the customer's&amp;nbsp;&lt;EM&gt;resources &lt;/EM&gt;up to the provider; Tenant Governance places a governed proxy of the&amp;nbsp;&lt;EM&gt;provider's identity&lt;/EM&gt;&amp;nbsp;down in the customer. Decide which direction your scenario actually needs, and the rest mostly answers itself.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Conditional Access, the cleanest inverse. &lt;/STRONG&gt;With Lighthouse, provider users authenticate&amp;nbsp;in their own tenant, so the customer's Conditional Access never reaches them, &lt;EM&gt;"Only policies set on the managing tenant apply"&lt;/EM&gt;(&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/recommended-security-practices" target="_blank" rel="noopener"&gt;recommended security practices&lt;/A&gt;). With Tenant Governance the provider actually&amp;nbsp;signs in to the customer tenant&amp;nbsp;(&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/how-to-delegated-administration" target="_blank" rel="noopener"&gt;use cross-tenant delegated administration&lt;/A&gt;), which makes the customer the&amp;nbsp;resource tenant&amp;nbsp;that evaluates Conditional Access, so the&amp;nbsp;customer's&amp;nbsp;policies govern the inbound provider login, not the provider's policies.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Two nuances to keep in mind: When the provider logs into the customer tenant, the authentication still happens with the provider’s tenant, but the conditional access policy applied to the login is in the customer tenant.&lt;/P&gt;
&lt;OL start="3"&gt;
&lt;LI&gt;&lt;STRONG&gt; Where privileged access lives. &lt;/STRONG&gt;Lighthouse offers just-in-time elevation through eligible authorizations, and the&amp;nbsp;approvers sit in the provider (managing) tenant, &lt;EM&gt;"up to 10 users or user groups in the managing tenant who can approve"&lt;/EM&gt;(&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/create-eligible-authorizations" target="_blank" rel="noopener"&gt;create eligible authorizations&lt;/A&gt;). Tenant Governance inverts the ownership: the proxy's role assignment&amp;nbsp;lives in the customer tenant, so privileged-access governance over that assignment is anchored&amp;nbsp;customer-side. The useful contrast is simply&amp;nbsp;&lt;EM&gt;where the assignment lives and who governs it&lt;/EM&gt;, provider-side for Lighthouse, customer-side for Tenant Governance.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Audit and identity footprint. &lt;/STRONG&gt;With Lighthouse, provider actions land in the customer's Azure Activity Log under a named user, with no customer sign-in and no directory object (&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/view-service-provider-activity" target="_blank" rel="noopener"&gt;view provider activity&lt;/A&gt;). Tenant Governance is more subtle. The provider user's authentication is handled and logged in the provider (home) tenant, so the bare sign-in appears&amp;nbsp;&lt;EM&gt;there&lt;/EM&gt;, not in the customer tenant. What does get logged in the customer directory is the provider user’s actions, in its audit log, where the actor shows as the &amp;lt;provider tenant's name +&amp;nbsp;Technician&amp;gt;&amp;nbsp;(e.g.&amp;nbsp;Contoso Technician) (&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/how-to-delegated-administration" target="_blank" rel="noopener"&gt;use cross-tenant delegated administration&lt;/A&gt;). A sign-in entry from the provider user only appears in the customer's logs when the customer's Conditional Access evaluates the session, for example, an MFA challenge. Without such a policy, that sign-in is only logged on the provider side. Either way, the customer keeps a full audit of what the technician does and gains no standing local or guest object (&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/cross-tenant-delegated-administration" target="_blank" rel="noopener"&gt;cross-tenant delegated administration&lt;/A&gt;).&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img&gt;Fig 7 - The providers activities on resources are logged in the customer's subscription activity log as "&amp;lt;provider name&amp;gt; Technician"&lt;/img&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img&gt;Fig 8 - When the provider logs into the customer tenant, their authentication is logged against the provider tenant while Conditional Access is logged against the customer tenant&lt;/img&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL start="5"&gt;
&lt;LI&gt;&lt;STRONG&gt; One console vs. many: Operational reach. &lt;/STRONG&gt;Because Lighthouse projects the customer's resources&amp;nbsp;&lt;EM&gt;up&lt;/EM&gt;, the provider works from a&amp;nbsp;single pane of glass, every delegated customer's subscriptions appear in the provider's&amp;nbsp;own&amp;nbsp;Azure portal, and cross-tenant tooling, Azure Resource Graph, Microsoft Sentinel, Azure Policy, Azure Monitor, can span all of them at once. Tenant Governance points the other way: the provider's identity projects&amp;nbsp;&lt;EM&gt;down &lt;/EM&gt;into each customer, so day-to-day administration is&amp;nbsp;per-customer, the admin signs in to each customer tenant in turn. (Service consoles such as Microsoft Defender XDR add their own aggregated multitenant views on top, but the underlying delegated-admin model is per-tenant.) When operating&amp;nbsp;many&amp;nbsp;customers' Azure estates from one console is the priority, that single-pane reach is a distinct Lighthouse strength.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2 class="lia-linked-item"&gt;&lt;a id="community--1-Nine" class="lia-anchor"&gt;&lt;/a&gt;9. Where the two models overlap&lt;/H2&gt;
&lt;P&gt;As is the case with other delegated access models, there is clear overlap between Azure Lighthouse and Tenant Governance:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Both eliminate local and B2B accounts&lt;/STRONG&gt;&amp;nbsp;in the customer. The partner's people stay in the provider tenant either way (&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/architecture" target="_blank" rel="noopener"&gt;Lighthouse architecture&lt;/A&gt;,&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/cross-tenant-delegated-administration" target="_blank" rel="noopener"&gt;cross-tenant delegated administration&lt;/A&gt;).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Both can ultimately place Azure RBAC on customer resources&lt;/STRONG&gt;, Lighthouse directly through the delegation, Tenant Governance via the remote tenant group.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Both are limited to the control (management) plane&lt;/STRONG&gt;, neither delegates resource data-plane access (for example, blob data or Key Vault secrets); that still requires an identity native to the customer tenant.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Both keep the customer in control of the audit record&lt;/STRONG&gt;, provider actions are written to the customer's logs.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Both are revocable by either party&lt;/STRONG&gt;, remove the delegation, or terminate the relationship.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 class="lia-linked-item"&gt;&lt;a id="community--1-Ten" class="lia-anchor"&gt;&lt;/a&gt;10. What is complimentary with the two models?&lt;/H2&gt;
&lt;P&gt;Because they sit on different planes and point in opposite directions, you can use one or both.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img&gt;Fig 9 - Azure Lighthouse and Entra Tenant Governance compared&lt;/img&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Deciding between the two delegated access models:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Need only to operate the customer's Azure resources, especially across many customers?&lt;/STRONG&gt;&amp;nbsp;Choose&amp;nbsp;Azure Lighthouse, no extra license or charge, a broad set of Azure built-in roles (Owner and custom roles excluded), just-in-time elevation with provider-side approval, zero directory footprint, and a&amp;nbsp;single pane of glass: because customer resources project&amp;nbsp;&lt;EM&gt;up&lt;/EM&gt;&amp;nbsp;into the provider's tenant, the provider manages&amp;nbsp;every&amp;nbsp;customer's estate from their&amp;nbsp;own&amp;nbsp;portal, with cross-tenant tooling spanning all of them at once.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Need directory, identity, or security reach, not just resources?&lt;/STRONG&gt;&amp;nbsp;Choose&amp;nbsp;Microsoft Entra Tenant Governance, directory roles and Azure RBAC on one projected principal, with the customer's own sign-in controls in the loop. Because the provider's identity projects&amp;nbsp;&lt;EM&gt;down&lt;/EM&gt;&amp;nbsp;into each customer, administration is&amp;nbsp;per-customer: the admin signs in to each customer tenant in turn rather than from one aggregated console.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Need both on the same tenant?&lt;/STRONG&gt;&amp;nbsp;Use both. They coexist because they operate on different planes, Lighthouse for the resource estate, Tenant Governance for directory and security.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 class="lia-linked-item"&gt;&lt;a id="community--1-Eleven" class="lia-anchor"&gt;&lt;/a&gt;11. Key points to remember about Entra Tenant Governance&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Least privilege.&lt;/STRONG&gt;&amp;nbsp;A directory role grants&amp;nbsp;&lt;EM&gt;no&lt;/EM&gt;&amp;nbsp;Azure access, and an Azure RBAC role grants&amp;nbsp;&lt;EM&gt;no&lt;/EM&gt;&amp;nbsp;directory access. Each plane is an&amp;nbsp;explicit grant&amp;nbsp;to the proxy, start with read-only (e.g.,&amp;nbsp;Global Reader&amp;nbsp;in the directory,&amp;nbsp;Reader&amp;nbsp;on resources) and add only what's needed.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Directory ≠ resource.&lt;/STRONG&gt; The two planes are independent. If the partner needs to operate Azure resources, that comes from an explicit RBAC assignment on the remote tenant group, not from any directory role. That RBAC is control-plane only; neither Tenant Governance nor Lighthouse delegates the resource data plane (for example, blob data or Key Vault secrets), which still requires an identity native to the customer tenant.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Tenant discovery is irreversible.&lt;/STRONG&gt;&amp;nbsp;Enabling related-tenant discovery is&amp;nbsp;permanent&amp;nbsp;(&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/deployment-guide#phase-1-enable-related-tenant-discovery" target="_blank" rel="noopener"&gt;deployment guide&lt;/A&gt;). For a controlled pilot, run the handshake&amp;nbsp;by&lt;STRONG&gt; &lt;/STRONG&gt;tenant ID&amp;nbsp;and skip discovery. Azure&amp;nbsp;Lighthouse, by contrast, coexists with a governance relationship on the same customer, different mechanism, different plane.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Conditional Access is the customer's to enforce.&lt;/STRONG&gt;&amp;nbsp;Because the provider signs in to the customer tenant, the&amp;nbsp;customer's&amp;nbsp;Conditional Access governs that access.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 class="lia-linked-item"&gt;&lt;a id="community--1-Twelve" class="lia-anchor"&gt;&lt;/a&gt;12. Summary&lt;/H2&gt;
&lt;P&gt;Azure Lighthouse and Microsoft Entra Tenant Governance are two delegation models pointing in opposite directions. Lighthouse brings the customer's&amp;nbsp;resources up&amp;nbsp;to the provider and keeps the provider's Azure access clean and identity-free. Tenant Governance places a&amp;nbsp;governed proxy of the provider down&amp;nbsp;in the customer, extending the very philosophy from Parts 1–2, &lt;EM&gt;govern the relationship, not the people&lt;/EM&gt;, from the resource plane all the way into the&amp;nbsp;directory.&lt;/P&gt;
&lt;P&gt;Choose by the direction the trust needs to flow: bring the resources to you (Azure Lighthouse), or place a governed proxy of yourself in the customer (Microsoft Entra Tenant Governance). When you need both, use both.&lt;/P&gt;</description>
      <pubDate>Thu, 23 Jul 2026 12:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/should-you-use-the-new-microsoft-entra-tenant-governance-or/ba-p/4532297</guid>
      <dc:creator>Preston_Romney</dc:creator>
      <dc:date>2026-07-23T12:00:00Z</dc:date>
    </item>
    <item>
      <title>Azure Lighthouse: Bring Your Partner In, Without Letting Their Identities In (part 2 of 3)</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/azure-lighthouse-bring-your-partner-in-without-letting-their/ba-p/4529852</link>
      <description>&lt;P&gt;See part 1 – &lt;A href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/implementing-azure-lighthouse-a-technical-guide-for-service-providers-and-enterp/4490592" target="_blank" rel="noopener"&gt;Implementing Azure Lighthouse: A Technical Guide for Service Providers and Enterprises&lt;/A&gt;&lt;A href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/implementing-azure-lighthouse-a-technical-guide-for-service-providers-and-enterp/4490592" target="_blank" rel="noopener"&gt; (part 1 of 2)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;See part 3 – &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/should-you-use-the-new-microsoft-entra-tenant-governance-or-azure-lighthouse-par/4532297" data-lia-auto-title="Should You Use the New Microsoft Entra Tenant Governance or Azure Lighthouse? (part 3 of 3)" data-lia-auto-title-active="0" target="_blank"&gt;Should You Use the New Microsoft Entra Tenant Governance or Azure Lighthouse? (part 3 of 3)&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;The three traditional ways in, and what each leaves behind&lt;/H2&gt;
&lt;P&gt;When a provider needs to operate your Azure resources, there are three common patterns. Microsoft’s own cross‑tenant management guidance describes the starting point bluntly: &lt;EM&gt;“an administrator in the customer’s tenant must create and manage user accounts for the service provider.”&lt;/EM&gt; (&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/cross-tenant-management-experience" target="_blank" rel="noopener"&gt;cross‑tenant management experience&lt;/A&gt;)&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt; B2B guest accounts.&lt;/STRONG&gt; You invite each provider engineer into your tenant through &lt;A href="https://learn.microsoft.com/en-us/entra/external-id/what-is-b2b" target="_blank" rel="noopener"&gt;Microsoft Entra External ID&lt;/A&gt; and assign them Azure roles. A real &lt;A href="https://learn.microsoft.com/en-us/entra/external-id/user-properties" target="_blank" rel="noopener"&gt;user object is created in your directory&lt;/A&gt; (its UPN carries the #EXT# marker) and it can be “managed like an employee, for example, added to groups or assigned to applications.” Convenient, but now it’s &lt;EM&gt;your&lt;/EM&gt; object to track, review, and eventually delete.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Member (local) accounts.&lt;/STRONG&gt; You create internal accounts, sometimes licensed, for provider staff. Microsoft’s &lt;A href="https://learn.microsoft.com/en-us/entra/architecture/secure-external-access-resources" target="_blank" rel="noopener"&gt;secure external access guidance&lt;/A&gt; lists the drawbacks of these “local credentials” plainly: &lt;EM&gt;“Access continues after external user terminates,”&lt;/EM&gt; the Member user type “grants too much default access,” and you take on “password and multifactor authentication management… [and] identity cleanup.” Member users also receive &lt;A href="https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions" target="_blank" rel="noopener"&gt;broad default directory permissions&lt;/A&gt;, they can enumerate users, create security groups, and register applications.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Service principals with shared secrets.&lt;/STRONG&gt; You register an app and hand the provider a client secret or certificate. Microsoft’s &lt;A href="https://learn.microsoft.com/en-us/entra/identity-platform/security-best-practices-for-app-registration" target="_blank" rel="noopener"&gt;app‑registration security guidance&lt;/A&gt; is explicit: &lt;EM&gt;“Don’t use password credentials… they are often mismanaged and can be easily compromised,”&lt;/EM&gt; and you must “roll over credentials frequently.” And because &lt;A href="https://learn.microsoft.com/en-us/entra/identity-platform/app-objects-and-service-principals" target="_blank" rel="noopener"&gt;an app object and its service principal are governed separately&lt;/A&gt; from the &lt;A href="https://learn.microsoft.com/en-us/azure/role-based-access-control/overview" target="_blank" rel="noopener"&gt;Azure role assignments&lt;/A&gt; they hold, deleting the app won’t revoke the access it was granted in your subscriptions, those assignments persist as separate objects until you remove them.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Each of these makes the provider’s identity &lt;EM&gt;your&lt;/EM&gt; operational problem, and the bill grows with every new vendor.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;The hidden cost: you inherit an identity‑lifecycle problem&lt;/H2&gt;
&lt;P&gt;External identities have no HR signal inside your tenant. Microsoft’s&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/identity-governance-overview" target="_blank" rel="noopener"&gt;identity governance overview&lt;/A&gt; notes that lifecycle automation is normally “tied to the representation of that person in an HCM or HR system”, but the provider’s joiners, movers, and leavers live in &lt;EM&gt;their&lt;/EM&gt; HR system, not yours. When an engineer leaves the provider, nothing in your tenant knows.&lt;/P&gt;
&lt;P&gt;So you compensate with machinery. To keep guest sprawl in check you run &lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/access-reviews-overview" target="_blank" rel="noopener"&gt;access reviews&lt;/A&gt; and &lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/entitlement-management-overview" target="_blank" rel="noopener"&gt;entitlement management&lt;/A&gt;, capabilities that &lt;EM&gt;require&lt;/EM&gt; a &lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/access-reviews-overview" target="_blank" rel="noopener"&gt;Microsoft Entra ID Governance or Entra Suite license&lt;/A&gt;. You watch for &lt;A href="https://learn.microsoft.com/en-us/entra/identity/users/clean-up-stale-guest-accounts" target="_blank" rel="noopener"&gt;stale guest accounts&lt;/A&gt;, which Microsoft flags only after a 90‑day inactivity default. Because partner devices aren’t managed by you, &lt;A href="https://learn.microsoft.com/en-us/entra/external-id/b2b-fundamentals" target="_blank" rel="noopener"&gt;device‑based Conditional Access blocks them&lt;/A&gt; whenever you enforce such a policy, so you build per‑partner exclusion lists. And you rotate service‑principal secrets on a schedule.&lt;/P&gt;
&lt;P&gt;Now multiply all of that by every vendor.&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;Every vendor adds external identities, guests, members, and service principals, into your own Microsoft Entra tenant, where they become your responsibility to govern.&lt;/P&gt;
&lt;P&gt;The result is external‑identity debt. Microsoft’s &lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/access-reviews-overview" target="_blank" rel="noopener"&gt;access‑reviews guidance&lt;/A&gt; warns that “excessive access rights can lead to compromises… [and] audit findings as they indicate a lack of control over access.” And it runs against &lt;A href="https://learn.microsoft.com/en-us/azure/security/fundamentals/identity-management-best-practices" target="_blank" rel="noopener"&gt;Zero Trust&lt;/A&gt;, which treats identity as the primary security perimeter: every external account you hold is a piece of attack surface you now own.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;A lesser‑known exposure: identities that can create subscriptions&lt;/H2&gt;
&lt;P&gt;There’s a subtler reason to keep external partners out of your directory, and it has nothing to do with the roles you assign them. By default, any identity that exists in your tenant, including a guest or a member account, can create new subscriptions in your tenant, or bring external ones into it, without holding any Azure permission you granted. Those subscriptions land &lt;EM&gt;inside&lt;/EM&gt; your tenant and inherit your directory, yet they originate outside your procurement, billing, and governance, and it’s surprisingly easy to miss that it happened.&lt;/P&gt;
&lt;P&gt;It’s a real gap, and closing it takes deliberate, tenant‑wide controls that many organizations simply haven’t put in place. (The specifics are best worked through privately with your Azure and billing administrators.) The point that matters here is about &lt;EM&gt;where the partner’s identity lives&lt;/EM&gt;: the exposure exists only because there is an account in your tenant to exercise it. A Lighthouse provider has no identity in your tenant at all, so this entire class of exposure simply doesn’t apply to them. It’s one more thing you never have to govern when the partner never becomes a resident of your directory.&lt;/P&gt;
&lt;H2&gt;A better model: Azure Lighthouse&lt;/H2&gt;
&lt;P&gt;Azure Lighthouse takes a different approach called &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/architecture" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Azure delegated resource management&lt;/STRONG&gt;&lt;/A&gt;. Instead of importing the provider’s people into your directory, it lets authorized users &lt;EM&gt;who remain entirely in the provider’s own tenant&lt;/EM&gt; operate on your resources, &lt;EM&gt;“without having an account in that customer’s Microsoft Entra tenant or being a co‑owner of the customer’s tenant.”&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;Azure Lighthouse projects the provider’s identities onto your subscriptions through Azure Resource Manager. The only objects created in your tenant are two ARM resources you can audit and remove.&lt;/P&gt;
&lt;P&gt;Mechanically, you (specifically, an &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/onboard-customer" target="_blank" rel="noopener"&gt;Owner or equivalent&lt;/A&gt; in your tenant) deploy a small Azure Resource Manager template, or accept a private &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/managed-services-offers" target="_blank" rel="noopener"&gt;Marketplace offer&lt;/A&gt;, that creates two resources in your subscription: a registration definition (which managing tenant, and which built‑in roles for which provider principals) and a registration assignment (binding that to a subscription or resource group). From then on, when a provider user acts on your resources, Azure Resource Manager checks those two resources and authorizes the request. Access is one‑directional, from the managing tenant to yours, and it exists &lt;EM&gt;only because you deployed it&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;Crucially, no provider user, guest, member, or service‑principal object is ever created in your directory. Provider identities, and the MFA, Conditional Access, and device‑compliance policies that govern them, stay where the provider already manages them. There is also &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/overview" target="_blank" rel="noopener"&gt;no extra charge&lt;/A&gt; for Azure Lighthouse itself.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Conditional Access Policy Considerations&lt;/H2&gt;
&lt;P&gt;Because provider users authenticate in &lt;EM&gt;their&lt;/EM&gt; tenant,&lt;STRONG&gt; &lt;/STRONG&gt;your Conditional Access policies do not apply to them. Microsoft states it directly in the &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/recommended-security-practices" target="_blank" rel="noopener"&gt;recommended security practices&lt;/A&gt;: &lt;EM&gt;“Conditional access policies on customer tenants don’t apply to users who access the customer’s resources through Azure Lighthouse. Only policies set on the managing tenant apply.”&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;That’s a natural consequence of the identity living with the provider. It just means the controls move from “policies you enforce” to “controls you &lt;EM&gt;require and verify&lt;/EM&gt;”: insist the provider enforces MFA and Conditional Access on its own users, write it into the contract, and use &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/view-manage-service-providers" target="_blank" rel="noopener"&gt;Azure Policy to restrict which managing tenants&lt;/A&gt; can ever be delegated to. Think of it as a shared‑responsibility split:&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;You control&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;The provider controls&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Joint&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;Delegated scope (subscription or resource group)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;User lifecycle (joiner/mover/leaver)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Evidence &amp;amp; audit cadence&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Which managing tenant is approved&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;MFA / Conditional Access&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Incident response process&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;The exact built‑in roles granted&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;PIM activation policy&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Security‑review schedule&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Azure Policy guardrails, monitoring, log export&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Device posture &amp;amp; group membership&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Revocation, at any time&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&amp;nbsp;&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;H2&gt;Side‑by‑side: it’s about who owns the work&lt;/H2&gt;
&lt;P&gt;The strongest argument for Lighthouse isn’t that it can do things the alternatives can’t, a well‑run B2B program can also use named identities, access reviews, and PIM. The difference is who owns the operational burden, and how much of it lands in &lt;EM&gt;your&lt;/EM&gt; directory.&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;Consideration&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;B2B guest&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Member account&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Service principal&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Lighthouse&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;Identity object in your directory&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Yes (#EXT#)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Yes&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Yes (app + SP)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;None&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Identity‑lifecycle owner&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;You&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;You&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;You&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;The provider&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Offboard the Azure access&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Manual cleanup&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Manual cleanup&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Manual + rotate secret&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Remove delegation (one action)&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Privilege‑escalation prevention&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Depends on roles + your IAM&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Depends&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Depends&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Blocked by the platform&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Per‑person audit trail (ARM)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Yes (named guest)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Yes&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;No (shared identity)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Yes (your Activity Log)&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;JIT for privileged roles&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Possible, you configure &amp;amp; license&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Possible, you configure&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Usually not&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Possible, provider configures&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Your IAM blade stays clean&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;No&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;No&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;No&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Yes&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Governance‑licensing owner&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;You (Entra ID Governance)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;You&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;You&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;The provider (for JIT)&lt;/STRONG&gt;&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;P&gt;The rest of this article walks the Azure Lighthouse column.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Benefit 1, Identity lifecycle stays with the provider&lt;/H2&gt;
&lt;P&gt;Because the identity lives in the provider’s tenant, the provider’s own joiner‑mover‑leaver process governs it automatically. When an engineer leaves, the provider disables that account in &lt;EM&gt;their&lt;/EM&gt; directory, and the person’s access to your delegated scope is gone, with no lingering object in your tenant to find and remove. The best practice of &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/tenants-users-roles" target="_blank" rel="noopener"&gt;assigning access to a security group&lt;/A&gt; makes this even cleaner: the provider adds and removes individuals from the group on their side, and you never touch the delegation.&lt;/P&gt;
&lt;P&gt;Contrast that with the &lt;A href="https://learn.microsoft.com/en-us/entra/architecture/secure-external-access-resources" target="_blank" rel="noopener"&gt;member‑account drawback&lt;/A&gt;, &lt;EM&gt;“access continues after external user terminates”&lt;/EM&gt;, and the difference is stark. Provider turnover stops creating identity‑cleanup work in your directory; your job shifts to governing the delegation and verifying the provider’s lifecycle controls.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Benefit 2, Least privilege you don’t have to police&lt;/H2&gt;
&lt;P&gt;Azure Lighthouse won’t even let a provider hold the roles that would let them take over. Per the &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/tenants-users-roles" target="_blank" rel="noopener"&gt;role‑support rules&lt;/A&gt;, delegation supports the &lt;A href="https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles" target="_blank" rel="noopener"&gt;Azure built‑in roles&lt;/A&gt; except:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The &lt;STRONG&gt;Owner&lt;/STRONG&gt; role can’t be delegated.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Custom roles&lt;/STRONG&gt; and classic administrator roles aren’t supported.&lt;/LI&gt;
&lt;LI&gt;Roles with &lt;STRONG&gt;DataActions&lt;/STRONG&gt; (data‑plane) permissions aren’t supported.&lt;/LI&gt;
&lt;LI&gt;Roles carrying &lt;STRONG&gt;Microsoft.Authorization/*&lt;/STRONG&gt; write/delete actions (role assignments, role definitions, locks, deny assignments) aren’t supported.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;User Access Administrator&lt;/STRONG&gt; is allowed only for the narrow purpose of assigning roles to managed identities, and you specify exactly which.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The practical effect: a delegated provider cannot grant itself more access, edit your role assignments, set resource locks, create deny assignments, or lock you out of your own resources. Least privilege here is enforced by the platform, not by your vigilance.&lt;/P&gt;
&lt;P&gt;One honest nuance to scope carefully: Lighthouse operates at the Azure Resource Manager control plane only and grants no direct data‑plane access, no reading blob contents or Key Vault secret values, as the &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/cross-tenant-management-experience" target="_blank" rel="noopener"&gt;cross‑tenant documentation&lt;/A&gt; explains. But a few control‑plane actions &lt;EM&gt;can&lt;/EM&gt; surface data indirectly (for example, a role that allows listKeys can return storage account keys), so choose the built‑in roles you delegate deliberately.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Benefit 3, One action ends it, for either party&lt;/H2&gt;
&lt;P&gt;Offboarding a whole vendor is normally a scavenger hunt across guests, accounts, secrets, and scattered role assignments. With Lighthouse it’s a single step. As the &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/remove-delegation" target="_blank" rel="noopener"&gt;remove‑delegation guidance&lt;/A&gt; puts it, after a delegation is removed &lt;EM&gt;“no users in the service provider’s tenant will be able to access the resources that had been previously delegated.”&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;When a project ends, removing the single delegation instantly cuts off the provider’s access to your scope, and leaves nothing behind in your directory. Either party can perform the removal.&lt;/P&gt;
&lt;P&gt;And importantly, either party can end it. You, an Owner in your tenant, can remove the offer from the &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/view-manage-service-providers" target="_blank" rel="noopener"&gt;Service providers page&lt;/A&gt; at any time, without involving the provider. The provider can also remove the delegation from their side when the engagement wraps up, provided they were granted the &lt;EM&gt;Managed Services Registration Assignment Delete Role&lt;/EM&gt; during onboarding (a recommended practice). Removal is unilateral on either side, takes effect for all of the provider’s users at once, and touches only the Lighthouse delegation, any &lt;EM&gt;other&lt;/EM&gt; access a vendor holds is separate.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Benefit 4, Complete, named visibility&lt;/H2&gt;
&lt;P&gt;Delegation doesn’t mean flying blind. Every action a provider takes is recorded in your &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/view-service-provider-activity" target="_blank" rel="noopener"&gt;Azure Activity Log&lt;/A&gt;, and the &lt;EM&gt;“Event initiated by”&lt;/EM&gt; column shows the specific provider user by name, the same place you see your own administrators’ actions. Logs are retained 90 days in‑portal and can be exported for longer, and you can set activity‑log alerts on critical operations.&lt;/P&gt;
&lt;P&gt;Interestingly, those provider users don’t clutter your Access Control (IAM) blade, &lt;EM&gt;“these users and their role assignments don’t appear in Access Control (IAM).”&lt;/EM&gt; You manage them in the dedicated Service providers experience instead, so your native role assignments stay clean. You can also use built‑in &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/view-manage-service-providers" target="_blank" rel="noopener"&gt;Azure Policy definitions&lt;/A&gt; to audit existing delegations or deny delegation to any managing tenant that isn’t on your approved list.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Benefit 5, Just‑in‑time access, not standing privilege&lt;/H2&gt;
&lt;P&gt;Standing privileged access is a well‑documented risk: with a permanent assignment, as &lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/privileged-identity-management/pim-configure" target="_blank" rel="noopener"&gt;Microsoft’s PIM documentation&lt;/A&gt; describes, “a user can always use the role without performing any actions.” Lighthouse supports a better pattern through &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/create-eligible-authorizations" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;eligible authorizations&lt;/STRONG&gt;&lt;/A&gt;, which use &lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/privileged-identity-management/pim-configure" target="_blank" rel="noopener"&gt;Microsoft Entra Privileged Identity Management&lt;/A&gt; so a provider user must &lt;EM&gt;activate&lt;/EM&gt; a privileged role just‑in‑time. Activation is time‑bound (between 30 minutes and 8 hours), can require MFA, and can require approval.&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;Just‑in‑time elevation flows through Microsoft Entra PIM. When approval is required, the approver is in the provider’s tenant, not yours. Your safeguards are MFA, the bounded activation window, review at onboarding, and full Activity‑Log visibility.&lt;/P&gt;
&lt;P&gt;Per the &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/create-eligible-authorizations" target="_blank" rel="noopener"&gt;eligible‑authorizations documentation&lt;/A&gt;, you can designate “up to 10 users or user groups in the managing tenant&lt;STRONG&gt; &lt;/STRONG&gt;who can approve or deny requests.” In other words, approval, when required, is granted by the provider’s own approvers, not by the customer. That’s a deliberate design choice, and your safeguards are real and layered: customers can “review all role assignments, including those in eligible authorizations, before the onboarding process,” you can require MFA on activation, the activation window is capped, and every elevation appears in your Activity Log. (Two practical notes: eligible authorizations need the provider to hold an Entra ID Governance/PIM license, and they aren’t supported in national clouds.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Benefit 6, Scale without sprawl&lt;/H2&gt;
&lt;P&gt;Because each provider is a separate delegation, the model scales cleanly: add a vendor by adding a delegation, remove one without touching the others, and govern them all from one place. And the management happens with the Azure tools you already use, cross‑tenant. The &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/cross-tenant-management-experience" target="_blank" rel="noopener"&gt;cross‑tenant management experience&lt;/A&gt; spans &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/manage-sentinel-workspaces" target="_blank" rel="noopener"&gt;Microsoft Sentinel&lt;/A&gt;, Microsoft Defender for Cloud, &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/policy-at-scale" target="_blank" rel="noopener"&gt;Azure Policy at scale&lt;/A&gt;, Azure Arc for hybrid servers and Kubernetes, and Azure Monitor, none of which require importing identities to make work.&lt;/P&gt;
&lt;P&gt;For managed security providers in particular, this is significant: a single SOC can manage Sentinel workspaces across many customer tenants while each customer’s data stays in their own tenant, and the provider’s queries and playbooks stay in theirs.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Govern delegations, not people&lt;/H2&gt;
&lt;P&gt;Step back and the deepest benefit comes into focus. The traditional model asks you to govern external people, accounts, and secrets, forever, inside your directory. Lighthouse changes the &lt;EM&gt;unit of governance&lt;/EM&gt; to a single&lt;STRONG&gt; &lt;/STRONG&gt;approved delegation: a managing tenant, a scope, a set of roles, and a revocation switch.&lt;/P&gt;
&lt;P&gt;That shift has four consequences worth internalizing:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Vendor turnover never becomes your identity churn.&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Your directory doesn’t accumulate vendor identities&lt;/STRONG&gt; as your vendor list grows.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Privilege escalation is blocked by the platform&lt;/STRONG&gt;, not policed by your team.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;The identity lifecycle, and the PIM/governance licensing for just‑in‑time access, sits with the provider&lt;/STRONG&gt;, the party that actually employs the people.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;“But we’ve already built all this”&lt;/H2&gt;
&lt;P&gt;If your team has invested in JML automation, recurring access reviews, Conditional Access exclusion lists, secret‑rotation pipelines, and entitlement management, that’s real and valuable work, and it works. The reframe is simple: those processes &lt;EM&gt;manage&lt;/EM&gt; a problem that Lighthouse &lt;EM&gt;removes&lt;/EM&gt; for Azure control‑plane partner access. You can keep spending effort, licensing, and residual risk to govern people you don’t employ, or you can retire that specific machinery for this use case. Keep your governance program for your own workforce; stop extending it to other companies’ staff.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Deploy it well: secure‑by‑design guardrails&lt;/H2&gt;
&lt;P&gt;Treat these as part of the design, not as caveats:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Require and verify provider MFA/PIM&lt;/STRONG&gt;, your Conditional Access doesn’t apply to their users, so make it a contractual obligation and ask for evidence.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Delegate least privilege&lt;/STRONG&gt;, use the narrowest built‑in roles, and avoid roles that can surface keys unless you truly need them.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Restrict approved managing tenants&lt;/STRONG&gt; with &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/view-manage-service-providers" target="_blank" rel="noopener"&gt;Azure Policy&lt;/A&gt; (audit or deny).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Export Activity Logs&lt;/STRONG&gt; beyond the 90‑day window to meet your retention requirements, and alert on critical operations.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Prefer JIT&lt;/STRONG&gt; (eligible authorizations) for any privileged role.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Mind the boundaries&lt;/STRONG&gt;, some scenarios (such as Microsoft Defender for Cloud) require whole‑subscription delegation, and Lighthouse can’t span a &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/overview" target="_blank" rel="noopener"&gt;national cloud and the public cloud&lt;/A&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Where Lighthouse stops, and what to use instead&lt;/H2&gt;
&lt;P&gt;Lighthouse is deliberately scoped to the Azure Resource Manager control plane. It does not grant Microsoft Entra ID directory roles (like Global Administrator) and it does not cover Microsoft 365 workloads such as Exchange, SharePoint, Teams, or Intune. When a provider genuinely needs to manage identities consider &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/entra/id-governance/tenant-governance/overview" target="_blank" rel="noopener"&gt;Microsoft Entra Tenant Governance&lt;/A&gt; as described in part 3, or for managing Microsoft 365 the companion product is&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/microsoft-365/lighthouse/m365-lighthouse-overview" target="_blank" rel="noopener"&gt;Microsoft 365 Lighthouse&lt;/A&gt;, a separate service with its own model.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Beyond MSPs: it’s not only for service providers&lt;/H2&gt;
&lt;P&gt;Two adjacent scenarios are worth knowing about:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Enterprises with multiple tenants.&lt;/STRONG&gt; If your own organization spans several Microsoft Entra tenants (through acquisitions, or separation of dev/test from production), you can use &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/enterprise" target="_blank" rel="noopener"&gt;Azure Lighthouse within the enterprise&lt;/A&gt; to manage resources across them from one place, the same delegation model, applied internally.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;CSP partners.&lt;/STRONG&gt; For partners transacting through the Cloud Solution Provider program, Lighthouse &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/cloud-solution-provider" target="_blank" rel="noopener"&gt;narrows the broad “Admin Agent” AOBO model&lt;/A&gt;. Instead of every Admin Agent having sweeping access to every customer, Lighthouse “helps improve security by limiting broad access” with granular, per‑customer, per‑role assignments.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Getting started: a low‑risk pilot&lt;/H2&gt;
&lt;P&gt;You don’t have to commit your production estate to prove the model. A sensible first step:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Delegate &lt;STRONG&gt;one non‑production subscription&lt;/STRONG&gt; to the provider’s tenant.&lt;/LI&gt;
&lt;LI&gt;Grant &lt;STRONG&gt;least‑privilege built‑in roles&lt;/STRONG&gt;, with &lt;STRONG&gt;JIT (eligible authorizations)&lt;/STRONG&gt; for anything privileged.&lt;/LI&gt;
&lt;LI&gt;Require &lt;STRONG&gt;MFA for your own admins, and require the provider to enforce MFA&lt;/STRONG&gt; on its delegated users (your Conditional Access doesn’t reach them).&lt;/LI&gt;
&lt;LI&gt;Turn on &lt;STRONG&gt;activity‑log alerts&lt;/STRONG&gt; and an &lt;STRONG&gt;Azure Policy&lt;/STRONG&gt; that restricts approved managing tenants.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Review after 30 days&lt;/STRONG&gt;, then expand.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The provider builds the &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/onboard-customer" target="_blank" rel="noopener"&gt;onboarding ARM template&lt;/A&gt; (Microsoft publishes ready‑to‑use &lt;A href="https://github.com/Azure/Azure-Lighthouse-samples" target="_blank" rel="noopener"&gt;samples on GitHub&lt;/A&gt;), and you deploy it with an Owner account. Because you can &lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/remove-delegation" target="_blank" rel="noopener"&gt;remove the delegation at any time&lt;/A&gt;, the downside is bounded and reversible, while the upside compounds with every vendor you onboard this way.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Summary&lt;/H2&gt;
&lt;P&gt;Letting a partner operate your Azure environment doesn’t have to mean adopting their people into your directory. With Azure Lighthouse, the provider brings their own governed identities, you grant a scoped and fully revocable delegation that you approve, every action is attributed in your own logs, the platform itself prevents privilege escalation, and the identity‑lifecycle burden stays with the company that employs the staff. You stop governing other people’s employees, and start governing one clean, auditable relationship.&lt;/P&gt;
&lt;P&gt;That’s a better deal for your security team, your auditors, and your partners alike.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Further reading&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Lighthouse&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/overview" target="_blank" rel="noopener"&gt;What is Azure Lighthouse?&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/architecture" target="_blank" rel="noopener"&gt;Azure Lighthouse architecture&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/cross-tenant-management-experience" target="_blank" rel="noopener"&gt;Cross‑tenant management experiences&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/tenants-users-roles" target="_blank" rel="noopener"&gt;Tenants, users, and roles&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/recommended-security-practices" target="_blank" rel="noopener"&gt;Recommended security practices&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/create-eligible-authorizations" target="_blank" rel="noopener"&gt;Create eligible authorizations (JIT/PIM)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/onboard-customer" target="_blank" rel="noopener"&gt;Onboard a customer&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/remove-delegation" target="_blank" rel="noopener"&gt;Remove a delegation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/view-service-provider-activity" target="_blank" rel="noopener"&gt;Monitor service‑provider activity&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/how-to/view-manage-service-providers" target="_blank" rel="noopener"&gt;View and manage service providers&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/enterprise" target="_blank" rel="noopener"&gt;Enterprise (multi‑tenant) scenarios&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/lighthouse/concepts/cloud-solution-provider" target="_blank" rel="noopener"&gt;Azure Lighthouse and the CSP program&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/Azure/Azure-Lighthouse-samples" target="_blank" rel="noopener"&gt;Azure Lighthouse samples (GitHub)&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Entra, RBAC &amp;amp; Zero Trust&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/external-id/what-is-b2b" target="_blank" rel="noopener"&gt;B2B collaboration overview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/external-id/user-properties" target="_blank" rel="noopener"&gt;Properties of a B2B guest user&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/architecture/secure-external-access-resources" target="_blank" rel="noopener"&gt;Plan secure external access&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/access-reviews-overview" target="_blank" rel="noopener"&gt;Access reviews&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/entitlement-management-overview" target="_blank" rel="noopener"&gt;Entitlement management&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/id-governance/privileged-identity-management/pim-configure" target="_blank" rel="noopener"&gt;Privileged Identity Management&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions" target="_blank" rel="noopener"&gt;Default user permissions&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/identity/users/clean-up-stale-guest-accounts" target="_blank" rel="noopener"&gt;Clean up stale guest accounts&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/identity-platform/security-best-practices-for-app-registration" target="_blank" rel="noopener"&gt;App‑registration security best practices&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/role-based-access-control/overview" target="_blank" rel="noopener"&gt;Azure RBAC overview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/security/fundamentals/identity-management-best-practices" target="_blank" rel="noopener"&gt;Azure identity management &amp;amp; Zero Trust&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 23 Jul 2026 15:40:21 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/azure-lighthouse-bring-your-partner-in-without-letting-their/ba-p/4529852</guid>
      <dc:creator>Preston_Romney</dc:creator>
      <dc:date>2026-07-23T15:40:21Z</dc:date>
    </item>
    <item>
      <title>Customer Offerings: Solution Optimization for GitHub Copilot</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/customer-offerings-solution-optimization-for-github-copilot/ba-p/4536886</link>
      <description>&lt;H1&gt;Introduction&lt;/H1&gt;
&lt;P&gt;As Microsoft Cloud Solution Architects, we are increasingly asked by engineering leaders, platform teams, finance stakeholders, and GitHub administrators how they can scale GitHub Copilot while keeping usage visible and costs predictable. The question is no longer simply how many licenses have been assigned. Agentic experiences, model choice, context size, reasoning level, and task complexity can all influence consumption.&lt;/P&gt;
&lt;P&gt;To address this challenge, Microsoft customers can engage their account team to request a Solution Optimization for GitHub Copilot engagement. The engagement is designed to help customers create visibility, establish practical cost guardrails, and improve the quality and efficiency of GitHub Copilot usage. The objective is not to minimize every token; it is to help each interaction produce useful outcomes with the right level of capability and control.&lt;/P&gt;
&lt;H1&gt;What changed with GitHub Copilot billing?&lt;/H1&gt;
&lt;P&gt;As of June 1, 2026, GitHub Copilot moved from premium request units to usage-based billing with GitHub AI Credits. When a user interacts with an AI-powered Copilot feature, the interaction can consume input tokens, output tokens, and cached tokens. The model used and the number of tokens processed determine the AI credit consumption, where one AI credit represents $0.01 USD.&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;Area&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;What customers should know&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;Included usage&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Copilot Business includes 1,900 AI credits per licensed user per month, while Copilot Enterprise includes 3,900. These credits are pooled at the billing entity level.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Promotional period&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;At the time of writing, existing Business and Enterprise customers receive higher promotional allowances through August 2026. Validate the current allowance before publishing or making financial decisions.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Included experiences&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Code completions and next edit suggestions remain included on paid plans and do not consume AI credits.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Metered experiences&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;AI-powered features such as Copilot Chat, Copilot CLI, Copilot cloud agent, Copilot Spaces, Spark, and supported third-party coding agents consume AI credits.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Additional consumption&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Some agentic experiences, including Copilot code review and cloud agent scenarios, can also consume GitHub Actions minutes in addition to AI credits.&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;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&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;Important: &lt;/STRONG&gt;&lt;BR /&gt;Pricing, allowances, supported models, and product behavior can change. The official GitHub documentation and the customer’s commercial agreement remain the source of truth.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 100.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H1&gt;Why optimization is more than cost reduction&lt;/H1&gt;
&lt;P&gt;Token consumption is only the visible part of the problem. A poorly scoped task, unnecessary context, or the wrong model can cause an agent to misunderstand the request, make excessive changes, or require repeated attempts. In that situation, reducing the price of an individual request does not solve the underlying quality problem.&lt;/P&gt;
&lt;P&gt;A better optimization strategy starts with agent quality. The right model, clear instructions, focused context, good repository guidance, and deterministic validation can help Copilot complete work in fewer attempts. Better outcomes and lower consumption frequently reinforce each other.&lt;/P&gt;
&lt;H1&gt;Introducing Solution Optimization for GitHub Copilot&lt;/H1&gt;
&lt;P&gt;The Solution Optimization for GitHub Copilot engagement provides customers with an opportunity to work with a Microsoft Cloud Solution Architect to review how GitHub Copilot is being adopted, consumed, governed, and measured. The final scope should be agreed with the Microsoft account team and may vary according to the customer’s licensing model, environment, maturity, and priorities.&lt;/P&gt;
&lt;P&gt;A typical engagement can focus on the following areas:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Usage visibility:&lt;/STRONG&gt; Establish a current-state view of adoption, AI credit consumption, model activity, license allocation, and the users or workflows driving demand.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Billing readiness:&lt;/STRONG&gt; Review exported usage data, compare scenarios, and identify where the move to usage-based billing changes planning assumptions.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Cost guardrails:&lt;/STRONG&gt; Design user-level, cost-center, organization, and enterprise budget controls that protect the shared pool without unnecessarily blocking productive users.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Agent quality and token optimization:&lt;/STRONG&gt; Identify improvements to model selection, prompt structure, context management, reasoning levels, repository instructions, and validation steps.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Operating model:&lt;/STRONG&gt; Define ownership, review cadence, escalation paths, reporting responsibilities, and a prioritized backlog of recommended actions.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;Potential customer outcomes&lt;/H1&gt;
&lt;P&gt;Depending on the agreed scope, the engagement can help the customer develop:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A baseline of GitHub Copilot adoption, AI credit consumption, and cost drivers.&lt;/LI&gt;
&lt;LI&gt;A view of heavy users, underused licenses, high-consumption models, and agentic workflows that need closer review.&lt;/LI&gt;
&lt;LI&gt;A budget and guardrail design that balances shared-pool flexibility with predictable financial control.&lt;/LI&gt;
&lt;LI&gt;Practical recommendations for improving agent quality and reducing avoidable retries or context overhead.&lt;/LI&gt;
&lt;LI&gt;A prioritized optimization plan with owners, next actions, and measurable follow-up points.&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;H1&gt;A practical engagement approach&lt;/H1&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt; Discover: &lt;/STRONG&gt;Review the customer’s goals, GitHub billing entity, Copilot plans, license assignment model, existing policies, cost centers, and available usage data.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Analyze: &lt;/STRONG&gt;Use native GitHub reporting and approved accelerators to examine adoption, AI credit usage, model activity, user patterns, and potential cost drivers.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Optimize: &lt;/STRONG&gt;Map the right model and reasoning level to each task, improve prompts and context, reduce unnecessary tool or repository context, preserve reusable cache, and plan before executing complex changes.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Govern: &lt;/STRONG&gt;Define user-level budgets, power-user overrides, cost-center or organization controls, enterprise spending limits, alerts, and ownership responsibilities.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Measure: &lt;/STRONG&gt;Document the baseline, agree on key indicators, and establish a regular review cycle to measure adoption, value, quality, and consumption over time.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H1&gt;Tools and accelerators&lt;/H1&gt;
&lt;H2&gt;GitHub AI usage, billing exports, and budget controls&lt;/H2&gt;
&lt;P&gt;GitHub’s native AI usage pages and billing reports should be the starting point for understanding consumption. They provide the information required to identify model usage, users, features, and cost patterns. Native budget controls can then be applied at the appropriate user, cost-center, organization, or enterprise scope.&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;img /&gt;
&lt;P class="lia-align-center"&gt;&lt;EM&gt;&lt;BR /&gt;GitHub AI usage dashboard, exported usage report, and budget controls&lt;/EM&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 100.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;GitHub Copilot Billing Preview&lt;/H2&gt;
&lt;P&gt;The &lt;A class="lia-external-url" href="https://github.com/github/copilot-billing-preview" target="_blank" rel="noopener"&gt;GitHub Copilot Billing Preview&lt;/A&gt; is an open-source web application for analyzing Copilot billing CSV reports, comparing request-based and usage-based billing signals, and exploring usage and cost trends by user, organization, model, product, and cost center. CSV processing occurs locally in the browser. The application is a preview and planning tool, not the billing source of record.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;table border="1" style="width: 93.0556%; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-align-center"&gt;&lt;EM&gt;&lt;BR /&gt;GitHub Copilot Billing Preview showing usage and cost trends&lt;/EM&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 100.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;Copilot Insights dashboard&lt;/H2&gt;
&lt;P&gt;The community-developed &lt;A class="lia-external-url" href="https://github.com/amgdy/github-copilot-insights-dashboard" target="_blank" rel="noopener"&gt;Copilot Insights dashboard&lt;/A&gt; provides centralized views of adoption, license allocation, AI credit consumption, model activity, productivity indicators, and team-level reporting. It can complement native GitHub data when a customer needs richer visualization or executive reporting. Customers should review the project’s security, deployment, support, and governance model before production use.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 92.1296%; height: 96.8px; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr style="height: 96.8px;"&gt;&lt;td style="height: 96.8px;"&gt;&lt;img /&gt;
&lt;P class="lia-align-center"&gt;&lt;EM&gt;Copilot Insights adoption, license, and AI credit views&lt;/EM&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 100.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H1&gt;Agent quality and token optimization principles&lt;/H1&gt;
&lt;P&gt;GitHub’s guidance emphasizes that the most sustainable way to reduce AI credit consumption is to improve the quality and efficiency of each interaction. The following principles provide a useful starting point:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Choose the right model for the task.&lt;/STRONG&gt; Reserve powerful reasoning models for complex architecture, debugging, and design work. Use mid-tier or lighter models for well-scoped implementation, documentation, formatting, and routine refactoring.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Provide clear guidance.&lt;/STRONG&gt; State the goal, constraints, expected output, relevant files, and validation criteria. Ambiguous prompts often lead to exploration and rework.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Keep context lean.&lt;/STRONG&gt; Supply the information needed for the task and avoid loading unrelated repositories, files, tools, or instructions into the context window.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Preserve reusable context.&lt;/STRONG&gt; Stable instructions and cached context can reduce repeated processing, provided they remain relevant and accurate.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Research and plan before implementation.&lt;/STRONG&gt; For complex work, separate discovery and planning from execution so the agent does not repeatedly rediscover the same information.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Add deterministic guardrails.&lt;/STRONG&gt; Tests, linting, build validation, explicit stop conditions, and session limits help prevent long-running or low-quality loops.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Measure value, not only consumption.&lt;/STRONG&gt; AI credit data should be considered together with adoption, developer experience, quality, delivery outcomes, and business impact.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;Overview video&lt;/H1&gt;
&lt;P&gt;The on-demand session &lt;A class="lia-external-url" href="https://www.youtube.com/live/LeALSSsbzHU" target="_blank" rel="noopener"&gt;GitHub Copilot - Token Optimization [AMER/EMEA]&lt;/A&gt; explains the relationship between token usage and agent quality. The session covers how large language models, agent harnesses, context windows, and available controls influence agent behavior, quality, consumption, and cost.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 96.2963%; height: 413.8px; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr style="height: 413.8px;"&gt;&lt;td style="height: 413.8px;"&gt;&lt;img /&gt;
&lt;P class="lia-align-center"&gt;&lt;A class="lia-external-url" href="https://www.youtube.com/live/LeALSSsbzHU?si=4RgxflItkQFAs9Qk" target="_blank" rel="noopener"&gt;https://www.youtube.com/live/LeALSSsbzHU?si=4RgxflItkQFAs9Qk&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 100.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H1&gt;Helpful inputs before the engagement&lt;/H1&gt;
&lt;P&gt;The following inputs can help the Microsoft team and customer make the best use of the engagement:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A GitHub enterprise or organization owner, billing manager, and relevant engineering or platform stakeholders.&lt;/LI&gt;
&lt;LI&gt;Current Copilot plan and license counts, including the billing entity and cost-center structure.&lt;/LI&gt;
&lt;LI&gt;A representative GitHub AI usage or billing export, handled according to the customer’s data policies.&lt;/LI&gt;
&lt;LI&gt;Existing budgets, spending policies, model policies, and reporting processes.&lt;/LI&gt;
&lt;LI&gt;Examples of high-volume agent sessions, code review workflows, or teams reporting unexpected consumption.&lt;/LI&gt;
&lt;LI&gt;The business outcomes the customer wants to improve, such as adoption, developer experience, delivery speed, quality, or cost predictability.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;Conclusion&lt;/H1&gt;
&lt;P&gt;GitHub Copilot usage-based billing changes the conversation from license assignment alone to the broader discipline of operating AI-assisted software development. Customers need visibility into how AI credits are consumed, controls that prevent unexpected spend, and engineering practices that help agents complete work accurately and efficiently.&lt;/P&gt;
&lt;P&gt;The Solution Optimization for GitHub Copilot engagement can help customers connect usage data to practical decisions, improve agent quality, establish appropriate financial guardrails, and create a repeatable approach for measuring and optimizing GitHub Copilot over time.&lt;/P&gt;
&lt;H1&gt;How do I book this engagement?&lt;/H1&gt;
&lt;P&gt;Microsoft Unified Support customers can contact their Customer Success Account Manager (CSAM) or Microsoft account team and ask about Solution Optimization for GitHub Copilot. The Microsoft team can confirm availability, eligibility, scope, prerequisites, and scheduling for the customer’s environment.&lt;/P&gt;
&lt;H1&gt;Resources&lt;/H1&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://docs.github.com/en/copilot/concepts/billing/usage-based-billing-for-organizations-and-enterprises" target="_blank" rel="noopener"&gt;GitHub Copilot usage-based billing for organizations and enterprises&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://docs.github.com/en/copilot/tutorials/budgets/getting-started-with-budget-controls" target="_blank" rel="noopener"&gt;Getting started with GitHub Copilot budget controls&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://docs.github.com/en/copilot/tutorials/optimize-ai-usage" target="_blank" rel="noopener"&gt;Optimizing AI usage to maximize efficiency and reduce cost&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://docs.github.com/en/copilot/reference/copilot-billing/models-and-pricing" target="_blank" rel="noopener"&gt;Models and pricing for GitHub Copilot&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/github/copilot-billing-preview" target="_blank" rel="noopener"&gt;GitHub Copilot Billing Preview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/amgdy/github-copilot-insights-dashboard" target="_blank" rel="noopener"&gt;Copilot Insights dashboard&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://www.youtube.com/watch?v=LeALSSsbzHU" target="_blank" rel="noopener"&gt;GitHub Copilot - Token Optimization [AMER/EMEA]&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;Disclaimer&lt;/H1&gt;
&lt;P&gt;&lt;EM&gt;Pricing, plan entitlements, AI credit allowances, supported models, and product behavior are subject to change. Always verify current information in the official GitHub documentation and the customer’s commercial agreement before making purchasing, budgeting, or technical decisions.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;The sample applications, dashboards, and scripts referenced in this article are provided AS IS without warranty of any kind and may not be supported under a Microsoft or GitHub standard support program unless explicitly stated. Customers are responsible for reviewing security, privacy, compliance, deployment, and operational requirements before using community or open-source solutions in production. This blog post was drafted with the assistance of generative AI and should be reviewed and approved by the author and relevant Microsoft stakeholders before publication.&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Jul 2026 13:41:27 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/customer-offerings-solution-optimization-for-github-copilot/ba-p/4536886</guid>
      <dc:creator>wernerrall</dc:creator>
      <dc:date>2026-07-15T13:41:27Z</dc:date>
    </item>
    <item>
      <title>Hunting Local AI Tools on macOS with Microsoft Defender for Endpoint</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/hunting-local-ai-tools-on-macos-with-microsoft-defender-for/ba-p/4536965</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;AI tooling is moving fast. Developers are running models locally, agents are spinning up local servers, and frameworks are adding new ways to extend the endpoint with skills, tools, and memory. That creates a useful productivity surface, but it also presents new challenges for security and governance teams.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A set of AI focused detection and protective Defender for Endpoint features are now in preview – &lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/defender-endpoint/discover-local-ai-agents" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Local AI Agent and MCP detection and inventory&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; as well as &lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/defender-xdr/security-for-ai/ai-agent-inventory?branch=main" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;AI Agent security posture&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;– both announced in detail here on the &lt;/SPAN&gt;&lt;A href="https://techcommunity.microsoft.com/blog/microsoftthreatprotectionblog/the-next-frontier-in-endpoint-security-securing-local-ai-agents-with-microsoft-d/4524651" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Microsoft Defender XDR blog&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; .&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Those capabilities are emerging, but defenders still need practical visibility now. The power of Microsoft’s XDR platform provides the capability to look at our endpoint telemetry and gather data from your existing environment today…. MDE already captures enough process, file, and network telemetry to start hunting for this activity with Advanced Hunting KQL.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN data-contrast="auto"&gt;Why Focus on macOS?&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Many organizations have developers that have adopted macOS clients as development machines.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Developers are a population that are positioned to take advantage of and use AI in the course of developing Frontier and next generation apps, agents, and capabilities. Which increases their attack surface while maintaining their attractiveness for targeted supply chain attacks.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The capability to detect and have visibility on&amp;nbsp; local AI tool usage, MCP server usage, malicious skill files, or AI-specific abuse patterns such as prompt injection are top of mind topics that I encounter routinely with my customers that I support.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This post walks through how I’d approach that problem: inventory first, then detect local AI servers, monitor skill/configuration files, and finally look for suspicious behavior that may indicate abuse. Keep in mind that though I am specifically addressing macOS in this post, the techniques can be shifted to Linux and other supported platforms through the power and flexibility of KQL and Advanced Hunting.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Why local AI on macOS matters&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Most endpoint detection content has historically focused on malware, persistence, credential theft, and command execution. Local AI agents blur those lines.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;An AI agent running on a developer workstation may legitimately:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;Spawn shell commands.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;Read source files and configuration files.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;Write scripts.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Start a local server.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Pull packages or model files.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="6" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Maintain memory or context in local markdown files.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;That same behavior can also become risky if the agent is compromised, misconfigured, or influenced by malicious instructions.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;For macOS, two local AI frameworks stand out in the telemetry patterns I reviewed:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;Ollama&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; — a local LLM runtime that exposes a local API, commonly on port 11434.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;OpenClaw&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; — an autonomous AI agent platform that uses a local gateway, commonly on port 18789.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Both leave process, filesystem, and network artifacts that MDE can see.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN data-contrast="auto"&gt;Start with inventory, not alerts&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Before turning anything into a detection rule, start by understanding where local AI tools already exist.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The first useful question is simple: &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Which macOS devices are running AI tooling?&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A reporting query against DeviceProcessEvents can identify known AI-related processes such as ollama, openclaw, node, npx, codex, or claude-code. The important detail is that macOS platform filtering needs to come from DeviceInfo, as it is not present in the other KQL tables we will be using.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A practical inventory pattern looks like this:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="caption"&gt;KQL — macOS AI tool inventory&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:200,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="kusto"&gt;DeviceInfo 
| where OSPlatform == "macOS" 
| distinct DeviceId 
| join DeviceProcessEvents on DeviceId 
| where Timestamp &amp;gt; ago(30d) 
| where ( 
    FileName in~ ( 
        "ollama", 
        "openclaw", 
        "ollama_llama_server", 
        "ollama-runner", 
        "mcp-server", 
        "codex", 
        "codex-cli", 
        "claude-code", 
        "npx", 
        "node", 
        "deno" 
    ) 
    or ProcessCommandLine has_any ( 
        "ollama", 
        "openclaw", 
        "ollama_llama_server", 
        "ollama-runner", 
        "mcp-server", 
        "codex", 
        "codex-cli", 
        "claude-code", 
        "npx", 
        "node", 
        "deno" 
    ) 
) 
| summarize 
    FirstSeen = min(Timestamp), 
    LastSeen = max(Timestamp), 
    ExecutionCount = count(), 
    DistinctUsers = dcount(AccountName) 
    by DeviceName, FileName, FolderPath 
| sort by LastSeen desc &lt;/LI-CODE&gt;
&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This gives you a baseline. Once you know what normal looks like, you can start asking more interesting questions:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;Which devices are running AI tools for the first time?&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="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;Which users are adopting them?&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="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="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Which tools are approved?&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="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="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Which tools appeared without a change request or expected rollout?&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;That baseline becomes the foundation for alerting.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-contrast="auto"&gt;Detect first-time AI tool usage&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A good first alert is “new AI tool on a macOS device.”&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The key is to compare recent activity against historical activity by both &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;device&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; and &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;tool name&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;. If a Mac has already run OpenClaw but suddenly starts running Ollama, that should still be considered a new tool introduction.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="caption"&gt;KQL — first-time AI tool usage on macOS&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:200,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="kusto"&gt;DeviceProcessEvents 
| where Timestamp &amp;gt; ago(1d) 
| where FileName in~ ("ollama", "openclaw") 
    or ProcessCommandLine has_any ("ollama", "openclaw", "openclaw.mjs") 
| join kind=leftanti ( 
    DeviceProcessEvents 
    | where Timestamp between (ago(30d)..ago(1d)) 
    | where FileName in~ ("ollama", "openclaw") 
        or ProcessCommandLine has_any ("ollama", "openclaw", "openclaw.mjs") 
    | distinct DeviceId, FileName, ProcessCommandLine 
) on DeviceId, FileName, ProcessCommandLine 
| summarize 
    FirstSeen = min(Timestamp), 
    LastSeen = max(Timestamp), 
    Count = count() 
    by DeviceName, FileName, ProcessCommandLine, AccountName
| sort by LastSeen desc &lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;335557856&amp;quot;:15921906}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This may be a good daily custom detection candidate, especially in environments where AI tooling needs to be explicitly approved.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-contrast="auto"&gt;Watch for local AI servers&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Local AI frameworks often expose services on localhost. That makes network telemetry useful even when the tool is only listening locally.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Known ports worth watching:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&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;SPAN data-contrast="auto"&gt;Tool&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Port&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="{}"&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;Ollama&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;11434&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Local HTTP API&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;OpenClaw&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;18789&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Local WebSocket gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A targeted detection for those ports is straightforward:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="caption"&gt;KQL — local AI server listener detection&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:200,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="kusto"&gt;DeviceInfo 
| where OSPlatform == "macOS" 
| distinct DeviceId 
|join DeviceNetworkEvents on DeviceId 
| where Timestamp &amp;gt; ago(1d) 
| where ActionType == "ListeningConnectionCreated" 
| where LocalPort in (18789, 11434) 
| project 
    Timestamp, 
    DeviceName, 
    LocalIP, 
    Port = LocalPort, 
    ProcessName = InitiatingProcessFileName, 
    CommandLine = InitiatingProcessCommandLine, 
    User = InitiatingProcessAccountName 
| sort by Timestamp desc &lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;For broader hunting, enumerate localhost listeners and exclude known system services. This helps find new or less common MCP servers before they show up in a curated indicator list.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-contrast="auto"&gt;Monitor AI skill and context files&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The next detection surface is the filesystem.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;AI agent frameworks increasingly use markdown-based instruction and context files. Examples include:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" 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;SKILL.md&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="4" 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;SKILLS.md&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="4" 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;SOUL.md&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="4" 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;MEMORY.md&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="4" 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="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;AGENTS.md&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;These files are powerful because they influence how the agent behaves. A malicious skill file can embed instructions, reference scripts, deliver payloads, or create persistence.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A weekly reporting query can monitor creation and modification of these files:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="caption"&gt;KQL — AI skill and context file monitoring&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:200,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="kusto"&gt;DeviceInfo 
| where OSPlatform == "macOS" 
| distinct DeviceId 
|join DeviceFileEvents on DeviceId  
| where Timestamp &amp;gt; ago(7d) 
| where ActionType in ("FileCreated", "FileModified") 
| where tolower(FileName) in ( 
    "skill.md", 
    "skills.md", 
    "soul.md", 
    "memory.md", 
    "agents.md" 
) 
| project 
    Timestamp, 
    DeviceName, 
    FileName, 
    FolderPath, 
    ActionType, &lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;For alerting, I would focus on suspicious creators: curl, wget, python, bash, scp, or browser-downloaded files with FileOriginUrl populated.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="kusto"&gt;DeviceInfo 
| where OSPlatform == "macOS" 
|distinct DeviceId 
|join DeviceFileEvents on DeviceId 
| where Timestamp &amp;gt; ago(1d) 
| where ActionType == "FileCreated" 
| where tolower(FileName) in ("skill.md", "skills.md", "soul.md") 
| where InitiatingProcessFileName in ("curl", "wget", "python", "python3","bash", "sh", "zsh", "nscurl", "scp") or isnotempty(FileOriginUrl) 
| project Timestamp, DeviceName, FileName, FolderPath,FileOriginUrl, FileSize, InitiatingProcessFileName, InitiatingProcessCommandLine &lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The signal is not “a skill file exists.” The signal is “a skill file appeared or modified in an unusual way.”&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-contrast="auto"&gt;Look for prompt injection side effects&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Prompt injection is hard to detect directly from endpoint telemetry because MDE does not see the prompt content inside encrypted sessions or local model interactions.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;But endpoint telemetry can show the downstream effects.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If an AI agent is manipulated into doing something unsafe, you may see it:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" 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;Spawn a shell.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="5" 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;Run osascript.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="5" 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;Invoke launchctl.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="5" 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;Access the macOS Keychain via security.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="5" 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="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Use curl, wget, or scp.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="5" 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="6" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Read sensitive paths such as .ssh, .env, or credential files.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="5" 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="7" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Make unexpected external network connections.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A useful behavioral detection is AI-related parent processes spawning sensitive child commands:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="caption"&gt;KQL — AI parent process spawning sensitive child commands&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:200,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="kusto"&gt;DeviceInfo 
| where OSPlatform == "macOS" 
| distinct DeviceId 
|join DeviceProcessEvents on DeviceId 
| where Timestamp &amp;gt; ago(1d) 
| where tolower(InitiatingProcessFileName) in ("ollama", "openclaw", "node", "npx", "deno") 
    or InitiatingProcessCommandLine has_any ("openclaw", "ollama", "openclaw.mjs") 
| where FileName in~ ( 
    "sh", 
    "bash", 
    "zsh", 
    "python", 
    "python3", 
    "curl", 
    "wget", 
    "scp", 
    "osascript", 
    "launchctl", 
    "security", 
    "dscl" 
) 
| project 
    Timestamp, 
    DeviceName, 
    ParentProcess = InitiatingProcessFileName, 
    ParentCmdLine = InitiatingProcessCommandLine, 
    ChildProcess = FileName, 
    ChildCmdLine = ProcessCommandLine, 
    User = AccountName 
| sort by Timestamp desc &lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This may not be suitable for use as an alert, as developers using AI coding assistants will legitimately run shell commands. The goal is not to block all shell execution. The goal is to identify suspicious combinations: encoded payloads, persistence commands, credential access, unexpected network transfer, or sensitive file access.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-contrast="auto"&gt;Don’t skip external network checks&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Local inference should mostly stay local. Ollama may contact external services for model downloads or registry activity, and agents may call approved cloud AI APIs depending on configuration. But unexpected public destinations from local AI processes are worth reviewing.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Start with a narrow allowlist and expand based on your environment:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="caption"&gt;KQL — external network connections from local AI processes&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:200,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="kusto"&gt;DeviceInfo 
| where OSPlatform == "macOS" 
| distinct DeviceId 
|join DeviceNetworkEvents on DeviceId 
| where Timestamp &amp;gt; ago(1d) 
| where ActionType in ("ConnectionSuccess", "ConnectionAttempt") 
| where InitiatingProcessFileName in~ ("ollama", "openclaw", "node") 
    or InitiatingProcessCommandLine has_any ("openclaw", "ollama") 
| where RemoteIPType == "Public" 
| where RemoteUrl !endswith "ollama.com" 
    and RemoteUrl !endswith "openclaw.ai" 
    and RemoteUrl !endswith "anthropic.com" 
    and RemoteUrl !endswith "openai.com" 
| project 
    Timestamp, 
    DeviceName, 
    RemoteIP, 
    RemoteUrl, 
    RemotePort, 
    ProcessName = InitiatingProcessFileName, 
    CommandLine = InitiatingProcessCommandLine 
| sort by Timestamp desc &lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;For alerting, consider thresholding on multiple distinct remote URLs from the same AI process over 24 hours. That helps separate one-off legitimate activity from suspicious multi-destination behavior.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-contrast="auto"&gt;KQL — OpenClaw LaunchAgent Plist Creation (Last 24 Hours)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This catches plist files appearing in ~/Library/LaunchAgents (or /Library/LaunchAgents) that reference OpenClaw by name or were created by an OpenClaw-related process. A matching result indicates that a persistent auto-start configuration has been installed for the AI gateway — which should be validated against approved deployment records.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="kusto"&gt;DeviceFileEvents 
| where Timestamp &amp;gt; ago(1d) 
| where ActionType in ("FileCreated", "FileModified") 
| where FolderPath has "LaunchAgents" and FileName endswith ".plist" 
| where FileName has "openclaw" 
    or InitiatingProcessFileName in~ ("openclaw", "node") 
    or InitiatingProcessCommandLine has "openclaw" 
| where DeviceId in ( 
    DeviceInfo | where OSPlatform == "macOS" | distinct DeviceId 
) 
| project 
    Timestamp, 
    DeviceName, 
    FileName, 
    FolderPath, 
    InitiatingProcessFileName, 
    InitiatingProcessCommandLine, 
    User = InitiatingProcessAccountName &lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-contrast="auto"&gt;Recommended deployment model&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;I would not deploy every query as an alert on day one. A better operational model is:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&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;SPAN data-contrast="auto"&gt;Use case&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Cadence&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Deployment&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;AI process inventory&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Weekly&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Reporting dashboard&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;First-time AI tool per device&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Daily&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Custom detection&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;Known AI server ports&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Daily&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Custom detection&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;OpenClaw LaunchAgent persistence&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Daily&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Custom detection&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;Skill/context file monitoring&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Weekly&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Reporting dashboard&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;Suspicious skill creation&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Daily&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Custom detection&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;AI process spawning system commands&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Daily&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Custom detection after tuning&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;AI external network connections&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Daily&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Custom detection after tuning&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;Broad localhost listener discovery&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Weekly&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Threat hunt&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The most reliable detections are inventory deltas, known listening ports, persistence artifacts, and suspicious skill creation. The highest-noise detections are behavioral heuristics, especially shell execution and external network activity.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-contrast="auto"&gt;Practical limitations&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A few MDE/macOS realities matter:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="6" 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;MDE does not decrypt TLS traffic.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="6" 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;DeviceProcessEvents does not include OSPlatform, so use DeviceInfo to scope macOS devices. These queries can be used as a base to expand hunting into other OS platforms with minimal modification of the KQL.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="6" 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;A positive SKILL.md hit still requires content review.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="6" 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;DeviceFileEvents shows file metadata, not file contents.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;That means these queries should be part of a broader defense-in-depth strategy, not the entire program.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Pair them with:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="7" 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;MDM and other controls restricting unsigned or unapproved AI apps- which may be problematic in a developer centric environment.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="7" 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;Network monitoring for known local AI ports.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="7" 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;Review processes for third-party skills.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="7" 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;Proxy/firewall correlation for suspicious external traffic.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="7" 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="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Version-controlled detection content so query changes can be audited and rolled back.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;SPAN data-contrast="auto"&gt;Final thought&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Local AI tools are becoming part of the endpoint reality. You can get a head start on understanding your org’s AI usage with KQL and Advanced hunting, especially on developer-heavy macOS fleets.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp; Agent visibility in the XDR portal is in flight and arriving soon.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;In the interim can start now with the telemetry we already have: processes, files, ports, and network connections. Build a baseline. Alert on meaningful change. Tune the noisy heuristics. Review skill files like executable content, because in practice that is what they can become.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Other artifacts that you can hunt for AI are the Defender for Cloud Apps leveraging the &lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/defender-cloud-apps/governance-discovery" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;governance capability for monitoring or sanctioning and unsanctioning apps&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; – which in this case -&amp;nbsp; monitor the AI related apps.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This is not necessarily about blocking AI usage by default. It is about giving defenders enough visibility to distinguish normal local AI adoption from risky or compromised behavior.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Addendum:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;I’ve created a Sentinel Workbook that incorporates these queries. Available at &lt;/SPAN&gt;&lt;A href="https://github.com/vboyev-MSFT/Microsoft-Sentinel-Workbooks" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;https://github.com/vboyev-MSFT/Microsoft-Sentinel-Workbooks&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 14 Jul 2026 16:42:42 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/hunting-local-ai-tools-on-macos-with-microsoft-defender-for/ba-p/4536965</guid>
      <dc:creator>Vytas_Boyev</dc:creator>
      <dc:date>2026-07-14T16:42:42Z</dc:date>
    </item>
    <item>
      <title>Check This Out! (CTO!) Guide (July 2026)</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/check-this-out-cto-guide-july-2026/ba-p/4536608</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/intunecustomersuccess/triage-vulnerabilities-with-the-vulnerability-remediation-agent-now-in-public-pr/4528646" target="_blank" rel="noopener noreferrer"&gt;Triage vulnerabilities with the Vulnerability Remediation Agent, now in public preview&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; 06/16/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has launched the Vulnerability Remediation Agent for Security Copilot in Microsoft Intune, now in public preview. This agent automates the identification, prioritization, and remediation of vulnerabilities on Intune-managed Windows devices using data from Microsoft Defender. It provides prioritized recommendations, Copilot-assisted impact analysis, and step-by-step remediation guidance, all within the Intune admin center. The agent operates securely under a dedicated agentic identity, ensuring clear governance and accountability. The streamlined workflow helps IT teams quickly address critical threats, reduce exposure, and track progress, supporting a more proactive, AI-driven security posture.&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/deploying-platform-sso-for-pre-macos-26-with-microsoft-intune-lessons-learned/4521368" target="_blank" rel="noopener noreferrer"&gt;Deploying Platform SSO for pre macOS 26 with Microsoft Intune: Lessons Learned&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/mikegriz/293153" target="_blank" rel="noopener noreferrer"&gt;MikeGriz&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/18/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article details Microsoft’s internal deployment of Platform Single Sign-On (PSSO) for pre-macOS 26 devices using Intune. It highlights the benefits of Secure Enclave-backed authentication—phishing-resistant MFA, device-bound tokens, and improved Conditional Access—while outlining setup steps, user experience, troubleshooting, and best practices. Key challenges included password policy mismatches and users dismissing registration prompts. The authors recommend starting with Secure Enclave, deploying during enrollment, aligning password policies, and piloting thoroughly. PSSO enables passwordless, hardware-backed SSO across Microsoft 365 apps, improving security and user experience for Mac fleets.&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/scale-on-prem-ai-with-foundry-local-on-azure-local-multi-node-inference-and-vllm/4516692" target="_blank" rel="noopener noreferrer"&gt;Scale On-Prem AI with Foundry Local on Azure Local: Multi-Node Inference and vLLM Support&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/liranlyabock/3433085" target="_blank" rel="noopener noreferrer"&gt;LiranLyabock&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/02/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article announces expanded capabilities for Foundry Local on Azure Local, including multi-node inference scheduling, vLLM runtime support, and a broader model catalog. These enhancements enable scalable, high-concurrency AI deployments fully on-premises—even in disconnected environments—using Kubernetes-native and OpenAI-compatible patterns. vLLM boosts throughput for large models and concurrent workloads, with automatic GPU tuning via vLLMplanner. Identity-based access is supported for multi-user scenarios. The platform now accommodates more models, including Mistral and Nemotron, and offers seamless integration and operation for regulated, sovereign, and edge 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/azurearcblog/unlock-on-prem-productivity-with-agentic-retrieval-in-foundry-local/4523646" target="_blank" rel="noopener noreferrer"&gt;Unlock On-Prem Productivity with Agentic Retrieval in Foundry 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/moran_assaf/3028283" target="_blank" rel="noopener noreferrer"&gt;moran_assaf&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/02/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article introduces Agentic Retrieval in Foundry Local, a new on-premises platform enabling advanced, context-rich AI interactions without relying on cloud connectivity. Powered by Azure Arc and Foundry models, it offers orchestration, governed knowledge management, and a production-ready chat UI for regulated, disconnected, and mission-critical environments. Key features include flexible deployment, auditable reasoning, multi-document synthesis, data sovereignty, and seamless user experience. This release supports Microsoft’s Adaptive Cloud vision, delivering resilient, intelligent GenAI solutions wherever customer data and operations reside, ensuring compliance and autonomy for enterprise and public sector users.&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/microsoft-365-copilot-on-mobile-what-staged-rollout-plans-can-miss/4524953" target="_blank" rel="noopener noreferrer"&gt;Microsoft 365 Copilot on mobile: What staged rollout plans can miss&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; 06/02/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article highlights that staged rollout plans for Microsoft 365 Copilot on mobile often miss how quickly real-world usage spreads. Mobile access accelerates adoption in “in-between” work moments, making usage less linear and more socially driven than planned. Desktop-focused governance and communication strategies may not apply to mobile-first behaviors, leading to early questions and confusion. IT teams should focus on rollout sequencing, setting user behavior expectations, governance/readiness, and clear communication to align planned deployment with actual adoption momentum. Early signals of mobile usage require proactive adjustments to maintain clarity and control.&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/faster-az-login-introducing---skip-subscription-discovery-and-targeted---subscri/4526116" target="_blank" rel="noopener noreferrer"&gt;Faster az login: introducing --skip-subscription-discovery and targeted --subscription&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; 06/07/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article introduces two new Azure CLI flags—`--skip-subscription-discovery` and targeted `--subscription`—which significantly speed up the `az login` process for users with many tenants and subscriptions. By skipping the post-authentication subscription enumeration, login times drop from minutes to seconds. These features, available from Azure CLI v2.86.0, are ideal for enterprise users or CI/CD scenarios needing quick access to specific subscriptions, but may not suit cases requiring access to multiple subscriptions or discovery.&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/network-security-perimeter-for-azure-service-bus--also-now-available-in-azure-go/4526413" target="_blank" rel="noopener noreferrer"&gt;Network security perimeter for Azure Service Bus &amp;amp; also now available in Azure Gov. Regions&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/shashankamalladi/1995095" target="_blank" rel="noopener noreferrer"&gt;shashankamalladi&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/08/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Network security perimeter support for Azure Service Bus is now generally available, including in Azure Government regions. This enables centralized security boundaries, perimeter-based governance, and secure PaaS-to-PaaS communication for messaging services. Customers can define explicit access controls, confine communications, and enhance audit/compliance visibility. The feature supports regulated and mission-critical workloads, ensuring consistent security across commercial and sovereign environments. Future plans include expanding onboarding to more PaaS services and improving access rule capabilities.&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/migrating-from-msee-hairpin-routing-to-avnm-mesh-for-large-scale-vnet-to-vnet-co/4529320" target="_blank" rel="noopener noreferrer"&gt;Migrating from MSEE Hairpin Routing to AVNM Mesh for Large-Scale VNet-to-VNet Connectivity&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/jay-li/1197988" target="_blank" rel="noopener noreferrer"&gt;Jay-Li&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/18/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article explains how large Azure deployments can migrate from MSEE hairpin routing to Azure Virtual Network Manager (AVNM) mesh for VNet-to-VNet connectivity. AVNM mesh enables direct, in-datacenter east-west traffic, eliminating MSEE as a single point of failure, reducing latency, and supporting up to 5,000 VNets and 20,000 Private Endpoints. Migration is incremental, reversible, and doesn’t disrupt existing network paths or security inspection, with AVNM centrally managing connectivity. The article details migration steps, scaling considerations, and validation processes, emphasizing operational simplicity and improved performance for large-scale Azure 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-sets-a-new-performance-record-for-llm-training-benchmark-at-extreme-scale/4523077" target="_blank" rel="noopener noreferrer"&gt;Azure Sets a New Performance Record for LLM Training Benchmark at Extreme Scale&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/azinheidarshenas/3326178" target="_blank" rel="noopener noreferrer"&gt;azinheidarshenas&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/16/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure set a new MLPerf Training benchmark record by training Llama 3.1 405B in just over seven minutes, scaling to 8,192 NVIDIA GB200 NVL72 GPUs across 128 racks. This was achieved through high operational efficiency, resilient networking, and topology-aware workload mapping. Azure’s Fairwater AI supercomputing infrastructure, with NVLink and MRC networking, minimized communication bottlenecks, enabling near-perfect scaling and stable step times. The result demonstrates Azure’s ability to handle massive, synchronous LLM training workloads efficiently, showcasing both hardware and system-level innovations for frontier-scale AI.&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/scaling-high-performance-cad-on-azure-virtual-desktop-with-nvidia-rtx-pro-6000/4528892" target="_blank" rel="noopener noreferrer"&gt;Scaling High-Performance CAD on Azure Virtual Desktop with NVIDIA RTX PRO 6000&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/sunita_az0708/1500754" target="_blank" rel="noopener noreferrer"&gt;Sunita_AZ0708&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/17/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The study validates Siemens NX 2506 running on Azure Virtual Desktop with NVIDIA RTX PRO 6000 GPU, supporting up to 30 concurrent users with stable graphics and consistent performance. Single-host setups efficiently consolidate users, while multi-host configurations boost responsiveness and performance, especially for GPU-intensive tasks at higher user densities. All certification workloads passed successfully, confirming reliable GPU sharing and scalability. Azure AVD with RTX PRO 6000 proves suitable for enterprise CAD deployments, enabling centralized infrastructure, high user density, reduced hardware dependency, and scalable engineering workflows for real-world tasks and assemblies.&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/from-prompt-to-provisioned-a-closer-look-at-the-azure-deployment-agent/4529935" target="_blank" rel="noopener noreferrer"&gt;From Prompt to Provisioned: A Closer Look at the Azure Deployment Agent&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/pierre_roman/140097" target="_blank" rel="noopener noreferrer"&gt;Pierre_Roman&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/23/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article introduces the Azure Deployment Agent, showcased at the Microsoft Azure Infra Summit 2026. This AI-driven tool helps IT professionals design, review, and provision Azure workloads by conversing in natural language, grounding plans in the Well-Architected Framework, and generating production-ready infrastructure code. It enables consistent, efficient deployments, supports both Terraform and Bicep, integrates with Copilot and popular IDEs, and is open-source for customization. Currently focused on new workloads, the agent aims to simplify cloud architecture and standardize operations, with ongoing improvements for existing estates.&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/deploy-an-azure-landing-zone-in-about-twelve-minutes-with-the-alz-iac-accelerato/4529937" target="_blank" rel="noopener noreferrer"&gt;Deploy an Azure Landing Zone in About Twelve Minutes with the ALZ IaC Accelerator&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/pierre_roman/140097" target="_blank" rel="noopener noreferrer"&gt;Pierre_Roman&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/24/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article highlights the Azure Landing Zone (ALZ) Infrastructure as Code Accelerator, showcased at the Microsoft Azure Infra Summit 2026. The ALZ Accelerator drastically reduces deployment time for secure, governed Azure platforms from weeks to about twelve minutes using Bicep or Terraform modules. It automates setup, supports multiple scenarios and options, aligns with the Well-Architected Framework, and is open source. The accelerator enables rapid, production-grade deployments, saving IT pros from manual configurations, and supports both GitHub and Azure DevOps pipelines, making cloud adoption faster and easier.&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/announcing-the-path-to-production-for-agents-webinar-series/4526560" target="_blank" rel="noopener noreferrer"&gt;Announcing the Path to Production for Agents Webinar Series&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/brauerblogs/1161065" target="_blank" rel="noopener noreferrer"&gt;brauerblogs&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/09/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The Path to Production for Agents Webinar Series, held July 27-28, helps organizations transition AI projects from prototypes to secure, scalable, production-ready systems. Sessions cover governance frameworks, production architecture, multi-agent design, operational best practices, security, observability, and optimization techniques. Attendees will learn practical, actionable patterns for deploying and managing AI agents at enterprise scale, with real-world examples and reference architectures. The series targets architects, engineers, and technical leaders seeking to operationalize AI, and offers follow-up engagements for Microsoft customers to implement these practices. Registration is available online.&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/revolutionizing-document-intelligence-scaling-construction-industries-with-ai-dr/4522393" target="_blank" rel="noopener noreferrer"&gt;Revolutionizing Document Intelligence: Scaling Construction Industries with AI-Driven Extraction&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/gauravbhardwaj/3490943" target="_blank" rel="noopener noreferrer"&gt;gauravbhardwaj&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/18/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article explores how Generative AI and Azure AI services are revolutionizing document extraction in the construction industry, addressing challenges like low productivity and high costs. By automating the analysis of design documents, AI increases accuracy, reduces manual labor, and improves coordination. The proposed hybrid architecture combines deterministic extraction with generative gap-filling for scalable, auditable workflows, resulting in cost savings, reduced errors, and faster project delivery. The solution emphasizes robust security and adaptability, offering a blueprint for AI-driven document intelligence across multiple sectors, including insurance, legal, healthcare, and finance.&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/fasttrackforazureblog/azure-availability-zone-mapping-and-vm-resilience-analysis-guidance-using-sre-az/4526548" target="_blank" rel="noopener noreferrer"&gt;Azure Availability Zone Mapping and VM Resilience Analysis Guidance using SRE.AZURE.COM Agent&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/fasttrackforazureblog" target="_blank" rel="noopener noreferrer"&gt;FastTrack for Azure&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/munieswar_avulapalli/1127849" target="_blank" rel="noopener noreferrer"&gt;munieswar_avulapalli&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/08/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article explains how SRE.Azure.com helps Azure engineers analyze Availability Zone mappings and VM resilience. Logical zone numbers (1, 2, 3) do not directly map to physical datacenter zones across subscriptions, impacting high availability and disaster recovery planning. The SRE agent enables discovery of zone mappings, VM distribution, resilience gaps, and generates reports. Understanding these mappings is essential for ensuring workload separation and compliance. The guidance includes suggested prompts for generating analysis and emphasizes that physical separation cannot be assumed based solely on logical zone numbers.&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-supports-greater-application-and-identity-functionality-wi/4521365" target="_blank" rel="noopener noreferrer"&gt;Azure Virtual Desktop supports greater application and identity functionality with latest updates&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/christian_montoya/305776" target="_blank" rel="noopener noreferrer"&gt;Christian_Montoya&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/02/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has announced new Azure Virtual Desktop updates, including general availability of FSLogix user profile management and Azure Role-based Access Control (RBAC) for external identities. SAML IdP can now be configured as domainless (public preview), easing integration for developers. External identity support is expanded to Android and macOS platforms in Azure public cloud and is generally available for US Government cloud. These enhancements streamline access for users outside organizations without needing new accounts and improve application and identity functionality. More technical details and resources are available on Microsoft’s Learn and Community pages.&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-deep-dive-into-azure-bastion-session-recording/4527583" target="_blank" rel="noopener noreferrer"&gt;A deep dive into Azure Bastion session recording&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/juquint/3370988" target="_blank" rel="noopener noreferrer"&gt;juquint&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/11/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Bastion Premium’s session recording feature captures RDP and SSH sessions for improved security, compliance, and forensic analysis. Recordings are stored in Azure Storage accounts, authenticated via either SAS URL or Managed Identity. While SAS URLs require manual token management and pose security risks, Managed Identity offers automated, secure authentication with no credentials to rotate, better RBAC integration, and improved compliance. The article details setup steps for both options and recommends Managed Identity for enterprise environments due to its simplicity and robust security. Session recordings are easily accessed within the Bastion resource’s Session recordings blade.&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/designing-cloud-landing-zones-by-traffic-flow-a-defence%E2%80%91in%E2%80%91depth-dmz%E2%80%91first-archi/4524280" target="_blank" rel="noopener noreferrer"&gt;Designing Cloud Landing Zones by Traffic Flow: A Defence‑in‑Depth, DMZ‑First Architecture&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/avanishyadav/3424257" target="_blank" rel="noopener noreferrer"&gt;AvanishYadav&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/03/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article advocates for a security-driven, DMZ-first cloud landing zone architecture in Microsoft Azure, emphasizing defense-in-depth and clear trust boundaries for traffic flows. It recommends multi-hub designs to separate Internet-facing (DMZ) and internal (Core) traffic inspection, improving security, scalability, and operational clarity. Scenarios using third-party firewalls, Azure Firewall, and Azure Virtual WAN illustrate approaches for inbound, outbound, East-West, and hybrid connectivity. The distributed hub-and-DMZ model reduces complexity, supports regulatory compliance, and enhances resiliency, making it essential for large, regulated, and multi-region enterprise workloads.&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/kubernetes-center-security--ltsout-of-support-version-insights-now-available/4524567" target="_blank" rel="noopener noreferrer"&gt;Kubernetes Center: Security &amp;amp; LTS/Out-of-Support Version Insights Now 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/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/harsha_nair/3151331" target="_blank" rel="noopener noreferrer"&gt;Harsha_Nair&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/01/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Kubernetes Center now offers enhanced security and cluster version support insights in the Azure portal. The new Security page provides an overview of vulnerabilities, runtime alerts, misconfigurations, and regulatory compliance, with actionable recommendations, requiring Microsoft Defender for Containers. The Cluster Version Support Status panel displays Kubernetes version support across clusters, highlighting those expiring soon, out-of-support, or eligible for Long Term Support (LTS), and enables easy remediation. These features help platform teams monitor security posture, prevent version drift, address misconfigurations, and report compliance efficiently across all AKS clusters.&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/ginkgo-bioworks-and-microsoft-discovery-bringing-agentic-ai-to-biological-discov/4526550" target="_blank" rel="noopener noreferrer"&gt;Ginkgo Bioworks and Microsoft Discovery: Bringing agentic AI to biological discovery&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/nihitpokhrel/3326079" target="_blank" rel="noopener noreferrer"&gt;NihitPokhrel&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/09/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft and Ginkgo Bioworks are collaborating to integrate Microsoft Discovery’s agentic AI platform with Ginkgo’s autonomous lab infrastructure, enabling researchers to design, execute, and analyze biological experiments seamlessly. This integration supports iterative, Design–Make–Test–Analyze workflows, streamlining experiment planning, execution, and data analysis. The partnership aims to accelerate biological discovery by increasing speed, scale, transparency, and reproducibility, reducing manual effort and connecting AI-driven reasoning directly to real-world lab validation. The approach is extensible, supporting broader scientific and engineering research needs.&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/new-ways-to-learn-and-demonstrate-skills/4519038" target="_blank" rel="noopener noreferrer"&gt;New ways to learn and demonstrate skills&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/cameronpercy/3490952" target="_blank" rel="noopener noreferrer"&gt;CameronPercy&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/02/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft announced new ways for developers to learn and demonstrate skills, including Microsoft Pro Badges—credentials that recognize real-world proficiency without separate tests, assessed via Verified Proficiency telemetry. Pro Badges launch in June 2026, starting with GitHub Copilot. Microsoft Applied Skills lab assessments will soon award Pro Badges. New co-authored AI skilling paths, beginning with Anthropic, are available in AI Skills Navigator. The Microsoft AI Skills Fest (June 8–12, 2026) offers practical sessions, a hackathon, and opportunities to earn certification vouchers, all aimed at advancing developers’ real-world capabilities.&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/deep-reasoning-agents-for-academic-research-the-right-tool-for-the-task/4501741" target="_blank" rel="noopener noreferrer"&gt;Deep-reasoning agents for academic research: The right tool for the task&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/darcyogden/3189326" target="_blank" rel="noopener noreferrer"&gt;DarcyOgden&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/23/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article discusses how deep-reasoning agents, like Researcher and Analyst in Microsoft 365 Copilot, enhance academic research by supporting source comparison, assumption testing, and data analysis. It compares these specialized tools to general-purpose AI, highlighting their alignment with academic standards. The Academic Researcher’s Guide to Deep-Reasoning Agents offers practical advice for selecting and using these tools effectively, managing limitations, and improving outputs. Researchers are encouraged to treat these AI agents as supportive tools, document their processes, and critically evaluate results to ensure rigorous research practices.&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-os-image-upgrades-for-vmss-flex/4523067" target="_blank" rel="noopener noreferrer"&gt;Public preview: Automatic OS Image Upgrades for VMSS Flex&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/bmahboob/3510938" target="_blank" rel="noopener noreferrer"&gt;BMahboob&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/01/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure has launched a public preview of Automatic OS Image Upgrades for Virtual Machine Scale Sets (VMSS) using Flexible Orchestration Mode. This feature streamlines OS updates across VMSS fleets, enhancing security, performance, and compliance while reducing manual effort and operational complexity. It provides consistent, fleet-wide orchestration with health-based safety measures. To use it, prerequisites include registering the feature, installing health extensions, and enabling the upgrade policy. Azure is now expanding onboarding and validating the experience across more workloads. Feedback is encouraged during the 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/azurecompute/announcing-preview-of-guest-rdma-for-azure-boost/4524589" target="_blank" rel="noopener noreferrer"&gt;Announcing Preview of Guest RDMA for Azure Boost&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/mengxiwu/3515724" target="_blank" rel="noopener noreferrer"&gt;MengxiWu&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/02/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has launched a preview of Guest RDMA in Azure’s UK South region, enabling high-throughput, ultra-low latency networking within guest virtual machines via Azure Boost. This allows VMs to bypass the traditional networking stack, reducing CPU usage and improving performance for AI, storage, database, and HPC workloads. Guest RDMA supports various VM series and Linux distributions, but is currently limited to direct VM-to-VM connections within a VNET. Broader network scenarios will be supported at general availability. Interested users can sign up for the preview and provide feedback to Microsoft.&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/right%E2%80%91sizing-azure-savings-plans-one-hour-at-a-time/4527507" target="_blank" rel="noopener noreferrer"&gt;Right‑sizing Azure Savings Plans, one hour at a time&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/dirk_brinkmann/2425227" target="_blank" rel="noopener noreferrer"&gt;Dirk_Brinkmann&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/11/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article explains how FinOps teams can use Azure's Benefit Recommendations API and a companion PowerShell script to extract hourly Pay-As-You-Go (PAYG) usage and alternative Savings Plan commitment levels. This approach enables more accurate, data-driven decisions instead of relying on a single recommended figure. The script produces analyst-friendly outputs for deeper analysis, allowing teams to visualize demand patterns, optimize savings, and minimize wastage. Full documentation and code are available on GitHub, encouraging users to improve their Azure savings strategies with transparent, defensible data.&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/introducing-github-pre-purchase-plans-a-simpler-way-to-plan-your-github-spend/4528855" target="_blank" rel="noopener noreferrer"&gt;Introducing GitHub Pre-Purchase Plans: A Simpler Way to Plan Your GitHub Spend&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/kyleikeda/849111" target="_blank" rel="noopener noreferrer"&gt;kyleikeda&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/17/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; GitHub Pre-Purchase Plans offer organizations a way to simplify and save on GitHub spending by committing upfront to a prepaid amount, which can be used across eligible services over 12 months. Larger commitments unlock higher discounts, up to 15%. This approach enables predictable budgeting for variable, usage-based costs like Copilot and AI Credits, and aligns GitHub billing with Azure subscriptions. Two plan types are available via Azure Reservations, providing flexibility for platform-wide or AI-specific usage. Pre-Purchase Plans do not replace existing purchasing methods but offer an additional budgeting option for commercial customers.&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/automating-daily-mde-compliance-monitoring-across-azure-vms/4528274" target="_blank" rel="noopener noreferrer"&gt;Automating Daily MDE Compliance Monitoring Across Azure VMs&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/sayanroy/791828" target="_blank" rel="noopener noreferrer"&gt;SayanRoy&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/15/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article details a Logic App solution for automating daily Microsoft Defender for Endpoint (MDE) compliance checks across Azure VMs. It addresses gaps where VMs may silently lose MDE coverage and provides automated owner notifications, daily IT summary reports with CSV attachments, and explicit handling of VMs lacking owner tags. The workflow queries all running Azure VMs, matches them to MDE device records, and sends compliance alerts. It requires a Logic App, managed identity, specific API permissions, and proper tagging. The approach streamlines compliance monitoring, reduces manual effort, and ensures prompt visibility of security gaps.&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/security-copilot-rbac-for-embedded-experience-in-unified-security-platform/4528833" target="_blank" rel="noopener noreferrer"&gt;Security Copilot RBAC for Embedded Experience in Unified Security Platform&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/santoshpargi/1255468" target="_blank" rel="noopener noreferrer"&gt;SantoshPargi&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/17/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article explains how Microsoft Security Copilot integrates AI-powered assistance directly within security platforms like Defender XDR and Sentinel, streamlining SOC operations. It details a three-layer Role-Based Access Control (RBAC) model—Security Copilot, Microsoft Entra, and service-specific roles—to ensure secure, least-privilege access. Copilot uses an On-Behalf-Of model, limiting data access to user permissions. Key use cases include summarization, guided response, script analysis, and reporting, all mapped to SOC processes. Proper RBAC alignment enables Copilot to accelerate investigations, enhance accuracy, and strengthen security while maintaining compliance and governance.&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/simpler-scalable-file-share-management-in-azure---now-generally-available/4523035" target="_blank" rel="noopener noreferrer"&gt;Simpler, scalable file share management in Azure - 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/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/vincentliu/3144831" target="_blank" rel="noopener noreferrer"&gt;VincentLiu&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/02/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft Azure has announced the general availability of a new, simplified file share management experience for premium SSD NFS file shares. This update enables independent provisioning, security, and billing for each file share, aligning management boundaries to workload needs. Key benefits include faster provisioning, enhanced scalability (up to 10,000 shares per region), share-level security and networking, improved cost tracking, and robust data protection with snapshots. The new experience supports Infrastructure-as-Code automation and is designed to reduce complexity, improve operational agility, and facilitate easier chargeback and resource management for Linux workloads in 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/azurestorageblog/from-file-data-to-ai%E2%80%91powered-knowledge-pipelines-using-azure-netapp-files-object/4528001" target="_blank" rel="noopener noreferrer"&gt;From File Data to AI‑Powered Knowledge Pipelines using Azure NetApp Files object REST API&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/geertvanteylingen/222853" target="_blank" rel="noopener noreferrer"&gt;GeertVanTeylingen&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/15/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article explains how Azure NetApp Files, OneLake, Azure AI Search, and Azure OpenAI combine to create an AI-powered knowledge pipeline for enterprise file data. This pipeline indexes and semantically searches files in place, enabling retrieval-augmented generation (RAG) for accurate, traceable, and grounded AI responses without moving or duplicating data. The architecture ensures compliance, scalability, and seamless integration with existing workflows, transforming file data into a living, queryable resource. It prepares enterprises for AI-driven user experiences, like Copilot, by delivering controlled, authoritative answers with source citations.&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/three-lessons-that-make-or-break-your-aws-to-azure-workload-migration/4520020" target="_blank" rel="noopener noreferrer"&gt;Three lessons that make or break your AWS-to-Azure workload migration&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; 06/19/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article highlights three crucial lessons for successful AWS-to-Azure workload migration: (1) Ensure ongoing stakeholder alignment through readiness assessments and clear approvals; (2) migrate workloads like-for-like before optimizing to avoid complexity and build confidence; and (3) use a blue-green cutover strategy to minimize risk and downtime, enabling easy rollback. Avoid common pitfalls like overengineering, misaligned stakeholders, and believing in instant cutovers. The article recommends Microsoft’s structured migration process and resources for further guidance.&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/generate-at-scale-code-insights-in-azure-migrate-using-github-copilot-modernize-/4529120" target="_blank" rel="noopener noreferrer"&gt;Generate at scale code insights in Azure Migrate using GitHub Copilot Modernize CLI (preview)&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/nikita_bajaj/1441355" target="_blank" rel="noopener noreferrer"&gt;Nikita_Bajaj&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/19/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Migrate now integrates with GitHub Copilot Modernize CLI (preview) to provide scalable code insights for .NET and Java web apps. This collaboration enables migration teams to assess multiple applications simultaneously, reduce analysis time, and make informed refactor-versus-replatform decisions. Users receive actionable code-fix recommendations and effort estimates, improving modernization planning and adherence to security guidelines. Setup involves downloading a configuration file from Azure Migrate, mapping repositories, and running the CLI. Code assessments are automatically reported back to Azure Migrate for centralized review and remediation guidance.&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/doh-is-now-generally-available-on-windows-dns-server/4526839" target="_blank" rel="noopener noreferrer"&gt;DoH is now generally available on 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; 06/11/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has announced general availability of DNS over HTTPS (DoH) for Windows DNS Server on Windows Server 2025, enabling encrypted and authenticated DNS client-to-server traffic. This feature enhances privacy, reduces spoofing risks, and supports Zero Trust architectures without requiring new resolver infrastructure. Organizations can deploy DoH alongside traditional DNS, preserving compatibility and allowing incremental adoption. Built on IETF standards, DoH helps meet regulatory requirements and strengthens DNS security. Future updates will support encrypted server-to-resolver traffic, advancing fully secure DNS resolution. The release is production-ready, reflecting feedback from real-world enterprise 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/networkingblog/announcing-windows-clat-public-preview/4506046" target="_blank" rel="noopener noreferrer"&gt;Announcing Windows CLAT Public Preview&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/jimalumbaugh/3197491" target="_blank" rel="noopener noreferrer"&gt;JimAlumbaugh&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/09/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has announced the public preview of Windows CLAT, a feature designed to aid IPv6 adoption by enabling IPv4/IPv6 translation. Available in Windows Insider Canary build #29599-1000 and rolling out to other channels, it now supports Group Policy Object (GPO) configuration. The preview is for evaluation only, not production use, and feedback is encouraged. Notable limitations include lack of support for DHCPv6 Prefix Delegation and Windows Subsystem for Linux, with known issues in Wi-Fi roaming and diagnostics. Participant feedback from the private preview has shaped this release.&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/azuregovernanceandmanagementblog/arm-mcp-server-a-catalog-of-24-pocs/4519069" target="_blank" rel="noopener noreferrer"&gt;ARM MCP Server: A Catalog of 24 PoCs&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/azuregovernanceandmanagementblog" target="_blank" rel="noopener noreferrer"&gt;Azure Governance and Management&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/varghesejoji/1393158" target="_blank" rel="noopener noreferrer"&gt;varghesejoji&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 06/19/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article introduces the Azure Resource Manager MCP Server, a remote Model Context Protocol server enabling AI agents to perform Azure infrastructure operations using six core tools. It details the arm-mcp-poc-catalog, a public repository of 24 proof-of-concept agents covering governance, FinOps, platform engineering, and SRE scenarios. The catalog emphasizes deterministic, safe agent operations, with most PoCs focused on read-only tasks. Write-capable agents are carefully gated. The Reliability Posture Scorecard is highlighted as a reference implementation. The article encourages teams to explore and adapt these PoCs for practical cloud management needs.&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, 13 Jul 2026 20:50:04 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/check-this-out-cto-guide-july-2026/ba-p/4536608</guid>
      <dc:creator>TysonPaul</dc:creator>
      <dc:date>2026-07-13T20:50:04Z</dc:date>
    </item>
    <item>
      <title>When Arc Goes Silent: Turning Visibility Gaps into SOC Action</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/when-arc-goes-silent-turning-visibility-gaps-into-soc-action/ba-p/4535711</link>
      <description>&lt;P&gt;Hybrid blind spots rarely announce themselves. They appear when an&amp;nbsp;&lt;STRONG&gt;Azure Arc-enabled server&lt;/STRONG&gt;&amp;nbsp;drops out, health signals go stale, and the SOC loses confidence in monitoring coverage. This playbook uses&amp;nbsp;&lt;STRONG&gt;Microsoft Sentinel&lt;/STRONG&gt;&amp;nbsp;and&amp;nbsp;&lt;STRONG&gt;Logic Apps&lt;/STRONG&gt; to turn that noise into one clear daily signal the team can act on.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The problem: too much noise, not enough assurance&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;One unhealthy server, one alert, one more email—at scale, that does not help the SOC. What leaders need is assurance: where visibility is weakening, which systems matter, and when action is needed.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The use case: daily assurance for hybrid monitoring coverage&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The use case is simple: identify Arc-enabled servers that stay unhealthy beyond a set threshold, such as&amp;nbsp;&lt;STRONG&gt;30 minutes&lt;/STRONG&gt;, and send one consolidated summary each day. For a&amp;nbsp;&lt;STRONG&gt;CISO&lt;/STRONG&gt;, this improves assurance. For a&amp;nbsp;&lt;STRONG&gt;SOC Manager&lt;/STRONG&gt;, it cuts noise and helps teams prioritize faster.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Solution overview: simple automation, stronger operational signal&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The workflow runs on a schedule, queries&amp;nbsp;&lt;STRONG&gt;Log Analytics&lt;/STRONG&gt;, filters Arc health issues, formats the results into a clean HTML report, and sends a single email through&amp;nbsp;&lt;STRONG&gt;Office 365 Outlook&lt;/STRONG&gt;. The outcome is not more telemetry—it is a better operational signal.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Prerequisites&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;One or more Azure Arc-enabled servers connected to Azure.&lt;/LI&gt;
&lt;LI&gt;Azure Monitor Agent installed and sending heartbeat data to a Log Analytics workspace.&lt;/LI&gt;
&lt;LI&gt;Microsoft Sentinel enabled on the target workspace if the playbook is being used as part of SOC operations.&lt;/LI&gt;
&lt;LI&gt;A Logic App with permissions to run the query and send email through Office 365 Outlook.&lt;/LI&gt;
&lt;LI&gt;A reviewed threshold, recipient list, and notification cadence aligned to your operating model.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How the workflow creates decision-ready visibility&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In practice, this becomes a daily control: check Arc health, isolate persistent issues, and route one concise summary to the right teams. That gives the SOC a cleaner way to review monitoring gaps before they become bigger operational problems.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Why this matters to a CISO and SOC Manager&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;For security leadership, this is about confidence. If Arc health degrades on systems tied to monitoring, policy, or data collection, the risk is not just technical—it is a visibility gap. This playbook helps surface that gap early and in a form teams can act on quickly.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Three practical scenarios where this playbook delivers value &lt;/STRONG&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt; Reduce SOC noise.&lt;/STRONG&gt;Replace scattered alerts with one daily summary.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Strengthen executive assurance.&lt;/STRONG&gt;Highlight persistent blind spots before they turn into escalations.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Improve team coordination.&lt;/STRONG&gt;Give security and infrastructure teams one shared view of the issue.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Sample KQL to identify persistent Arc monitoring gaps&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This sample query uses the Heartbeat table to identify Azure Arc-connected machines whose latest heartbeat is older than the defined threshold. It is a practical starting point and can be tuned further based on the environment and data collection design.&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;let ThresholdTime = 30;
AzureActivity
| where TimeGenerated &amp;gt; ago(1d)
| where CategoryValue == "ResourceHealth"
| where parse_json(Properties).currentHealthStatus == "Unavailable"
| where ActivityStatusValue == "Active"
| extend ResourceType = Properties_d.resourceProviderValue
| where ResourceType == "MICROSOFT.HYBRIDCOMPUTE"
| extend StartTime = TimeGenerated
| extend ServerName = Properties_d.resource
| join kind=leftouter (
AzureActivity
| where ActivityStatusValue == "Resolved"
| extend ResourceType = Properties_d.resourceProviderValue
| where ResourceType == "MICROSOFT.HYBRIDCOMPUTE"
| extend EndTime = TimeGenerated
) on CorrelationId
| extend Minutes_OfflineTillResolve = datetime_diff('minute', EndTime, StartTime)
| project ServerName, StartTime, EndTime, CorrelationId, Minutes_OfflineTillResolve, Level, ActivityStatusValue1, ResourceGroup, OperationNameValue, SubscriptionId, ResourceProvider, Type, CategoryValue, ActivityStatusValue
| extend TotalMinutes_Offline = datetime_diff('minute', now(), StartTime)
| where TotalMinutes_Offline &amp;gt;= ThresholdTime and ActivityStatusValue1 !has "Resolved"
| order by TotalMinutes_Offline desc
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Operational flow &lt;/STRONG&gt;&lt;STRONG&gt;&amp;nbsp;&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;&lt;STRONG&gt;ARM Template:&lt;/STRONG&gt; &lt;A href="https://github.com/Abhishek-Sharan/microsoft-security-operations-toolkit/blob/1e3aeff329e0d9b1d7caf2e4bfbc8476dfdb2ff2/Microsoft%20Sentinel/Automation/Playbooks/AzureArcServerMonitoring.playbook.json" target="_blank"&gt;microsoft-security-operations-toolkit/Microsoft Sentinel/Automation/Playbooks/AzureArcServerMonitoring.playbook.json at 1e3aeff329e0d9b1d7caf2e4bfbc8476dfdb2ff2 · Abhishek-Sharan/microsoft-security-operations-toolkit&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Customization Ideas:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Adjust the heartbeat threshold based on server criticality or business hours.&lt;/LI&gt;
&lt;LI&gt;Route summaries to different teams based on subscription, resource group, or server tags.&lt;/LI&gt;
&lt;LI&gt;Send notifications to Microsoft Teams in addition to, or instead of, email.&lt;/LI&gt;
&lt;LI&gt;Enrich the output with owner, business service, or environment metadata.&lt;/LI&gt;
&lt;LI&gt;Trigger incident creation only for high-priority or repeated visibility gaps.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Closing perspective&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The best SOC automations do not just collect signals—they create clarity. This playbook helps security teams spot Arc-related monitoring gaps early, reduce noise, and act with more confidence.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 10 Jul 2026 12:07:15 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/when-arc-goes-silent-turning-visibility-gaps-into-soc-action/ba-p/4535711</guid>
      <dc:creator>absharan</dc:creator>
      <dc:date>2026-07-10T12:07:15Z</dc:date>
    </item>
    <item>
      <title>Azure Database Security Newsletter - July 2026</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/azure-database-security-newsletter-july-2026/ba-p/4534477</link>
      <description>&lt;P&gt;AI agents are changing how applications interact with data, and database security needs to evolve with them. In this July 2026 edition of the Azure Database Platform Security Newsletter, we focus on what this shift means for identity, access, monitoring, and data protection, along with the latest security feature updates and practical resources to help teams strengthen their database security posture.&lt;/P&gt;
&lt;P&gt;AI agents are quickly becoming a new layer in how applications interact with data. Unlike traditional applications that follow predictable workflows, agents operate with more autonomy. They can generate queries dynamically, explore data, and act on behalf of users or systems.&lt;/P&gt;
&lt;P&gt;This shift changes the database security model.&lt;/P&gt;
&lt;P&gt;Agents do not just introduce new risks, they amplify existing ones. Over-privileged access can scale quickly, identity boundaries can become harder to trace, and dynamically generated queries can increase the risk of unintended data exposure or manipulation.&lt;/P&gt;
&lt;P&gt;In this new reality, every AI agent effectively becomes a database user with the ability to access, reason over, and act on sensitive data.&lt;/P&gt;
&lt;P&gt;Securing data in an agentic world requires a shift in mindset:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Identity-first security:&lt;/STRONG&gt; every agent should have a unique, traceable identity.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Least privilege by default:&lt;/STRONG&gt; access should be tightly scoped to the task at hand.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Data-aware protection:&lt;/STRONG&gt; only the data that is strictly required should be exposed.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Continuous monitoring:&lt;/STRONG&gt; assume issues can occur and detect them early.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Azure SQL provides a broad set of security capabilities, from authentication and fine-grained access control to encryption, masking, auditing, and threat detection. Together, these capabilities enable a defense-in-depth approach for agent-driven scenarios.&lt;/P&gt;
&lt;H1&gt;Feature highlights 💡&lt;/H1&gt;
&lt;H2&gt;Transparent Data Encryption in Azure SQL Database now supports AES keys (Preview)&lt;/H2&gt;
&lt;P&gt;Azure SQL Database now supports symmetric AES keys for Transparent Data Encryption (TDE) with customer-managed keys in public preview. This gives organizations another option for protecting data at rest while keeping control of key management.&lt;/P&gt;
&lt;P&gt;For teams thinking about long-term cryptographic resilience, this preview is especially relevant. TDE with customer-managed keys has traditionally used asymmetric RSA-based key protectors, while broader industry guidance is increasingly focused on preparing for a post-quantum cryptographic future and adopting cryptographic approaches that are better aligned with that transition.&lt;/P&gt;
&lt;P&gt;This update aligns with broader security guidance, including the NSA’s CNSA 2.0 recommendations, which emphasize modern cryptographic planning for a quantum-resistant future. For organizations building crypto agility into their platforms, AES support is a practical step in that direction.&lt;/P&gt;
&lt;P&gt;Learn more:&amp;nbsp;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" style="font-style: normal; font-weight: 400; background-color: rgb(255, 255, 255);" href="https://techcommunity.microsoft.com/blog/azuresqlblog/transparent-data-encryption-in-azure-sql-database-now-supports-aes-keys-public-p/4523240" data-lia-auto-title-active="0" data-lia-auto-title="Transparent data encryption in Azure SQL Database now supports AES keys (Public Preview)" target="_blank"&gt;Transparent data encryption in Azure SQL Database now supports AES keys (Public Preview)&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;General Availability: Microsoft Entra server principals for Azure SQL Database&lt;/H2&gt;
&lt;P&gt;Azure SQL Database has historically lacked support for server-level Microsoft Entra principals, requiring customers to manage identities separately in each database. This has been a migration blocker for enterprise customers coming from SQL Server, where centralized login and access management is standard.&lt;/P&gt;
&lt;P&gt;With this release, Azure SQL Database now supports server-level Microsoft Entra principals. Customers can create identities once, apply them consistently across databases, and operate with a unified, enterprise-grade identity and access model aligned with SQL Server and Azure SQL Managed Instance.&lt;/P&gt;
&lt;P&gt;Learn more: &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/azuresqlblog/generally-available-microsoft-entra-server-principals-and-server-roles-for-azure/4529326" target="_blank" rel="noopener" data-lia-auto-title="Generally Available: Microsoft Entra Server Principals and Server Roles for Azure SQL Database" data-lia-auto-title-active="0"&gt;Generally Available: Microsoft Entra Server Principals and Server Roles for Azure SQL Database&lt;/A&gt;.&lt;/P&gt;
&lt;H2&gt;Cross-tenant customer-managed keys for Azure Database for PostgreSQL Flexible Server (Preview)&lt;/H2&gt;
&lt;P&gt;This preview allows customers to encrypt data at rest using an Azure Key Vault key that resides in a different Microsoft Entra tenant than the database service. It is especially relevant for ISVs and customers in regulated industries that need clear separation of duties between key ownership and service operation.&lt;/P&gt;
&lt;P&gt;Customers retain control over key lifecycle management, including rotation and revocation, while authentication to the customer-owned Key Vault is handled through federated identity with Microsoft Entra ID for cross-tenant access.&lt;/P&gt;
&lt;P&gt;Learn more: &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/postgresql/security/security-data-encryption#cross-tenant-customer-managed-keys-cmk-preview" target="_blank" rel="noopener"&gt;Data Encryption - Azure Database for PostgreSQL | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Defender security posture assessments for Azure Database for PostgreSQL Flexible Server (GA)&lt;/H2&gt;
&lt;P&gt;Microsoft Defender Cloud Security Posture Management (CSPM) assessments for Azure Database for PostgreSQL Flexible Server are now available in general availability. This capability introduces built-in security assessments that continuously evaluate PostgreSQL server configurations against best practices, helping identify vulnerabilities and misconfigurations with actionable remediation guidance. A core set of assessments is available at launch, with additional coverage planned for future releases. Assessments are automatically available for PostgreSQL servers where Microsoft Defender for Cloud is already enabled, requiring no additional setup or costs.&lt;/P&gt;
&lt;P&gt;Learn more: &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/postgresql/security/security-defender-for-cloud#microsoft-defender-for-cloud-security-posture-management-cspm-assessments---preview" target="_blank" rel="noopener"&gt;Microsoft Defender for Cloud - Azure Database for PostgreSQL | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;H1&gt;Best Practices Corner ⚖️&lt;/H1&gt;
&lt;H2&gt;Move to secure-by-default configurations&lt;/H2&gt;
&lt;P&gt;Modern data platforms should reduce the need for manual hardening by enabling strong defaults out of the box.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Enforce encrypted connections by default.&lt;/LI&gt;
&lt;LI&gt;Disable insecure or legacy options where possible.&lt;/LI&gt;
&lt;LI&gt;Adopt platform defaults that align with compliance standards.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This shifts security from being configuration-driven to posture-driven, reducing the risk of misconfiguration, which remains one of the leading causes of data exposure.&lt;/P&gt;
&lt;H2&gt;Classify data first, protect it second&lt;/H2&gt;
&lt;P&gt;You cannot secure what you do not understand. Start by identifying where sensitive data lives, then use that understanding to apply the right protections.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Use &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/azure-sql/database/data-discovery-and-classification-overview?view=azuresql" target="_blank" rel="noopener"&gt;Data Discovery &amp;amp; Classification&lt;/A&gt; to identify sensitive data.&lt;/LI&gt;
&lt;LI&gt;Apply labels and information types consistently.&lt;/LI&gt;
&lt;LI&gt;Use those labels to drive masking, encryption, and governance policies.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Why this matters: Security controls are only effective when they are data-aware. Classification provides the foundation for applying the right protection to the right data, especially for regulated workloads.&lt;/P&gt;
&lt;H2&gt;Continuously assess and remediate vulnerabilities&lt;/H2&gt;
&lt;P&gt;Security posture is not static. It requires continuous validation and timely remediation.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Run &lt;A class="lia-external-url" href="https://docs.azure.cn/en-us/defender-for-cloud/sql-azure-vulnerability-assessment-overview" target="_blank" rel="noopener"&gt;Vulnerability Assessment&lt;/A&gt; scans regularly.&lt;/LI&gt;
&lt;LI&gt;Track deviations from baseline security policies.&lt;/LI&gt;
&lt;LI&gt;Act on remediation guidance proactively.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Why this matters: Even well-configured systems drift over time. Continuous assessment helps detect misconfigurations early and maintain a strong, compliant security posture without relying on manual reviews.&lt;/P&gt;
&lt;H1&gt;Blogs and Video Spotlight 🅱️&lt;/H1&gt;
&lt;P&gt;Over the last three months, we published several posts covering major releases, platform updates, and practical security guidance. These resources provide deeper technical context and implementation guidance for teams working across Azure SQL, Azure Database for PostgreSQL, Azure Database for MySQL, and Azure Cosmos DB.&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/azure-sql-is-retiring-the-%E2%80%9Cno-minimum-tls%E2%80%9D-mintls-none-configuration/4508933" target="_blank" rel="noopener" data-lia-auto-title="Azure SQL Retiring The No Minimum TLS Option" data-lia-auto-title-active="0"&gt;Azure SQL Retiring The No Minimum TLS Option&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/dynamic-data-masking-%E2%80%93-what-it-is-what-it-isn%E2%80%99t-and-how-to-use-it-effectively/4512877" target="_blank" rel="noopener" data-lia-auto-title="Dynamic Data Masking – What it is, What it isn’t, and How to use it effectively | Microsoft Community Hub" data-lia-auto-title-active="0"&gt;Dynamic Data Masking – What it is, What it isn’t, and How to use it effectively | Microsoft Community Hub&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/coreinfrastructureandsecurityblog/tls-certificate-pinning-and-best-practices-in-azure-open-source-relational-datab/4519531" target="_blank" rel="noopener" data-lia-auto-title="TLS Certificate Pinning in PostgreSQL and MySQL: Risks, Rotations, and Best Practices" data-lia-auto-title-active="0"&gt;TLS Certificate Pinning in PostgreSQL and MySQL: Risks, Rotations, and Best Practices&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://devblogs.microsoft.com/cosmosdb/im-starting-a-new-cosmos-db-app-what-security-do-i-actually-need/" target="_blank" rel="noopener"&gt;I'm Starting a New Cosmos DB App. What Security Do I Actually Need? - Azure Cosmos DB Blog&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/transparent-data-encryption-in-azure-sql-database-now-supports-aes-keys-public-p/4523240" target="_blank" rel="noopener" data-lia-auto-title="Transparent data encryption in Azure SQL Database now supports AES keys (Public Preview) | Microsoft Community Hub" data-lia-auto-title-active="0"&gt;Transparent data encryption in Azure SQL Database now supports AES keys (Public Preview) | Microsoft Community Hub&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://devblogs.microsoft.com/cosmosdb/which-azure-cosmos-db-role-does-my-app-need/" target="_blank" rel="noopener"&gt;Which Azure Cosmos DB Role Does My App Need? - Azure Cosmos DB Blog&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/generally-available-microsoft-entra-server-principals-and-server-roles-for-azure/4529326" target="_blank" rel="noopener" data-lia-auto-title="Generally Available: Microsoft Entra Server Principals and Server Roles for Azure SQL Database | Microsoft Community Hub" data-lia-auto-title-active="0"&gt;Generally Available: Microsoft Entra Server Principals and Server Roles for Azure SQL Database | Microsoft Community Hub&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 present at several community and industry events. If you are attending, come and say hello.&lt;/P&gt;
&lt;H2&gt;Where to meet us next&lt;/H2&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://espc.tech/conference/fabcon-europe-2026/" target="_blank" rel="noopener"&gt;Microsoft Fabric and SQL Conference, Barcelona, 28 September to 01 October 2026&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://datamindsconnect.be/" target="_blank" rel="noopener"&gt;dataMinds Connect, Mechelen, 12 to 14 October 2026&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://www.techorama.nl/" target="_blank" rel="noopener"&gt;Techorama, Utrecht, 26 to 28 October 2026&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Recent community highlights&lt;/H2&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://sqlbits.com/" target="_blank" rel="noopener"&gt;SQLBits, Wales, 22 to 25 April 2026&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://www.meetup.com/azure-sql-bangalore-user-group-meetup/events/314905858/" target="_blank" rel="noopener"&gt;Azure SQL Bangalore User Group Meeting, Bangalore, 13 June&lt;/A&gt;&lt;/P&gt;
&lt;H1&gt;Call to action 📢&lt;/H1&gt;
&lt;P&gt;As AI agents become a more active layer between applications, users, and data, now is the right time to review how they access your database platform. Treat every agent as a database user: confirm that each one has a unique identity, validate that permissions follow least privilege, and monitor agent-driven activity for unusual access patterns. A focused access review today can help reduce the risk of unintended data exposure as agentic workloads continue to grow.&lt;/P&gt;</description>
      <pubDate>Tue, 07 Jul 2026 11:47:08 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/azure-database-security-newsletter-july-2026/ba-p/4534477</guid>
      <dc:creator>PieterVanhove</dc:creator>
      <dc:date>2026-07-07T11:47:08Z</dc:date>
    </item>
    <item>
      <title>Turning Azure Policy Signals into Actionable Governance Insights</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/turning-azure-policy-signals-into-actionable-governance-insights/ba-p/4534126</link>
      <description>&lt;P&gt;&lt;EM&gt;Most Azure Policy reporting stops at compliance status. Useful, yes — but not enough. When a control fails, teams need to know what failed, why it matters, and who should act.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;That gap becomes obvious at enterprise scale. A failed policy evaluation is only a signal. By itself, it does not tell you whether the issue affects recovery, auditability, telemetry, or another control leaders care about.&lt;/P&gt;
&lt;P&gt;That is&lt;STRONG&gt; &lt;/STRONG&gt;why&lt;STRONG&gt; &lt;/STRONG&gt;joining &lt;EM&gt;PolicyStates&lt;/EM&gt; with &lt;EM&gt;PolicyAssignments&lt;/EM&gt; matters. One tells you the outcome. The other tells you which control was applied, where, and in what governance context. Together, they turn Azure Policy from a compliance feed into a control intelligence layer.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The problem:&amp;nbsp;&lt;EM&gt;PolicyStates&lt;/EM&gt;&amp;nbsp;alone tells you&amp;nbsp;&lt;EM&gt;what&lt;/EM&gt;&amp;nbsp;is non-compliant, but not always&amp;nbsp;&lt;EM&gt;why it matters&lt;/EM&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Microsoft’s sample ARG queries quickly show which resources are non-compliant. Helpful, but still incomplete. They show the result, not the business meaning.&lt;/P&gt;
&lt;P&gt;At enterprise scale, that distinction matters. A storage account without blob soft delete is a &lt;STRONG&gt;recovery risk&lt;/STRONG&gt;. Missing Azure Activity logs creates an&lt;STRONG&gt; audit gap&lt;/STRONG&gt;. A virtual machine without Azure Monitor Agent creates a &lt;STRONG&gt;telemetry blind spot&lt;/STRONG&gt;. Azure Policy shows the state. The join to &lt;EM&gt;PolicyAssignments&lt;/EM&gt; explains why it matters.&lt;/P&gt;
&lt;P&gt;There is also a technical reason to care about assignments. The same &lt;EM&gt;PolicyDefinitionId&lt;/EM&gt; can appear in &lt;STRONG&gt;multiple assignments &lt;/STRONG&gt;across&lt;STRONG&gt; different scopes&lt;/STRONG&gt;. That makes &lt;EM&gt;PolicyAssignmentId&lt;/EM&gt; the operational key.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How&amp;nbsp;Azure Policy compliance data flows&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Azure Policy evaluates resources against JSON-based rules. Those rules are packaged as policy definitions and can be grouped into initiatives. Once assigned to a scope, the policy engine evaluates matching resources during creation, updates, assignment changes, and regular compliance cycles. The results are exposed through &lt;EM&gt;PolicyStates&lt;/EM&gt; and &lt;EM&gt;PolicyEvents&lt;/EM&gt;, and can also be queried through Azure Resource Graph.&lt;/P&gt;
&lt;P&gt;This is the architecture flow for turning the ARG query into a scheduled governance report through Logic App:&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The key shift is operational. A Logic App can run the ARG query on a schedule, format the results, and email them to stakeholders. That turns a manual check into a repeatable governance report.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The analytical pattern: enrich compliance with assignment context&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The analytical flow is straightforward:&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Configure a &lt;EM&gt;Recurrence&lt;/EM&gt; trigger in Logic App so the report runs on the schedule you need.&lt;/LI&gt;
&lt;LI&gt;Use an HTTP action with managed identity to run the ARG query against &lt;EM&gt;PolicyStates&lt;/EM&gt; and join it to &lt;EM&gt;PolicyAssignments&lt;/EM&gt;.&lt;/LI&gt;
&lt;LI&gt;Filter on the control assignments that matter to your organisation and shape the response into a compact HTML table or CSV.&lt;/LI&gt;
&lt;LI&gt;Send the output by email to governance, engineering, or audit stakeholders so the insight reaches people without requiring them to open the portal.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;In practice, the query starts with non-compliant resources and enriches them with assignment details such as the &lt;STRONG&gt;assignment name&lt;/STRONG&gt; and optional&lt;STRONG&gt; metadata&lt;/STRONG&gt; like owner. That is the shift from raw signal to governance insight.&lt;/P&gt;
&lt;P&gt;A simple implementation pattern is: schedule the Logic App, run the ARG query with managed identity, format the output, and send the report. HTML works well for leadership emails; CSV is better for downstream analysis.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ARM template for the Logic App&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;If you want to deploy this pattern instead of building it step by step, I have also published an&amp;nbsp;&lt;A href="https://github.com/Abhishek-Sharan/Microsoft-Unified-Security-Operations-Platform/blob/main/Microsoft%20Sentinel/LogicApp%20to%20track%20policy%20compliance.json" target="_blank"&gt;ARM template for the Logic App&lt;/A&gt; in my GitHub repository. The template is intended to help you stand up the scheduled policy compliance workflow faster and then customise the query, email recipients, and formatting for your own environment.&lt;/P&gt;
&lt;P&gt;This makes the architecture in this post directly reusable: schedule the Logic App, run the ARG query, shape the output, and send a control-focused report without having to assemble the workflow from scratch. See the repository for the template and related Microsoft Sentinel automation content.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Reference ARG query&lt;/STRONG&gt;&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;policyResources
| where type =~ 'microsoft.policyinsights/policystates'
| where properties.complianceState == 'NonCompliant'
| extend ResourceId = tostring(properties.resourceId),
         PolicyAssignmentId = tolower(trim(@" ", tostring(properties.policyAssignmentId))),
         SubscriptionId = tostring(subscriptionId),
         LastEvaluated = todatetime(properties.timestamp)
| extend ResourceName = tostring(extract(@"[^/]+$", 0, ResourceId))
| extend ResourceProvider = tostring(extract(@"providers/([^/]+)/", 1, ResourceId))
| extend ResourceCategory = case(
    ResourceId has "Microsoft.Compute/virtualMachines", "VM",
    ResourceId has "Microsoft.Storage/storageAccounts", "Storage",
    ResourceId has "Microsoft.Network/virtualNetworks", "Network",
    ResourceId has "Microsoft.Sql/servers", "SQL",
    ResourceId has "Microsoft.KeyVault/vaults", "Key Vault",
    ResourceProvider =~ "Microsoft.Compute", "Compute",
    ResourceProvider =~ "Microsoft.Storage", "Storage",
    ResourceProvider =~ "Microsoft.Network", "Network",
    ResourceProvider =~ "Microsoft.KeyVault", "Key Vault",
    "Other"
)
| project ResourceId, ResourceName, ResourceCategory, SubscriptionId, PolicyAssignmentId, LastEvaluated
| join kind=inner (
    policyResources
    | where type =~ 'microsoft.authorization/policyassignments'
    | extend AssignmentName = tostring(properties.displayName),
             AssignmentId = tolower(trim(@" ", tostring(id))),
             Scope = tostring(properties.scope),
             PolicyOwner = tostring(properties.metadata.owner)
    | where AssignmentName has "CSTM--Configure blob soft delete on a storage account"
        or AssignmentName has "Configure Azure Activity logs to stream to specified Log Analytics workspace"
        or AssignmentName has "Audit diagnostic setting for selected resource types"
    | project AssignmentId, AssignmentName, Scope, PolicyOwner
) on $left.PolicyAssignmentId == $right.AssignmentId
| project SubscriptionId,
          ResourceId,
          ResourceName,
          ResourceCategory,
          AssignmentName,
          AssignmentId,
          Scope,
          ['LastEvaluated[UTC]'] = LastEvaluated
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What this query is doing — in plain English&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;This query finds &lt;STRONG&gt;Azure resources that are currently NonCompliant with Azure Policies&lt;/STRONG&gt; by reading data from the PolicyStates table in Azure Resource Graph.&lt;/LI&gt;
&lt;LI&gt;It extracts useful details such as &lt;STRONG&gt;Resource ID, Resource Name, Resource Type/Category, Subscription ID, Policy Assignment ID, and the last evaluation timestamp&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Resources are categorized into groups like &lt;STRONG&gt;VM, Storage, Network, SQL, and Key Vault&lt;/STRONG&gt; based on their resource type/provider.&lt;/LI&gt;
&lt;LI&gt;It then &lt;STRONG&gt;joins the non-compliant resources with specific policy assignments&lt;/STRONG&gt; (three named policies) to show which policy caused the non-compliance, along with the policy scope, and evaluation time.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Why CISOs and governance leaders should care&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;For a CISO, this is not about counting failed evaluations. It is about knowing whether critical controls are drifting, where the risk sits, and who owns the response.&lt;/P&gt;
&lt;P&gt;Three use cases stand out:&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Audit readiness:&lt;/STRONG&gt; show control-focused evidence instead of a flat list of resource IDs.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Ownership:&lt;/STRONG&gt; enrich assignments with metadata so findings can be routed to the right team faster.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Prioritization:&lt;/STRONG&gt; focus on the controls &lt;STRONG&gt;that matter now&lt;/STRONG&gt;, not every non-compliant resource in the estate.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Operational benefits: scalable, repeatable, and security-friendly&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;From an engineering perspective, this pattern is attractive because it is &lt;STRONG&gt;repeatable&lt;/STRONG&gt;, &lt;STRONG&gt;scalable&lt;/STRONG&gt;, and aligned to the native Azure Policy data model.&lt;/P&gt;
&lt;P&gt;It also fits naturally into operational tooling. The enriched output can feed workbooks, dashboards, Sentinel content, and alerting workflows.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Closing thought&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;At small scale, Azure Policy can be reviewed in the portal. At enterprise scale, that quickly becomes noise. The better question is not &lt;EM&gt;Which resources are non-compliant?&lt;/EM&gt; It is &lt;EM&gt;Which important&lt;/EM&gt;&lt;EM&gt; controls are failing, where, and who should act?&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;That is what makes this pattern powerful: it turns Azure Policy from a compliance dashboard into a &lt;STRONG&gt;control intelligence layer&lt;/STRONG&gt; that works for both engineers and executives.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 06 Jul 2026 12:40:50 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/turning-azure-policy-signals-into-actionable-governance-insights/ba-p/4534126</guid>
      <dc:creator>absharan</dc:creator>
      <dc:date>2026-07-06T12:40:50Z</dc:date>
    </item>
    <item>
      <title>Windows 365 Boot</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/windows-365-boot/ba-p/4533696</link>
      <description>&lt;P&gt;Hi folks – Mike Hildebrand here!&amp;nbsp; It’s the July 4&lt;SUP&gt;th&lt;/SUP&gt; holiday here in the good 'ol USA and happens to also be our country’s 250&lt;SUP&gt;th&lt;/SUP&gt; birthday … and where I live, that means it’s probably hot.&amp;nbsp; VERY hot.&amp;nbsp; So, I’m taking some time to enjoy the A/C and type up a ‘cool’ post about a ‘cool’ solution.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the land of Windows 365, there are a couple of physical endpoint connectivity options – the Windows App or browser from any device and thin-client or other purpose-built devices, like our own Link (and&amp;nbsp;&lt;A href="https://www.asus.com/displays-desktops/nucs/nuc-mini-pcs/asus-nuc-16-for-windows-365/" target="_blank" rel="noopener"&gt;one soon coming from Asus&lt;/A&gt;).&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We also have another option called &lt;A href="https://learn.microsoft.com/en-us/windows-365/enterprise/windows-365-boot-overview" target="_blank" rel="noopener"&gt;Windows 365 Boot&lt;/A&gt;.&amp;nbsp; In this nifty little situation, we take a full-throated Windows 11 device and apply policy from Intune to transform the shell and other settings into a Link-like experience.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;NOTE: For a long time, the Boot configuration process was only configurable via a ‘black-box’ guided flow in the Intune portal – and that works just fine.&amp;nbsp; However, after an update of &lt;A href="https://learn.microsoft.com/en-us/windows-365/enterprise/windows-365-boot-guide#manually-set-up-windows-365-boot-without-the-intune-guided-scenario" target="_blank" rel="noopener"&gt;docs&lt;/A&gt; and the Intune Settings Catalog, the W365 Boot configurations can now be hand-carved like all of your other Intune configuration policies.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Recently, I was part of a customer conversation where they had a substantial quantity of Flex Dedicated CPCs used by rotating call center staff and accessed from a fleet of Windows 11 PCs deployed at hot-desk stations.&amp;nbsp; They wondered about a model to simplify and streamline access directly to the CPCs, bypassing the local Windows OS, which wasn’t used/needed and sometimes caused confusion.&lt;/P&gt;
&lt;P&gt;The physical devices were still ‘current’ and had a lot of life left (i.e. warranty coverage, driver and firmware support, parts availability, etc.) - and due to the price-jumps of new devices, it made ‘dollars and sense’ ( 🙂 ) to leverage that investment and re-purpose them.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;They also wondered if they could use Autopilot in ‘Self-deploy’ mode to further automate the deployment process for these endpoints.&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;“Let’s try it out”&lt;/H1&gt;
&lt;P&gt;I proposed a rapid, off-the-cuff ‘right now’ PoC to try out the W365 Boot scenario in their environment and they were up for it.&amp;nbsp; These days, it’s common and easy to perform carefully controlled ‘production pilots’ to more accurately validate the proposed experience.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;NOTE: Since the customer already had Entra, Intune, and modern management in steady-state operations for quite some time, we were able to make this idea very real, very fast.&lt;/P&gt;
&lt;P&gt;We reset a few of the test PCs they use for their hot-desks and &lt;A href="https://learn.microsoft.com/en-us/autopilot/add-devices#directly-upload-the-hardware-hash-to-an-mdm-service" target="_blank" rel="noopener"&gt;uploaded them&lt;/A&gt; into Autopilot via the Get-WindowsAutopilotInfo PowerShell script and the -online switch.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Entra – Create a Device Group&lt;/H1&gt;
&lt;P&gt;We created a device group in Entra for the PoC Boot devices and added the Autopilot-uploaded test devices into it as members&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;This group was used by Intune to target several different elements of the PoC:&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;o&amp;nbsp;&amp;nbsp; An Autopilot Self-deployment Profile - for an almost zero-touch rollout&lt;/P&gt;
&lt;P&gt;o&amp;nbsp;&amp;nbsp; An Enrollment Status Page (ESP) profile - to prevent access to the Boot device until the Windows App is installed&lt;/P&gt;
&lt;P&gt;o&amp;nbsp;&amp;nbsp; The Windows App – used by the Boot device to connect to Cloud PCs&lt;/P&gt;
&lt;P&gt;o&amp;nbsp;&amp;nbsp; A W365 Boot Configuration Profile to transform the Windows 11 OS into a W365 Boot device&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Intune - Autopilot Self-deploy Profile&lt;/H1&gt;
&lt;P&gt;We created an Autopilot ‘self-deployment’ profile via Intune, to automatically enroll the physical endpoints at the call center desks.&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Autopilot self-deploy requires very little interaction at the endpoint - plug in power, connect to network and turn it on.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;o&amp;nbsp;&amp;nbsp; There are some specific URLs and other requirements for Autopilot Self-deploy devices so be sure to check this (i.e. you can’t use Hyper-V VMs)&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/autopilot/self-deploying" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/autopilot/self-deploying&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Intune – Enrollment Status Page&lt;/H1&gt;
&lt;P class="lia-clear-both"&gt;We created an ESP targeted at the device group to block access to the Boot devices until the Windows App is installed.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Intune – Windows App&lt;/H1&gt;
&lt;P&gt;They already deploy the Windows App to ‘All Devices,’ so this step was easy 😊&lt;/P&gt;
&lt;P class="lia-clear-both"&gt;The key thing here is make sure it installs in the ‘System’ context:&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Intune - Boot Device Configuration Policy&lt;/H1&gt;
&lt;P&gt;We created a very simple Configuration Policy (two settings from the Settings Catalog – that’s it) in Intune to transform these self-deployed endpoints into “Shared PC Mode” Windows 365 Boot devices.&amp;nbsp; These have minimal ‘end user’ configurations/apps because they boot to the W365 purpose-specific ‘cloud shell’ – which allows the user to sign in to the Boot device and be directly SSO’d into their CPC.&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;NOTE: The ‘Boot to Cloud PC Enhanced’ &lt;A href="https://learn.microsoft.com/en-us/windows/client-management/mdm/clouddesktop-csp#boottocloudpcenhanced-technical-reference" target="_blank" rel="noopener"&gt;setting includes many other settings/behaviors&lt;/A&gt; but they’re all bundled up which makes it super easy to deploy this&lt;/LI&gt;
&lt;LI&gt;NOTE: If the ‘Personalization &amp;gt; Company Name’ setting isn’t used, you’ll see ‘Cloud PC’ at the sign in screen&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Self-deploy…oh the joy!&lt;/H1&gt;
&lt;P&gt;Plug it in; turn it on … Autopilot Self-deploy OOBE screen, followed by a brief ESP&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;NOTE: As part of the Autopilot deployment profile, a device naming template was applied and the devices were renamed; this was reflected in various portals/UIs&lt;/P&gt;
&lt;P&gt;Before:&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-clear-both"&gt;After:&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;&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;H1&gt;&lt;EM&gt;“So, what does it look like for the users?”&lt;/EM&gt;&lt;/H1&gt;
&lt;P&gt;I thought you’d never ask!&amp;nbsp; A PIN, a touch and TA DA!&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;NOTE: The org already was using FIDO2 for these users, so they insert their FIDO2 key to the Boot device, enter the PIN for it, touch it for ‘proof of presence’ - and that’s it.&amp;nbsp; No long username to type in; no long password to remember/type; no additional prompts.&amp;nbsp; The users glide right through to their CPC desktop.&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;NOTE: Hello for Business (H4B) is supported for the “Dedicated Mode” Boot deployment option but since we used the “Shared PC Mode” setting, where H4B is not supported, we didn’t test.&amp;nbsp; Maybe official H4B support will come later to Shared PC Mode, but given how easy FIDO2 is, and the fact that the target users already use FIDO keys, we didn’t spend any more time on H4B.&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;At the end of the shift, disconnect the session from the CPC desktop to get back to the Boot sign in screen:&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-60px"&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;&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;H1&gt;&amp;nbsp;&lt;/H1&gt;
&lt;H1&gt;&amp;nbsp;&lt;/H1&gt;
&lt;H1&gt;A few FAQs&lt;/H1&gt;
&lt;P&gt;&lt;EM&gt;“What if a user has more than one CPC?”&lt;/EM&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Connection Center is supported via Boot – here’s one of my demo users, using Boot w/ more than one CPC:&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Further, you can select ‘Connect automatically’ from the three dots of a specific CPC’s card; then you’ll always bypass the Connection Center and get SSO’d right into that one.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;o&amp;nbsp;&amp;nbsp; To get back to the Connection Center from the Cloud PC, you can use the hotkey combo of &amp;lt;Ctrl&amp;gt; + &amp;lt;Windows key&amp;gt; + &amp;lt;Up Arrow&amp;gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;o&amp;nbsp;&amp;nbsp; BONUS SECRET HOTKEY COMBO (just between us) – For detailed connection info, from the Cloud PC: &amp;lt;Ctrl&amp;gt; + &amp;lt;Windows key&amp;gt; + &amp;lt;Down Arrow&amp;gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;“Can I customize the look and feel of the Boot sign in experience?”&lt;/EM&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Yes – There are policy settings for a custom icon, company name and wallpapers to help differentiate Boot devices from other PCs/devices.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;o&amp;nbsp;&amp;nbsp; &lt;A href="https://learn.microsoft.com/en-us/windows/client-management/mdm/personalization-csp" target="_blank" rel="noopener"&gt;Personalization CSP | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="list-style-type: none;"&gt;
&lt;UL&gt;
&lt;LI style="list-style-type: none;"&gt;
&lt;UL&gt;
&lt;LI&gt;TIP: those docs indicate needing to use a URL for files – you can use this syntax for local content already on the device: &lt;A class="lia-external-url" target="_blank" rel="noopener"&gt;file:///C:/Folder/File.jpg&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&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;There you have it, folks … Windows 365 Boot (or, &lt;A href="https://en.wikipedia.org/wiki/Das_Boot" target="_blank" rel="noopener"&gt;DAS BOOT!!&lt;/A&gt; as I like to sometimes yell) … in the form of a quick PoC.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;P.S. A special shout-out is in order for Mr. Liu for his assistance and appreciation of the Boot scenarios.&lt;/P&gt;
&lt;P&gt;Stay cool out there…&lt;/P&gt;
&lt;P&gt;Hilde&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 04 Jul 2026 17:01:23 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/windows-365-boot/ba-p/4533696</guid>
      <dc:creator>MichaelHildebrand</dc:creator>
      <dc:date>2026-07-04T17:01:23Z</dc:date>
    </item>
    <item>
      <title>Building C# and C++ Apps with GitHub Copilot CLI and Visual Studio 2026</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/building-c-and-c-apps-with-github-copilot-cli-and-visual-studio/ba-p/4531648</link>
      <description>&lt;P&gt;Most engineers learned Visual Studio through a mouse-driven workflow — &lt;EM&gt;New Project&lt;/EM&gt; — open a project, click through a few dialogs, press F5. The GitHub Copilot &lt;STRONG&gt;CLI&lt;/STRONG&gt; inverts that workflow: you describe the desired outcome in plain English (or any other language Copilot supports), and the agent scaffolds the project, drives MSBuild, resolves its own compiler errors, and explains the result. By the way: this style of working — you describe what you want and the AI does the actual programming and takes care of the rest — is also known as &lt;EM&gt;Vibe Coding&lt;/EM&gt;. For Microsoft FTEs, this translates into measurably faster proofs of concept for customer escalations, reproduction builds, and internal tooling. Engineers outside Microsoft benefit in exactly the same way, as long as their organization — or their personal subscription — provides the corresponding Copilot entitlement.&lt;/P&gt;
&lt;P&gt;This article documents the setup and workflow recommended for engineers onboarding to the CLI. The guidance is deliberately opinionated, assumes a clean Windows 11 installation, and has been verified end-to-end against the current &lt;STRONG&gt;Visual Studio 2026 Community (18.6.2)&lt;/STRONG&gt; and &lt;STRONG&gt;Copilot CLI 1.0.56&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H2&gt;Why use the CLI at all?&lt;/H2&gt;
&lt;P&gt;Copilot is available inside Visual Studio, inside VS Code, in the browser, and on the command line. These front-ends share the same underlying model, but the user experiences differ significantly.&lt;/P&gt;
&lt;P&gt;The CLI is the preferred choice in the following scenarios:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You want a single tool that &lt;STRONG&gt;drives the whole machine&lt;/STRONG&gt; — installer flags, MSBuild, winget, certificates, registry, even vswhere — rather than only the files open in an editor.&lt;/LI&gt;
&lt;LI&gt;You are working on a &lt;STRONG&gt;throwaway repro&lt;/STRONG&gt; for a customer issue, where opening the full IDE is disproportionate.&lt;/LI&gt;
&lt;LI&gt;You want repeatable, scriptable workflows. The CLI accepts instructions, plans and prompts that can be checked in, reviewed, and shared with the rest of your team.&lt;/LI&gt;
&lt;LI&gt;You need to build small tools or short projects without deep programming expertise.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Prerequisites&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;Windows 11 (or Windows 10 22H2) with administrator rights for the install step.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Microsoft FTE GitHub account&lt;/STRONG&gt; linked through the Open Source @ Microsoft portal and a Copilot Business or Enterprise seat assigned by your org. Engineers at other organizations use whichever GitHub identity their employer has assigned a Copilot seat to; individuals can substitute a personal GitHub account that holds a Copilot Pro or Pro+ subscription.&lt;/LI&gt;
&lt;LI&gt;A modern terminal — &lt;STRONG&gt;Windows Terminal&lt;/STRONG&gt; with PowerShell 7 is the supported combination.&lt;/LI&gt;
&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Note &lt;/STRONG&gt;Everything in this guide is built on supported, GA components. Nothing here requires private previews, MSIT exceptions, or non-public flags. If your tenant has additional Conditional Access policies, you may be prompted for MFA the first time you sign in.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;Recommended: Run it all in a virtual machine&lt;/H2&gt;
&lt;P&gt;Before installing anything, an important recommendation: &lt;STRONG&gt;don't run the agent on your primary, company-managed laptop&lt;/STRONG&gt;. The CLI — especially with --yolo — has full read, write and execute access to any directory you have trusted. A well-intentioned prompt such as &lt;EM&gt;"clean up the temp files in my projects folder"&lt;/EM&gt; may delete production work if it is pointed at the wrong root. Compliance tooling, OneDrive Known Folder Move, and on-access antivirus on the corporate image also routinely conflict with build outputs and cause agent runs to fail in opaque ways.&lt;/P&gt;
&lt;P&gt;The safe, repeatable pattern is to host Visual Studio 2026 and the Copilot CLI inside an isolated environment that can be snapshotted, reset, or discarded. The following options are all suitable:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A &lt;STRONG&gt;Microsoft Dev Box&lt;/STRONG&gt; (preferred — already domain-joined, already monitored, and easily recreated from an image).&lt;/LI&gt;
&lt;LI&gt;An &lt;STRONG&gt;Azure VM&lt;/STRONG&gt; in your sponsored subscription, ideally with the Visual Studio image from the Marketplace.&lt;/LI&gt;
&lt;LI&gt;A local &lt;STRONG&gt;Hyper-V&lt;/STRONG&gt; or &lt;STRONG&gt;WSL2/Windows Sandbox&lt;/STRONG&gt;-based Windows 11 VM for offline experimentation.&lt;/LI&gt;
&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Important &lt;/STRONG&gt;Treat the VM as ephemeral. Retain customer artifacts, screenshots and reproductions only within the VM (or in a dedicated OneDrive/SharePoint location &lt;EM&gt;outside&lt;/EM&gt; the trusted Copilot directory). If something goes wrong, you reset the VM — not your corporate laptop.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;Setting up the workspace&lt;/H2&gt;
&lt;P&gt;Select a workspace folder &lt;EM&gt;before&lt;/EM&gt; performing any other step, and observe two rules:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Use a &lt;STRONG&gt;local&lt;/STRONG&gt; path under your profile.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Do not&lt;/STRONG&gt; place it on OneDrive, Known Folders Move, or any other sync root.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The rationale is mundane but consequential: the Copilot agent writes files, MSBuild writes obj\ and bin\, and OneDrive's file-system filter will conflict with all of them. You will observe ghost lock files, partially rewritten .cs files, and "the process cannot access the file" errors that are extremely difficult to diagnose.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;# Recommended workspace root
mkdir "$env:USERPROFILE\AppData\Local\Projects"
cd    "$env:USERPROFILE\AppData\Local\Projects"
&lt;/LI-CODE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Warning &lt;/STRONG&gt;Also avoid %TEMP% for build output. MSBuild emits warning MSB8029, and cleanup tasks in some scheduled jobs may delete your intermediates mid-build.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;Installing the Copilot CLI&lt;/H2&gt;
&lt;P&gt;Open an &lt;STRONG&gt;elevated&lt;/STRONG&gt; PowerShell window — the package needs to register PowerShell 7 as a dependency on first run:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;winget install GitHub.Copilot&lt;/LI-CODE&gt;
&lt;P&gt;Winget downloads the CLI itself (currently 1.0.56) and, on a fresh installation, also installs &lt;STRONG&gt;PowerShell 7&lt;/STRONG&gt; as a dependency. Once the installation completes, the elevated shell can be closed — &lt;EM&gt;do not&lt;/EM&gt; run Copilot as administrator for day-to-day work.&lt;/P&gt;
&lt;P&gt;Confirm the install in a normal (non-elevated) terminal:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;copilot --version&lt;/LI-CODE&gt;
&lt;H2&gt;Installing Visual Studio 2026 Community&lt;/H2&gt;
&lt;P&gt;The CLI does not &lt;EM&gt;require&lt;/EM&gt; Visual Studio — it strictly requires only MSBuild and the appropriate toolchain. However, the Community edition is the most straightforward way to obtain a known-good, fully Microsoft-signed installation of MSBuild 18.6.x, the MSVC v145 toolset, and the Windows 10/11 SDK, all in a single step. Select the variant that matches your target workload:&lt;/P&gt;
&lt;H3&gt;Variant A — C# only (≈ 2.4 GB)&lt;/H3&gt;
&lt;LI-CODE lang=""&gt;winget install --id Microsoft.VisualStudio.Community -e --source winget `
  --override "--add Microsoft.VisualStudio.Workload.ManagedDesktop \
  --add Microsoft.Net.Component.4.8.1.SDK \
  --add Microsoft.Net.Component.4.8.1.TargetingPack \
  --add Microsoft.VisualStudio.Component.CSharp \
  --includeRecommended --passive --norestart"&lt;/LI-CODE&gt;
&lt;H3&gt;Variant B — C# + native C++ + C++/CLI (≈ 4.3 GB)&lt;/H3&gt;
&lt;LI-CODE lang=""&gt;winget install --id Microsoft.VisualStudio.Community -e --source winget `
  --override "--add Microsoft.VisualStudio.Workload.ManagedDesktop \
  --add Microsoft.VisualStudio.Workload.NativeDesktop \
  --add Microsoft.VisualStudio.Component.VC.CLI.Support \
  --add Microsoft.Net.Component.4.8.1.SDK \
  --add Microsoft.Net.Component.4.8.1.TargetingPack \
  --add Microsoft.VisualStudio.Component.CSharp \
  --includeRecommended --passive --norestart"&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A brief description of each component:&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;Component&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Why it's there&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Workload.ManagedDesktop&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Brings WPF, WinForms, the .NET Framework 4.8.1 target packs and Roslyn analyzers.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Workload.NativeDesktop&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Native C++ with the MSVC v145 toolset, Windows 10/11 SDK 10.0.26100, ATL/MFC if you add them.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;VC.CLI.Support&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The "&lt;EM&gt;C++/CLI support&lt;/EM&gt;" component. Without it, anything with &amp;lt;CLRSupport&amp;gt;true&amp;lt;/CLRSupport&amp;gt; fails to compile.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Net.Component.4.8.1.*&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;SDK + targeting pack for the .NET Framework 4.8.1 surface that ships with Windows.&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;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As a Microsoft FTE you have access to Visual Studio Proffessional or Visual Studio Enterprise. If you already have installed a different version of Visual Studio, you don't need to install 2026 Community.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Important &lt;/STRONG&gt;Visual Studio 2026 ships the new v145 platform toolset, not v143. Old .vcxproj files copied in from VS 2022 must be retargeted, otherwise the build fails with MSB8020 — build tools for v143 cannot be found. Copilot can perform this retargeting on request, but the requirement must be stated explicitly.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;First launch &amp;amp; sign-in&lt;/H2&gt;
&lt;P&gt;Change into your project folder and start Copilot. The default invocation recommended for day-to-day FTE work is:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;cd "$env:USERPROFILE\AppData\Local\Projects\Repro-12345"
copilot --yolo --no-ask-user --model "claude-opus-4.8" --effort "medium"&lt;/LI-CODE&gt;
&lt;P&gt;The flags are defined as follows:&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;Flag&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;What it does&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;--yolo&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Pre-approves tool execution, file writes and shell commands for the session. Equivalent to --allow-all-tools --allow-all-paths --allow-all-urls. Use only within trusted folders.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;--no-ask-user&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Suppresses the interactive confirmation prompts mid-task — the agent continues without interruption.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;--model&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Pins a specific model. Useful when determinism across a team is required or when comparing runs. To see, which model best fits your needs, take a look at the model comparison at https://docs.github.com/en/copilot/reference/ai-models/model-comparison&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;--effort&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;low, medium, or high. Higher values allocate more reasoning tokens per turn — slower, but advantageous for complex build errors and architectural work.&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;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Copilot first prompts you to confirm that you &lt;EM&gt;trust&lt;/EM&gt; the current folder. Select &lt;STRONG&gt;"Yes, and remember this folder for future sessions"&lt;/STRONG&gt; only for workspaces you control. Then run /login if you have not yet authenticated — this opens a browser tab in which you sign in with your FTE GitHub identity.&lt;/P&gt;
&lt;H2&gt;Sign in to Copilot on an unmanaged / non-FTE-domain machine&lt;/H2&gt;
&lt;P&gt;The Copilot CLI signs in with a &lt;STRONG&gt;GitHub identity&lt;/STRONG&gt;, not directly with your Microsoft corporate account. On a company-managed device this is transparent — your Enterprise Managed User (EMU) account &lt;EM&gt;&amp;lt;alias&amp;gt;_microsoft&lt;/EM&gt; is accepted without further action.&lt;/P&gt;
&lt;P&gt;On a fresh VM, an Azure VM image, or any other unmanaged device, /login will refuse the EMU account unless you have explicitly linked a &lt;STRONG&gt;personal&lt;/STRONG&gt; GitHub account to your EMU and granted it Copilot entitlement. The same pattern holds for engineers at other enterprises: they sign in with the GitHub identity their organization has provisioned with a Copilot seat. Individuals on a Copilot Pro or Pro+ plan can sign in directly with their personal GitHub handle, without any linking step.&lt;/P&gt;
&lt;P&gt;For Microsoft FTEs, linking is performed once, from any browser, at:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;https://aka.ms/copilot&lt;/LI-CODE&gt;
&lt;P&gt;Sign in with your Microsoft corporate account, link your personal GitHub handle (creating one first if necessary), and accept the prompts. When complete, the page should display every checkbox in green:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img&gt;&lt;EM&gt;A correctly linked account at&lt;/EM&gt;aka.ms/copilot&lt;EM&gt;. The first green check confirms Copilot on the EMU account; the bottom green check is the one that is relevant for unmanaged VMs — "GitHub Copilot enabled for your personal GitHub account for use everywhere", granted through your MicrosoftCopilot organization membership.&lt;/EM&gt;&lt;/img&gt;
&lt;P&gt;Once that bottom row is green, run copilot inside your VM, use /login, and select your&amp;nbsp;&lt;STRONG&gt;personal&lt;/STRONG&gt; GitHub handle when the browser device-code flow opens. From that point onward, every CLI session in that VM uses your linked personal identity, your Copilot entitlement follows you, and your activity remains attributable through the MicrosoftCopilot organization for audit purposes.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Tip &lt;/STRONG&gt;The link between the EMU and the personal account is per-user, not per-device. Once it is established, every new VM you provision will work after a single /login — there is no need to revisit aka.ms/copilot again unless you change your personal handle.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;The bootstrap prompt&lt;/H2&gt;
&lt;P&gt;This is arguably the most valuable step in the entire setup. Before asking Copilot to build anything, instruct it to&amp;nbsp;&lt;STRONG&gt;profile your machine&lt;/STRONG&gt; and write itself a memory file. Paste the following verbatim:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;I have Visual Studio 2026 Community Edition installed with C#,
.NET Framework 4.8.1 targeting pack, native C++ and C++/CLI.
Locate the installation paths using vswhere, verify that you can
create and compile a C# app, a native C++ app, and a C++/CLI app.
Then create a global copilot-instructions.md under
%USERPROFILE%\.copilot\ that documents the VS environment so
future sessions don't have to rediscover it.&lt;/LI-CODE&gt;
&lt;P&gt;The behavior that follows is informative to observe. Copilot uses vswhere.exe to locate the installation, reads setup.config.json, generates three disposable projects in your temp folder, builds them with MSBuild, parses the output, and on success writes a structured Markdown file to your user profile. That file is then automatically picked up by &lt;STRONG&gt;every future&lt;/STRONG&gt; Copilot CLI session on this machine. The discovery work is performed exactly once.&lt;/P&gt;
&lt;H2&gt;What a good copilot-instructions.md looks like&lt;/H2&gt;
&lt;P&gt;Copilot CLI reads instructions from several well-known locations, in this order of precedence:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;PRE&gt;.github/copilot-instructions.md in the repo&lt;/PRE&gt;
&lt;/LI&gt;
&lt;LI&gt;AGENTS.md (or CLAUDE.md, GEMINI.md) in the repo root&lt;/LI&gt;
&lt;LI&gt;
&lt;PRE&gt;.github/instructions/**/*.instructions.md for path-scoped rules&lt;/PRE&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;PRE&gt;%USERPROFILE%\.copilot\copilot-instructions.md as a global fallback&lt;/PRE&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The machine-level file should be concise, declarative, and contain &lt;STRONG&gt;exact paths&lt;/STRONG&gt;. A verified skeleton is shown below:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;# Build environment on this PC (Visual Studio 2026)

- Visual Studio Community 2026, version **18.6.2**
- MSBuild **18.6.3**
- MSVC toolset **14.51.36231**, platform toolset name **v145**
- Windows 10/11 SDK: **10.0.26100**
- Default .NET Framework target: **net481**

## Key paths
| Purpose            | Path |
|--------------------|------|
| VS install root    | `C:\Program Files\Microsoft Visual Studio\18\Community`            |
| vswhere.exe        | `C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe` |
| MSBuild.exe        | `...\18\Community\MSBuild\Current\Bin\MSBuild.exe`                 |
| MSVC cl.exe (x64)  | `...\VC\Tools\MSVC\14.51.36231\bin\Hostx64\x64\cl.exe`             |
| vcvars64.bat       | `...\VC\Auxiliary\Build\vcvars64.bat`                              |

## Conventions
- For SDK-style csproj, always run `Restore` together with `Build`.
- New `.vcxproj` files must use `&amp;lt;PlatformToolset&amp;gt;v145&amp;lt;/PlatformToolset&amp;gt;`.
- For C++/CLI: `&amp;lt;CLRSupport&amp;gt;true&amp;lt;/CLRSupport&amp;gt;` and `&amp;lt;TargetFrameworkVersion&amp;gt;v4.8.1&amp;lt;/TargetFrameworkVersion&amp;gt;`.
- Never put build output under `%TEMP%`.&lt;/LI-CODE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Tip &lt;/STRONG&gt;Treat copilot-instructions.md as a configuration file. Commit a repo-local version to your .github/ folder for projects with non-standard build flags (custom response files, signing scripts, and similar). The repo-local version overrides the global one.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;Worked example: a C# console app on .NET Framework 4.8.1&lt;/H2&gt;
&lt;P&gt;Consider a task representative of customer-engineering work — a small utility that reads a registry key and emits JSON. Inside Copilot, enter:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;Create a new C# console project targeting net481 in
.\RegistryProbe\. The app should accept a registry key path as
its single argument, read all values under it, and print them as
JSON to stdout. Add a few unit tests with MSTest. Build the
project with MSBuild in Release and show me the dotnet run output.&lt;/LI-CODE&gt;
&lt;P&gt;Behind the scenes Copilot will:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Use vswhere to locate MSBuild (already cached via the instructions file).&lt;/LI&gt;
&lt;LI&gt;
&lt;PRE&gt;Generate RegistryProbe.csproj with &amp;lt;TargetFramework&amp;gt;net481&amp;lt;/TargetFramework&amp;gt;.&lt;/PRE&gt;
&lt;/LI&gt;
&lt;LI&gt;Write Program.cs with appropriate argument parsing and a Microsoft.Win32.RegistryKey reader.&lt;/LI&gt;
&lt;LI&gt;Add an MSTest project, wire it up via a .sln file.&lt;/LI&gt;
&lt;LI&gt;
&lt;PRE&gt;Run MSBuild /t:Restore,Build /p:Configuration=Release and read the output.&lt;/PRE&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;PRE&gt;Run the binary against a safe key like HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion and present the JSON output.&lt;/PRE&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;For a more deliberate workflow, press &lt;STRONG&gt;Shift+Tab&lt;/STRONG&gt; to toggle &lt;STRONG&gt;Plan mode&lt;/STRONG&gt;. Copilot will produce an implementation plan first and wait for approval before writing to disk — a recommended practice for any work involving a customer reproduction.&lt;/P&gt;
&lt;H2&gt;Worked example: a native C++ command-line tool&lt;/H2&gt;
&lt;P&gt;The same approach applied to native C++. Prompt:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;Create a new native C++ console project ".\PortPing\"
targeting x64, Release, using the v145 platform toolset and
Windows SDK 10.0.26100. The tool takes "host:port" on the
command line and prints "open" or "closed" depending on whether
a TCP connect succeeds within 1 second. Build it with MSBuild
and run it against microsoft.com:443.&lt;/LI-CODE&gt;
&lt;P&gt;The agent generates a PortPing.vcxproj that looks roughly like:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;&amp;lt;PropertyGroup Label="Globals"&amp;gt;
  &amp;lt;PlatformToolset&amp;gt;v145&amp;lt;/PlatformToolset&amp;gt;
  &amp;lt;WindowsTargetPlatformVersion&amp;gt;10.0.26100.0&amp;lt;/WindowsTargetPlatformVersion&amp;gt;
  &amp;lt;ConfigurationType&amp;gt;Application&amp;lt;/ConfigurationType&amp;gt;
&amp;lt;/PropertyGroup&amp;gt;&lt;/LI-CODE&gt;
&lt;P&gt;…and builds it with:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;&amp;amp; $msbuild "PortPing.vcxproj" /p:Configuration=Release /p:Platform=x64&lt;/LI-CODE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Tip &lt;/STRONG&gt;If you want Copilot to compile a single .cpp with cl.exe instead of going through MSBuild, instruct it to load vcvars64.bat first. This sets INCLUDE, LIB and PATH for the MSVC toolchain so that direct compiler invocations succeed.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;Worked example: a C++/CLI interop assembly&lt;/H2&gt;
&lt;P&gt;C++/CLI is the workload that most commonly causes confusion in practice, because it requires the optional VC.CLI.Support component &lt;EM&gt;and&lt;/EM&gt; a few non-obvious project properties. With Copilot, the task reduces to:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;Create a C++/CLI class library ".\InteropBridge\" that targets
.NET Framework 4.8.1, uses the v145 toolset, and exposes a
managed wrapper around the native function CreateFileW. Add a
small C# console app in the same solution that consumes the
wrapper. Build everything Release|x64 and run the C# app to
prove the interop works.&lt;/LI-CODE&gt;
&lt;P&gt;The two critical lines that Copilot adds to the .vcxproj are:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;&amp;lt;CLRSupport&amp;gt;true&amp;lt;/CLRSupport&amp;gt;
&amp;lt;TargetFrameworkVersion&amp;gt;v4.8.1&amp;lt;/TargetFrameworkVersion&amp;gt;&lt;/LI-CODE&gt;
&lt;P&gt;If the C++/CLI support component is not yet installed, Copilot will detect the corresponding "Cannot find &amp;lt;CLRSupport&amp;gt;" error, suggest the correct winget command to add the component, and offer to re-run the build.&lt;/P&gt;
&lt;H2&gt;Models, effort, and custom agents&lt;/H2&gt;
&lt;P&gt;Copilot CLI allows the model to be selected per session, and this selection should be made deliberately. The appropriate choice depends on the task at hand:&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;Profile&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Recommended invocation&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;When to use&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Fast iteration&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;copilot --yolo --model "claude-opus-4.8" --effort "medium"&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Day-to-day work: scaffolding, small refactors, and build fixes.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Hard problems&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;copilot --yolo --model "claude-opus-4.7-1m-internal" --effort "high" --context "long_context"&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Cross-file analysis, large reproductions, and complex C++ template errors.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Maximum autonomy&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;copilot --allow-all-urls --allow-all-tools --allow-all-paths --no-ask-user&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Sandboxed Dev Box or VM only — never on a production laptop.&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;To determine which model best suits your purpose, consult the model comparison at &lt;A href="https://docs.github.com/en/copilot/reference/ai-models/model-comparison" target="_blank" rel="noopener"&gt;https://docs.github.com/en/copilot/reference/ai-models/model-comparison&lt;/A&gt;. And if you have ever wondered what skills, tools, plugins and similar concepts actually are — or what an MCP server is for — the answers are available at &lt;A href="https://docs.github.com/en/copilot/concepts/agents/copilot-cli/comparing-cli-features" target="_blank" rel="noopener"&gt;https://docs.github.com/en/copilot/concepts/agents/copilot-cli/comparing-cli-features&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;Useful slash commands within Copilot CLI&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;/plan — produce an implementation plan before any code is written.&lt;/LI&gt;
&lt;LI&gt;/review — run the code-review subagent against the local diff.&lt;/LI&gt;
&lt;LI&gt;/diff — display the changes Copilot has made to the working tree.&lt;/LI&gt;
&lt;LI&gt;/agent — select a custom agent (explore, task, general-purpose, rubber-duck, code-review, research).&lt;/LI&gt;
&lt;LI&gt;/mcp — register an MCP server (useful for Azure CLI, Kusto, or internal tooling).&lt;/LI&gt;
&lt;LI&gt;/instructions — show which instruction files are currently loaded — useful when investigating unexpected agent behavior.&lt;/LI&gt;
&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Tip &lt;/STRONG&gt;Press &lt;STRONG&gt;Shift+Tab&lt;/STRONG&gt; at any time to toggle &lt;STRONG&gt;Plan mode&lt;/STRONG&gt;. For any action that would be recorded in a change ticket, planning first is inexpensive insurance.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;Security &amp;amp; compliance for Microsoft FTEs&lt;/H2&gt;
&lt;P&gt;GitHub Copilot CLI falls within the scope of Microsoft's standard "responsible use of AI" guidance. Engineers at other enterprises should substitute the equivalent policy of their own employer, and individuals using a personal Copilot subscription should still treat these principles as a sensible default. The condensed guidance for engineers is:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Do not paste customer data&lt;/STRONG&gt; into prompts unless your engagement explicitly permits it. The agent will faithfully transmit such data to the model.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Do not use &lt;/STRONG&gt;--yolo&lt;STRONG&gt; on shared infrastructure.&lt;/STRONG&gt; The flag pre-approves shell execution and file writes. Reserve it for personal workspaces or sandboxed Dev Boxes.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Review the diff.&lt;/STRONG&gt; Use /diff or git status before committing — Copilot will, on occasion, refactor files you did not anticipate.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Secrets stay out of source.&lt;/STRONG&gt; If you ask Copilot to test something that requires credentials, direct it to use azd, the Az module, or your Key Vault — never inline secrets.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Telemetry and logs&lt;/STRONG&gt; from the CLI reside under %USERPROFILE%\.copilot\logs. If a customer escalation requires evidence of agent actions, those logs serve as your audit trail.&lt;/LI&gt;
&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Important &lt;/STRONG&gt;Any action Copilot performs on your machine still runs as &lt;EM&gt;you&lt;/EM&gt;. Treat agent sessions with the same care you would extend to a teammate with full access to your development machine.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;Beyond Visual Studio: where else Copilot CLI helps&lt;/H2&gt;
&lt;P&gt;The Visual Studio scenarios in this article are the most obvious use case, but they are by no means the only one. The following list covers additional areas in which Copilot CLI has proven productive on real engagements.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Generating and maintaining tests&lt;/STRONG&gt; — Ask Copilot to write MSTest, NUnit or xUnit tests for an existing class, including mocks and boundary cases, or to fill coverage gaps in methods that were touched in the last commit.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Refactoring across files&lt;/STRONG&gt; — Rename a public API, extract an interface, or restructure a folder hierarchy and have Copilot propagate the change consistently throughout the solution, including project file references and unit tests.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Modernizing legacy code&lt;/STRONG&gt; — Port code from .NET Framework 4.8.1 to .NET 8/9, replace WebClient with HttpClient, or swap manual JSON parsing for System.Text.Json. Copilot handles the boilerplate; you review the deltas.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Building customer reproductions from scratch&lt;/STRONG&gt; — Translate a bug description from a support ticket into a minimal repro project. Copilot scaffolds the solution, simulates the failing call path, and runs it to confirm the symptom matches.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Reviewing the local diff&lt;/STRONG&gt; — The /review slash command analyses staged or unstaged changes and surfaces real issues — race conditions, off-by-one errors, missing input validation, dropped exceptions — while suppressing style-only noise.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Writing and optimizing database code&lt;/STRONG&gt; — Generate Entity Framework Core models and migrations from an existing schema, draft complex LINQ or raw SQL queries, and ask Copilot to inspect an execution plan and propose targeted indexes or query rewrites.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Interpreting performance and memory profiles&lt;/STRONG&gt; — Hand Copilot a PerfView trace summary, a dotnet-counters capture, or a BenchmarkDotNet result table. It identifies hot paths, allocation spikes, and contended locks, then suggests concrete code changes to address them.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Generating documentation&lt;/STRONG&gt; — Produce XML doc comments for public APIs, README sections, architecture overviews, or migration guides — written directly from the current code, not from a stale design document.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Investigating unfamiliar codebases&lt;/STRONG&gt; — Drop into a foreign repository and ask &lt;EM&gt;"what does this service do?"&lt;/EM&gt;, &lt;EM&gt;"where is authentication enforced?"&lt;/EM&gt;, or &lt;EM&gt;"which class handles cache invalidation?"&lt;/EM&gt;. The explore subagent answers with file and line references rather than vague summaries.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Analyzing logs and traces&lt;/STRONG&gt; — Point Copilot at an ETW trace, an Event Viewer export, a Fiddler capture, or a multi-megabyte server log. It groups errors, identifies the dominant failure pattern, and suggests next steps for the investigation.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;PowerShell, Bicep and other operational scripting&lt;/STRONG&gt; — Beyond compiled applications, Copilot writes and debugs PowerShell modules, Bicep/ARM templates, Terraform configurations, and shell scripts — useful, among other things, for provisioning the very Dev Box or Azure VM described earlier in this article.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Drafting technical communication&lt;/STRONG&gt; — Generate the first draft of a customer-facing root-cause analysis, a pull request description, a release-note entry, or an internal incident retrospective directly from a diff or a chat transcript. The final wording remains yours; the boilerplate does not.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;On a slightly meta note: GitHub Copilot CLI can also take a surprising amount of work off your hands when, for instance, you set out to write a blog post like this one. :-)&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;A note on customer data.&lt;/STRONG&gt; Several of the scenarios above — building customer reproductions and analyzing customer-supplied logs in particular, but also any review, database or profiling task that involves production samples — may rely on material provided by a customer. Such data must always be handled with care: depending on the engagement, the customer's data-classification level, or the applicable regulatory regime, sharing it with a Copilot model may be restricted or outright prohibited. Public Sector engagements warrant particular caution. When in doubt, redact, reproduce against synthetic data, or confirm with your account team or compliance contact before pasting anything into a prompt.&lt;/P&gt;
&lt;H2&gt;Wrapping up&lt;/H2&gt;
&lt;P&gt;A clean Windows installation, two winget commands, one bootstrap prompt, and a global copilot-instructions.md are all that separate you from a fully working, AI-driven C# / C++ / C++/CLI workflow on Visual Studio 2026. From that point, the agent does what agents do best — it handles the routine work while you remain focused on the customer problem. The list of additional scenarios in the previous section is intentionally non-exhaustive — most engineering tasks that can be described in plain English are candidates, provided the agent has the relevant context and the required permissions.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Productive prompting — and may your builds remain evergreen.&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 02 Jul 2026 08:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/building-c-and-c-apps-with-github-copilot-cli-and-visual-studio/ba-p/4531648</guid>
      <dc:creator>hewagen</dc:creator>
      <dc:date>2026-07-02T08:00:00Z</dc:date>
    </item>
    <item>
      <title>Authenticating AWS Workloads to Azure Functions using Workload Identity Federation</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/authenticating-aws-workloads-to-azure-functions-using-workload/ba-p/4531603</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;SPAN data-contrast="none"&gt;What you will learn:&lt;/SPAN&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;What Workload Identity Federation is and how it works&lt;/LI&gt;
&lt;LI&gt;How to set up trust between AWS and Microsoft Entra ID&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;How to exchange AWS identity tokens for Azure access tokens&lt;/LI&gt;
&lt;LI&gt;How to securely call an Azure Function from AWS without storing credentials&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;This approach improves security, removes secret management overhead, and aligns with Zero Trust principles.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Let’s start by understanding why this approach is needed in a multi-cloud environment.&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5&gt;&lt;SPAN data-contrast="none"&gt;Why this approach is needed&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;In today’s multi-cloud landscape, organizations&amp;nbsp;frequently&amp;nbsp;need to connect services across cloud providers like AWS and Azure.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Traditionally, this required storing long-lived Azure client secrets within AWS environments. While functional, this introduces:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="48" 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="none"&gt;Security risks (secrets can leak or be misused)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="48" 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="none"&gt;Operational overhead (secret rotation and storage)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="48" 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="none"&gt;Increased maintenance complexity&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Microsoft Entra ID&amp;nbsp;provides&amp;nbsp;a modern alternative:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Workload Identity Federation&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;, which&amp;nbsp;eliminates&amp;nbsp;the need for static credentials entirely.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5&gt;&lt;SPAN data-contrast="none"&gt;What is Workload Identity Federation?&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Workload Identity Federation is a feature in Microsoft Entra ID that allows you to trust identities from external providers like AWS, GCP, or GitHub. Instead of a secret, Azure&amp;nbsp;validates&amp;nbsp;the identity of the AWS resource based on its own native OIDC (OpenID Connect) token.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;This approach is particularly useful for:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="28" 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="none"&gt;&lt;STRONG&gt;Securing Cross-Cloud Pipelines&lt;/STRONG&gt;:&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;Enabling AWS Lambda or EC2 to call Azure APIs without managing keys.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="28" 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;STRONG&gt;&lt;SPAN data-contrast="none"&gt;Eliminating&amp;nbsp;Secret Rotation:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;Removing the need to update expired secrets across different cloud providers.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="28" 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;STRONG&gt;&lt;SPAN data-contrast="none"&gt;Enhancing Security:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;Using short-lived, verifiable claims that automatically expire.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;In this blog, we will cover the configuration for&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;service-to-service&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;STRONG&gt;&amp;nbsp;authentication&lt;/STRONG&gt; and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;user-led validation&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;for troubleshooting. The following guide outlines the complete technical configuration&amp;nbsp;required&amp;nbsp;to implement this architecture.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;An overview of what we will be doing:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Generate AWS Token:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Your AWS resource (Lambda, EC2,&amp;nbsp;etc) generates a short-lived OIDC token signed by AWS.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Exchange for Azure Token:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;The AWS token is sent to Microsoft Entra ID. Azure&amp;nbsp;validates&amp;nbsp;the AWS signature using your Federated Credential and issues a native Azure Access Token in return.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Attach Verified Permissions:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;We configure an&amp;nbsp;App Role&amp;nbsp;on the&amp;nbsp;Function&amp;nbsp;App&amp;nbsp;and link it to our Caller App. This helps Azure&amp;nbsp;identify&amp;nbsp;the correct permissions to inject into the token, confirming the caller is officially&amp;nbsp;permitted&amp;nbsp;to access your API.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Authorize Azure Function:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; The AWS resource calls the Function URL with the Azure token. The Function's authentication layer verifies the token's claims and grants access.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN data-contrast="auto"&gt;Section 1: AWS side setup&lt;/SPAN&gt;&lt;/H4&gt;
&lt;H5&gt;&lt;SPAN class="lia-text-color-10"&gt;&lt;SPAN class="lia-text-color-15"&gt;Step 1–Enabling Outbound Identity Federation&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt; Go toIdentity and Access Management (IAM)-&amp;gt; Access Management-&amp;gt;Account Settings&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt; Scroll down to the Outbound Identity Federation section and enable it. Note down the &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Token Issuer URL&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;—we will use it later to set up the Issuer claim in the federated credentials on the Azure side.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;H5&gt;&lt;SPAN class="lia-text-color-15"&gt;Step 2– Create a role for your AWS resource (Lambda, EC2)&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Go to Identity and Access Management (IAM) -&amp;gt; Access Management-&amp;gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Roles&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Click on the Create role button on the top right and select the trusted entity type, I selected AWS service. For use case I selected EC2. &lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Under Permissions, click Add permissions &amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Create inline policy&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Switch to the JSON tab and paste this:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;LI-CODE lang=""&gt;curl -X POST 
"https://login.microsoftonline.com/&amp;lt;TENANT_ID&amp;gt;/oauth2/v2.0/token" \ 
-H "Content-Type: application/x-www-form-urlencoded" \ 
-d "client_id=&amp;lt;CLIENT_ID&amp;gt; " \ 
-d "scope=api://&amp;lt;APP_URI&amp;gt; /.default" \ 
-d "grant_type=client_credentials" \ 
-d "client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer" \ 
-d "client_assertion=&amp;lt;WebIdentityToken&amp;gt; "&lt;/LI-CODE&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Review and Save (name it something like&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;AllowSelfWebIdentityToken&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;). This permission allows the role to&amp;nbsp;generate its own OIDC token for external exchange&amp;nbsp;(you can do this step after the creation of role as well by editing the role)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;I named the role&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;aws-federation-role&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;. Review and create the role. After the creation is complete note down the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;ARN&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;for the role.&lt;/SPAN&gt;&amp;nbsp;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN data-contrast="auto"&gt;Section 2: Azure side setup&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;H5&gt;&lt;SPAN class="lia-text-color-15"&gt;Step&amp;nbsp;3&amp;nbsp;— Register the AWS Caller&amp;nbsp;App in Entra ID&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This&amp;nbsp;registration&amp;nbsp;represents&amp;nbsp;the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;AWS resource&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;that will request a token and call your API&amp;nbsp;in the Azure side.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Go to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Azure Portal → Microsoft Entra ID → App registrations → +&amp;nbsp;New registration&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&amp;nbsp;Fill in the following details:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Name:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;aws-caller-app&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Supported account types:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Single tenant (your tenant)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&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;Register&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&amp;nbsp;Now&amp;nbsp;you’ll&amp;nbsp;see&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Application (client) ID&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Directory (tenant) ID&lt;/STRONG&gt;.&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Copy both —&amp;nbsp;you’ll&amp;nbsp;need them later.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5&gt;&lt;SPAN class="lia-text-color-15"&gt;Step 4— Create Federated Credentials&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This allows&amp;nbsp;AWS&amp;nbsp;to impersonate this application by&amp;nbsp;establishing&amp;nbsp;a trust with an external OpenID Connect (OIDC) identity provider&amp;nbsp;and&amp;nbsp;get tokens to access Microsoft Entra ID resources.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;In the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;aws-caller-app&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;that you just created, go to Manage-&amp;gt;Certificates and Secrets. Go to the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Federated credentials&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;section on the page.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Fill the following details:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Federated credential scenario&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;:&amp;nbsp;Other&amp;nbsp;issuer&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Issuer&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt;&amp;nbsp;Add the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Token Issuer URL&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;that we copied in Step 1 from AWS.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Type&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;: &lt;/STRONG&gt;Explicit&amp;nbsp;subject&amp;nbsp;identifier&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Value&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt;&amp;nbsp;Add the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ARN&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;of the AWS resource that we copied in Step 2&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Name:&lt;/STRONG&gt; aws-federation &lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Add Description and leave the Audience claim as is. Click &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Add.&lt;/SPAN&gt;&lt;BR /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;H5&gt;&lt;SPAN class="lia-text-color-15"&gt;Step 5— Register your Function App in Entra ID &amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This registration represents the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Function App resource&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;that will receive a token and be called on the Azure side. My Function App is an API called&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;aws-entra-federation-api.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Go to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Azure Portal → Microsoft Entra ID → App registrations → +&amp;nbsp;New registration&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&amp;nbsp;Fill in the following details:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Name:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;function-api-app&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Supported account types:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Single tenant (your tenant)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&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;Register&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&amp;nbsp;Now&amp;nbsp;you’ll&amp;nbsp;see&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Application (client) ID&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;and&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Directory (tenant) ID.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Copy both —&amp;nbsp;you’ll&amp;nbsp;need them later.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5&gt;&lt;SPAN class="lia-text-color-15"&gt;Step&amp;nbsp;6– Create an App Role&amp;nbsp;in function-api-app&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;App roles&amp;nbsp;are custom role&amp;nbsp;templates which define&amp;nbsp;permissions&amp;nbsp;that can be assigned&amp;nbsp;to users or apps.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="none"&gt;In the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;function-api-app&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;that you just created&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;, go to Manage → App Roles in the left menu.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="none"&gt;Create a new Role&amp;nbsp;and fill the following details:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;Display Name:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;access_as_app&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;Allow Member Types:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;Applications&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;Value:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;access_as_app&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;Description:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;Allow application to application access&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;Do you want to enable this app role?:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;True (Checked)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="none"&gt;Click "Apply".&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;H5&gt;&lt;SPAN class="lia-text-color-15"&gt;Step&amp;nbsp;7– Assign API Permissions to the&amp;nbsp;aws-caller-app&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;In the&amp;nbsp;previous&amp;nbsp;step we created a role on the function-api-app, now we will assign this role to the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;aws-caller-app&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;so that it is able to authorize and call the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&lt;STRONG&gt;function-api-app&lt;/STRONG&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="none"&gt;In the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;function-api-app&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;, go to Manage → API Permissions in the left menu.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="none"&gt;Click "+ Add a permission".&amp;nbsp;Click on the "APIs my organization uses" tab.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="none"&gt;In the search bar, enter the name of the app/service principal created before&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;function-api-app&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="none"&gt;Select Application permissions and, under the Permissions section, choose the role created before&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;(&lt;STRONG&gt;access_as_app&lt;/STRONG&gt;)&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="none"&gt;Click the "Add permissions" button.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="none"&gt;Back in the Manage → API Permissions screen, click "&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;Grant admin consent&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;STRONG&gt;&amp;nbsp;for Default Directory&lt;/STRONG&gt;".&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5&gt;&lt;SPAN class="lia-text-color-15"&gt;Step 8— Configure Authentication on the Azure Function resource&amp;nbsp;(aws-entra-federation-api)&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Enable authentication on your function resource&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;(&lt;STRONG&gt;aws-entra-federation-api&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;) and link it to the app registration (&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;function-api-app&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;) you created earlier.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Go to your&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Function App resource&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;in the Azure Portal&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;(&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;aws-azure-federation-api&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;On the left menu, select&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Authentication.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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;+ Add identity provider.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Add the following details:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Identity provider:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;Microsoft&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559685&amp;quot;:1080,&amp;quot;469777462&amp;quot;:[1440,1080],&amp;quot;469777927&amp;quot;:[0,0],&amp;quot;469777928&amp;quot;:[0,8]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;App registration type:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Provide details of an existing app registration&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559685&amp;quot;:1080,&amp;quot;469777462&amp;quot;:[1440,1080],&amp;quot;469777927&amp;quot;:[0,0],&amp;quot;469777928&amp;quot;:[0,8]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Client ID:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Paste the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Application (client) ID&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;of your&amp;nbsp;function-api-app from step 5(&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;APP_URI&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559685&amp;quot;:1080,&amp;quot;469777462&amp;quot;:[1440,1080],&amp;quot;469777927&amp;quot;:[0,0],&amp;quot;469777928&amp;quot;:[0,8]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Issuer URL:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://login.microsoftonline.com/%3ctenant-id%3e/v2.0" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;https://login.microsoftonline.com/&amp;lt;tenant-id&amp;gt;/v2.0&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;(Replace &amp;lt;tenant-id&amp;gt; with your Directory (tenant) ID)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559685&amp;quot;:1080,&amp;quot;469777462&amp;quot;:[1440,1080],&amp;quot;469777927&amp;quot;:[0,0],&amp;quot;469777928&amp;quot;:[0,8]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Client application requirement:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Allow requests from any application&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559685&amp;quot;:1080,&amp;quot;469777462&amp;quot;:[1440,1080],&amp;quot;469777927&amp;quot;:[0,0],&amp;quot;469777928&amp;quot;:[0,8]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Identity requirement&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; Allow requests from any identity&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559685&amp;quot;:1080,&amp;quot;469777462&amp;quot;:[1440,1080],&amp;quot;469777927&amp;quot;:[0,0],&amp;quot;469777928&amp;quot;:[0,8]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Tenant requirement&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; Allow requests only from the issuer tenant&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559685&amp;quot;:1080,&amp;quot;469777462&amp;quot;:[1440,1080],&amp;quot;469777927&amp;quot;:[0,0],&amp;quot;469777928&amp;quot;:[0,8]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Under&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Restrict access&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;, select&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Require authentication&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559685&amp;quot;:1080,&amp;quot;469777462&amp;quot;:[1440,1080],&amp;quot;469777927&amp;quot;:[0,0],&amp;quot;469777928&amp;quot;:[0,8]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Unauthenticated requests&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; HTTP 401&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559685&amp;quot;:1080,&amp;quot;469777462&amp;quot;:[1440,1080],&amp;quot;469777927&amp;quot;:[0,0],&amp;quot;469777928&amp;quot;:[0,8]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Any other field not listed should remain as default.&amp;nbsp;Click "Add" and refresh the&amp;nbsp;Settings&amp;nbsp;→ Authentication view.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;The new configured provider will appear. Click "Edit".&amp;nbsp;A list of fields will appear. Make the following changes:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Allowed token audiences&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt;&amp;nbsp;Lets&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;consider&lt;STRONG&gt; Application ID for&lt;/STRONG&gt; &lt;STRONG&gt;function-api-app&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;from step 5 as the value for variable&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;APP_URI&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;. Add the following three different audiences.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;&amp;lt;APP_URI&amp;gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;api://&amp;lt;APP_URI&amp;gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;api://&amp;lt;APP_URI&amp;gt;&amp;nbsp;/.default&lt;/SPAN&gt; &lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Any other field not listed should remain as default.&amp;nbsp;Save&amp;nbsp;the changes.&amp;nbsp;Now the Function App will&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;only accept calls with valid Azure AD access tokens&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Congratulations, you have successfully completed the setup&amp;nbsp;required&amp;nbsp;for using Federated Identity authentication. Now&amp;nbsp;let’s&amp;nbsp;test if the setup is working correctly.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN data-contrast="auto"&gt;Section 3: Validating the setup&lt;/SPAN&gt;&lt;/H4&gt;
&lt;H5&gt;&lt;SPAN class="lia-text-color-15"&gt;Step&amp;nbsp;9&amp;nbsp;–&amp;nbsp;Requesting Azure token and authenticating to the function app.&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;In my case,&amp;nbsp;I’ve&amp;nbsp;logged&amp;nbsp;in to my AWS account using&amp;nbsp;my user account (not root user)&amp;nbsp;and then opened&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;AWS&amp;nbsp;CloudShell&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;. I will be&amp;nbsp;validating&amp;nbsp;the setup through user account as I have not deployed any AWS resource.&amp;nbsp;You should be able to request for Azure token through Lambda or other AWS resource in a similar manner.&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We will be using the following variable and values in the following steps:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="27" 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;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;ARN&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&amp;nbsp;&lt;/STRONG&gt;The ARN of the role created in step 2 on AWS.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="27" 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;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;TENANT_ID&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;: &lt;/STRONG&gt;Your Azure tenant ID, you can find this by going to your Account-&amp;gt;All directories and copy the Directory ID&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="27" 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;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;CLIENT_ID&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; The application (object) ID of the app registration created for the AWS caller app generated in step 3(&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;aws-caller-app&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;, in this case).&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="27" 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;hybridMultilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;APP_URI&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; The application (object) ID of the App registration created for the function app resource generated in step 5 (&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;function-api-app&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;, in this case).&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&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="27" 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;hybridMultilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;DEFAULT_DOMAIN&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt;&amp;nbsp;You can find this in the overview section of your Azure Function app&amp;nbsp;resource (&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;aws-entra-federation-api&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;, in this case).&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;We&amp;nbsp;need to follow&amp;nbsp;a few extra steps because this validation uses a user account. In production, the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;AWS SDK performs the ‘identity proofing’&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;step (step 4) for you. In your code, you simply take that identity, exchange it for an Azure token at the Microsoft Entra endpoint, and use the token to call your Azure Function. As a result, a production workload typically doesn’t need the first four steps.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Assume the Role that was created earlier for the AWS resource in Step 2, we are logged in to the AWS&amp;nbsp;CloudShell&amp;nbsp;with the user&amp;nbsp;account&amp;nbsp;but we need to use the role that we created earlier to generate AWS token and exchange it for Azure token.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;LI-CODE lang=""&gt;aws sts assume-role --role-arn &amp;lt;ARN&amp;gt;&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;As&amp;nbsp;output,&amp;nbsp;we get&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;accesskeyid,&amp;nbsp;secretaccesskey&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;and&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;sessiontoken&lt;/STRONG&gt;.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;We will be using these as variables in the next step.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Set these&amp;nbsp;values&amp;nbsp;as variables:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;LI-CODE lang=""&gt;export AWS_ACCESS_KEY_ID="&amp;lt;accesskeyid&amp;gt; " 
export AWS_SECRET_ACCESS_KEY="&amp;lt;secretaccesskey&amp;gt; " 
export AWS_SESSION_TOKEN="&amp;lt;sessiontoken&amp;gt;"&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Generate the AWS OIDC Token&amp;nbsp;that is specifically formatted for Azure.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;LI-CODE lang=""&gt;aws sts get-web-identity-token \ 
--audience "api://AzureADTokenExchange" \ 
--signing-algorithm "RS256" \ 
--duration-seconds 3600&lt;/LI-CODE&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;We get the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;WebIdentityToken&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;in the output.&amp;nbsp;Store it as we will be using it in the next step.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Now we will exchange the AWS token (&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;WebIdentityToken&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;) for an Entra ID token&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;LI-CODE lang=""&gt;curl -X POST 
"https://login.microsoftonline.com/&amp;lt;TENANT_ID&amp;gt;/oauth2/v2.0/token" \ 
-H "Content-Type: application/x-www-form-urlencoded" \ 
-d "client_id=&amp;lt;CLIENT_ID&amp;gt; " \ 
-d "scope=api://&amp;lt;APP_URI&amp;gt; /.default" \ 
-d "grant_type=client_credentials" \ 
-d "client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer" \ 
-d "client_assertion=&amp;lt;WebIdentityToken&amp;gt; "&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;We get the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;access_token&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;as the output of the last step. Store it as we will be using it in the next step.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Use the Entra ID token from the last step to send a request to&amp;nbsp;your&amp;nbsp;app—in this case, the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;function-api-app&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;LI-CODE lang=""&gt;curl -X GET "https://&amp;lt;DEFAULT_DOMAIN&amp;gt; " \ 
-H "Authorization: Bearer &amp;lt;access_token&amp;gt;" \ 
-H "Content-Type: application/json"&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;You should get a&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;200 OK&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;response.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN data-contrast="none"&gt;Conclusion&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;By implementing&amp;nbsp;Workload&amp;nbsp;Identity Federation, you have moved away from the "Secret Management" era of cloud security. Instead of worrying about rotating client secrets or securing them in a vault, you are now using a short-lived, verifiable trust relationship between AWS and Azure.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;What's Next?&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Now that your authentication is secure, you can explore:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Fine-Grained Authorization&lt;/STRONG&gt;:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Use the claims inside the Azure Access Token to restrict specific actions within your Azure Function code.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Conditional Access Policies:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Layer on Azure Conditional Access to ensure requests only come from trusted locations, such as your specific AWS VPC or a designated IP range&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Automating with&amp;nbsp;Terraform/Bicep:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Now that&amp;nbsp;you've&amp;nbsp;done it manually, consider codifying this setup to ensure consistent security across all your environments.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 29 Jun 2026 04:38:32 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/authenticating-aws-workloads-to-azure-functions-using-workload/ba-p/4531603</guid>
      <dc:creator>kasturi</dc:creator>
      <dc:date>2026-06-29T04:38:32Z</dc:date>
    </item>
    <item>
      <title>Check This Out! (CTO!) Guide (May/June 2026)</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/check-this-out-cto-guide-may-june-2026/ba-p/4529349</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/coreinfrastructureandsecurityblog/triggering-azure-functions-from-blob-storage-using-event-grid/4518184" target="_blank" rel="noopener noreferrer"&gt;Triggering Azure Functions from Blob Storage Using Event Grid&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/andrewcoughlin/449905" target="_blank" rel="noopener noreferrer"&gt;AndrewCoughlin&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/11/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article explains how to trigger Azure Functions from Blob Storage events using Azure Event Grid for real-time file processing. It outlines a step-by-step approach: create and deploy an Azure Function with an Event Grid trigger, set up an Event Grid subscription for BlobCreated events, and validate the process by uploading a blob. The method minimizes latency and avoids polling, making it suitable for enterprise scenarios. Key pitfalls include creating subscriptions before the function exists and misconfigurations. The article provides sample code and emphasizes the solution's simplicity, reliability, and operational transparency.&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/tls-certificate-pinning-and-best-practices-in-azure-open-source-relational-datab/4519531" target="_blank" rel="noopener noreferrer"&gt;TLS Certificate Pinning and Best Practices in Azure Open-Source Relational Databases&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/tameikal/394903" target="_blank" rel="noopener noreferrer"&gt;TameikaL&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/13/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt;&amp;nbsp;The article explains TLS certificate pinning and its implications for Azure open-source relational databases (PostgreSQL, MySQL). Certificate pinning enhances client-side security but increases operational risk, especially during certificate rotations, by causing connection failures if certificates change. Unlike Azure SQL, where certificate validation is platform-managed, Azure OSS databases use client-managed trust. The article advises against certificate pinning and recommends trusting documented root CAs, using standard TLS validation modes, and maintaining up-to-date trust stores to ensure secure and resilient client connections during certificate updates.&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/azure-ddos-protection--azure-waf-a-layered-defense-for-modern-ddos-attacks/4523745" target="_blank" rel="noopener noreferrer"&gt;Azure DDoS Protection &amp;amp; Azure WAF: A Layered Defense for Modern DDoS Attacks&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/saikishor/2933317" target="_blank" rel="noopener noreferrer"&gt;saikishor&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/28/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article explains how Microsoft Azure provides a layered defense against modern DDoS attacks by combining platform-level infrastructure protection, Azure DDoS Protection for network-level threats (Layers 3/4), and Azure Web Application Firewall (WAF) for application-layer (Layer 7) attacks. This multi-tiered approach ensures comprehensive mitigation by addressing both high-volume network floods and sophisticated application-level threats, using adaptive techniques, rate limiting, bot protection, and real-time analytics. The article emphasizes that a defense-in-depth strategy—leveraging both Azure DDoS Protection and WAF—is essential for safeguarding internet-facing applications and maintaining service 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/azureinfrastructureblog/scaling-github-advanced-security-in-azure-devops-with-a-single-reusable-yaml-tem/4518410" target="_blank" rel="noopener noreferrer"&gt;Scaling GitHub Advanced Security in Azure DevOps with a single reusable YAML template&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/paulams732/3255182" target="_blank" rel="noopener noreferrer"&gt;Paulams732&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/11/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article describes how to streamline GitHub Advanced Security (GHAS) integration in Azure DevOps by using a single, reusable YAML pipeline template. This approach dynamically detects repository content, runs only relevant security scans for application code and infrastructure-as-code, and centralizes configuration and reporting. It eliminates the need for multiple pipelines, reduces maintenance, ensures consistent security coverage, and supports polyglot and mixed repositories, resulting in a scalable and efficient DevSecOps process. Key lessons include the importance of detection-driven execution, dynamic configuration, and unified workflows for effective security management across diverse codebases.&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/building-ai-guardian-extension-ai-detection-and-enterprise-ai-security/4521125" target="_blank" rel="noopener noreferrer"&gt;Building AI Guardian Extension: AI Detection and Enterprise AI Security&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/ranjsharma/2999223" target="_blank" rel="noopener noreferrer"&gt;ranjsharma&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/19/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article discusses the security and governance challenges posed by rapid enterprise adoption of generative AI tools, focusing on the risks of "Shadow AI"—the unauthorized use of AI platforms that can lead to data leakage and compliance violations. It introduces the AI Guardian Extension, a platform that autonomously detects and protects against Shadow AI by monitoring AI interactions, preventing sensitive data exposure, blocking risky prompts, and generating compliance reports, thereby enabling safe, compliant, and visible enterprise AI usage.&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-migrate-your-regional-virtual-machines-to-availability-zones/4517298" target="_blank" rel="noopener noreferrer"&gt;Public Preview: Migrate your regional virtual machines to availability zones&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/micahmckittrick/86476" target="_blank" rel="noopener noreferrer"&gt;micahmckittrick&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/07/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has announced a public preview feature enabling Azure users to migrate regional (nonzonal) Virtual Machines (VMs) and VM Scale Sets (VMSS Flex) into specific availability zones without rebuilding resources. The migration preserves VM names, disks, IPs, and other properties. This improves fault isolation, compliance, and disaster recovery. The process involves deallocating the VM, assigning it to a zone, and restarting it. Migration is one-way and must be done per VM. Certain configurations, like Basic SKU IPs and unmanaged disks, are not supported. Users are advised to roll out migrations in batches for production workloads.&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/use-azure-container-registry-as-an-upstream-source-for-artifact-cache/4517102" target="_blank" rel="noopener noreferrer"&gt;Use Azure Container Registry as an Upstream Source for Artifact Cache&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/toddysm/931088" target="_blank" rel="noopener noreferrer"&gt;toddysm&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/05/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Container Registry (ACR) now supports using another ACR as an upstream source for artifact cache, enabling secure image promotion and distribution within organizations. This feature allows registries to cache images from other ACRs, with user-assigned managed identities (UAMI) supported for authentication, improving security by eliminating credential management. Common scenarios include promoting images between Dev and Prod registries and implementing hub-and-spoke registry topologies. The setup uses Azure CLI, requires proper RBAC permissions, and works best within the same tenant. Cross-tenant and some network configurations have limited support; portal integration is coming soon.&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/how-to-use-instance-mix-with-azure-virtual-machine-scale-sets/4522574" target="_blank" rel="noopener noreferrer"&gt;How to use Instance Mix with Azure 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/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; 05/24/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Instance Mix for Azure Virtual Machine Scale Sets allows you to specify up to five compatible VM sizes in a single scale set (Flexible orchestration mode), enhancing scalability, cost optimization, and provisioning success. Azure selects VM sizes during scale-out based on your chosen allocation strategy (LowestPrice, CapacityOptimized, or Prioritized). Best for stateless, horizontally scalable workloads, Instance Mix requires similar VM types, compatible architectures, and pre-checked quotas. It’s configured via Azure CLI or portal, with operational tips for optimal use. Avoid mixing very different VM types, and always verify availability and quotas before production deployment.&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/the-end-is-nigh-for-des-and-an-update-for-hunting-down-rc4/4499821" target="_blank" rel="noopener noreferrer"&gt;The End is Nigh for DES and an Update for hunting down RC4&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; 05/08/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft is finalizing the removal of DES and RC4 encryption types from Windows Kerberos authentication to enhance security. The article provides updated XML filters and event forwarding methods to help administrators identify and track the use of DES and RC4 in their environments. It also includes resources, scripts, and guidance for transitioning to stronger cryptography, with references to related Microsoft support articles and previous blog posts. Note: The described Event Forwarding methods are not yet compatible with Server 2025 but will be updated in the future.&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/windows-365-for-agents-run-ai-agents-in-cloud-pcs-across-real-applications/4523433" target="_blank" rel="noopener noreferrer"&gt;Windows 365 for Agents: run AI agents in Cloud PCs across real applications&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; 05/27/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Windows 365 for Agents, now in public preview, enables AI agents to autonomously execute real workflows across applications—including legacy and UI-based systems—within secure, policy-controlled Cloud PCs. This represents a shift from API-based automation, allowing agents to complete complex tasks like processing invoices or updating CRM data while maintaining enterprise security and control. Administrators can define boundaries and monitor agent activity, ensuring agents operate safely without impacting production systems. Windows 365 for Agents thus offers a secure, dedicated environment for scalable, autonomous AI workflow automation across diverse software 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/azurestorageblog/from-scale-to-breakthrough-azure-netapp-files-sets-a-new-cloud-benchmark-for-eda/4520890" target="_blank" rel="noopener noreferrer"&gt;From Scale to Breakthrough: Azure NetApp Files Sets a New Cloud Benchmark for EDA Performance&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/geertvanteylingen/222853" target="_blank" rel="noopener noreferrer"&gt;GeertVanTeylingen&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/22/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article highlights Azure NetApp Files’ new “large volume breakthrough mode,” which sets a benchmark for cloud storage in Electronic Design Automation (EDA) workloads. Independently validated SPECstorage® 2020 benchmarks show this mode enables exceptional scalability and consistent sub-millisecond latency, supporting thousands of parallel EDA jobs without performance bottlenecks. Both single and scaled configurations demonstrated linear scaling in throughput and concurrency, empowering faster, more efficient chip design cycles. As a result, Azure NetApp Files transforms cloud storage from a limiting factor to a strategic enabler for modern, high-performance semiconductor design workflows.&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/modernizing-azure-virtual-desktop-with-nerdio-and-azure-files/4516542" target="_blank" rel="noopener noreferrer"&gt;Modernizing Azure Virtual Desktop with Nerdio and Azure Files&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/vybava_ramadoss/70516" target="_blank" rel="noopener noreferrer"&gt;Vybava_Ramadoss&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/04/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article discusses how organizations scaling Azure Virtual Desktop (AVD) face challenges with user profile storage, identity management, and cost efficiency. Nerdio Manager streamlines AVD deployment by integrating compute, storage, and identity management, reducing complexity and configuration drift. Azure Files Provisioned v2 enhances storage performance and cost efficiency, while Entra ID authentication simplifies identity architecture. Together, Nerdio and Azure Files enable faster, more reliable, and cost-effective AVD environments with improved user experience, especially during peak loads, and ensure consistent, audit-ready governance at enterprise scale.&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/cutover-strategy-for-azure-paas-services-a-step-by-step-guide-to-near-zero-downt/4517261" target="_blank" rel="noopener noreferrer"&gt;Cutover Strategy for Azure PaaS Services: A Step-by-Step Guide to Near Zero-Downtime Migrations&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/lapadman/3477420" target="_blank" rel="noopener noreferrer"&gt;lapadman&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/06/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article outlines a step-by-step cutover strategy for migrating enterprise applications to Azure PaaS with near zero downtime. Emphasizing phased parallel cutover, it recommends gradual traffic shifts, robust rollback plans, and continuous monitoring to minimize risk. High availability (HA) and disaster recovery (DR) must be integrated into each phase. Messaging systems, particularly Azure Service Bus, are highlighted as the most complex component. The guide details essential roles, tools, metrics, and checklists to ensure a safe, controlled migration, concluding that cutover and HA/DR should be treated as a unified process for successful Azure 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/azuregovernanceandmanagementblog/preview-cis-benchmarks-on-azure-now-for-windows-server/4523432" target="_blank" rel="noopener noreferrer"&gt;[Preview] CIS Benchmarks on Azure; Now for Windows 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/azure/blog/azuregovernanceandmanagementblog" target="_blank" rel="noopener noreferrer"&gt;Azure Governance and Management&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/amirb/2954344" target="_blank" rel="noopener noreferrer"&gt;AmirB&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/28/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft is announcing the preview of built-in CIS Benchmarks for Windows Server within Azure Policy and Machine Configuration, initially supporting Windows Server 2025. This expands their compliance offerings, which already cover Linux, to Windows environments managed by Azure and Arc. The solution allows flexible configuration, exportable compliance as code, and unified management across machine types. The preview starts in audit-only mode, with auto-remediation and enforcement planned. Future updates will add support for more Windows editions, granular rule enforcement, STIG baselines, and retire older, overlapping policies for streamlined compliance management in 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/azuregovernanceandmanagementblog/introducing-the-azure-resource-manager-mcp-server/4517521" target="_blank" rel="noopener noreferrer"&gt;Introducing the Azure Resource Manager MCP 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/azure/blog/azuregovernanceandmanagementblog" target="_blank" rel="noopener noreferrer"&gt;Azure Governance and Management&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/stevenbucher/1481362" target="_blank" rel="noopener noreferrer"&gt;stevenbucher&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/07/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article announces the public preview of the Azure Resource Manager MCP Server, a tool enabling AI agents to interact with Azure infrastructure via Azure Resource Manager. It allows agents to generate, validate, and execute Azure Resource Graph queries, deploy and manage ARM templates, and monitor deployments—all from natural language prompts. The server supports compliance audits, rapid provisioning, and policy checks, and integrates with GitHub Copilot. It respects Azure security policies and is initially available for VS Code, with more features and client support planned. Users can install and provide feedback 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/skills-hub-blog/the-power-behind-ai-your-brain/4508109" target="_blank" rel="noopener noreferrer"&gt;The power behind AI: Your brain&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/nency_yera/3427044" target="_blank" rel="noopener noreferrer"&gt;Nency_Yera&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/11/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article shares Nency Yera’s journey as a neurodivergent professional with ADHD who, despite having no coding background, leveraged AI tools like GitHub Copilot and VS Code by customizing them to fit her thinking style. With supportive leadership and a personalized, step-by-step approach, she built practical solutions for her workplace. The story emphasizes that neurodivergent brains are assets, and that AI becomes powerful when adapted to individual needs, enabling anyone—regardless of technical background—to create impactful tools and unlock new potential.&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/new-microsoft-certified-intelligent-applications-builder-associate-certification/4494118" target="_blank" rel="noopener noreferrer"&gt;New Microsoft Certified: Intelligent Applications Builder Associate Certification&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/libertymunson/50590" target="_blank" rel="noopener noreferrer"&gt;LibertyMunson&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/27/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has introduced the Certified: Intelligent Applications Builder Associate Certification, aimed at professionals building AI-powered business solutions using Microsoft Power Platform, Copilot, and natural language tools. To earn the certification, candidates must pass Exam AB-410 (beta), which validates skills in creating intelligent applications, automation, data models, and integrating AI agents. The first 300 test-takers before June 17, 2026, receive an 80% discount. Candidates should have experience with Dataverse, Power Apps, Power Automate, and Copilot features. The certification becomes generally available in July 2026, with preparation resources and study guides provided by Microsoft.&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/ansible--azure-arc-use-ansible-modules-to-deploy-and-manage-azure-arc-machine-ex/4521689" target="_blank" rel="noopener noreferrer"&gt;Ansible + Azure Arc: Use Ansible modules to deploy and manage Azure Arc machine extensions at scale&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/alinetran/1972499" target="_blank" rel="noopener noreferrer"&gt;alinetran&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/20/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has introduced new Ansible modules in the azure.azcollection for managing Azure Arc machine extensions at scale. These modules allow teams to automate the deployment, update, and removal of Azure Arc extensions through Ansible playbooks, streamlining extension lifecycle management across hybrid and multicloud environments. This integration eliminates the need for separate tools, enforces consistent configurations, supports compliance scenarios like centralized SSH access, and enhances visibility into extension states. The update strengthens Azure Arc’s position as a unified management platform for Windows and Linux servers using familiar automation workflows.&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/simplified-access-to-hotpatching-enabled-by-azure-arc-for-windows-server-2025/4521251" target="_blank" rel="noopener noreferrer"&gt;Simplified access to Hotpatching enabled by Azure Arc for Windows Server 2025&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/sharmajyoti/2761878" target="_blank" rel="noopener noreferrer"&gt;sharmajyoti&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/19/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Windows Server 2025 introduces hotpatching enabled by Azure Arc, allowing security updates without reboots across hybrid and multicloud environments at no extra cost. Eligible servers must be connected to Azure Arc and have Virtualization-based Security enabled. Azure Update Manager and other tools enable centralized patch management, improving uptime and simplifying compliance. Hotpatching delivers monthly security updates, with quarterly cumulative updates requiring a restart. Existing enrolled machines continue receiving hotpatches without additional action, and hotpatching remains free for Azure-hosted servers. Azure Arc also provides unified governance, monitoring, and lifecycle management for diverse server 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/finopsblog/whats-new-in-finops-toolkit-14-%E2%80%93-april-2026/4519497" target="_blank" rel="noopener noreferrer"&gt;What's new in FinOps toolkit 14 – April 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; 05/13/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; FinOps toolkit 14 introduces AI integration via a Copilot Studio agent template, enabling users to query FinOps hub data in natural language. It adds support for ingesting Azure Advisor and custom optimization recommendations, simplifies hub deployment options, and previews a new dataset for commitment discount eligibility. The release also delivers various fixes and enhancements across guides, Power BI, workbooks, and the PowerShell module. Looking ahead, the toolkit will deepen AI features, expand data support, and offer premium services to further help organizations optimize and manage cloud costs in Microsoft Azure 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/azuretoolsblog/azure-cli-on-macos-upcoming-installation-changes/4518596" target="_blank" rel="noopener noreferrer"&gt;Azure CLI on macOS: Upcoming Installation Changes&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; 05/11/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft is updating how Azure CLI is installed on macOS to better meet security and enterprise requirements. Starting with version 2.86.0 (Preview), Azure CLI will shift from Homebrew Core to new options: Homebrew Cask (recommended) and an offline tarball for air-gapped environments. These changes enable distribution of precompiled, signed, and notarized binaries, aligning with macOS security standards. Homebrew Core remains available during the transition, but users are encouraged to adopt the new methods and provide feedback. Full rollout details and installation instructions are available on Microsoft Learn.&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/from-prompt-to-production-open-in-vs-code-for-terraform-in-azure-copilot/4494931" target="_blank" rel="noopener noreferrer"&gt;From Prompt to Production: Open in VS Code for Terraform in Azure Copilot&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/jingwei_wang/1561384" target="_blank" rel="noopener noreferrer"&gt;Jingwei_Wang&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/12/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft has introduced "Open in VS Code" for Terraform in Azure Copilot, enabling users to move seamlessly from AI-generated Terraform code in Azure Portal to real deployments within an integrated, guided workflow. This feature supports immediate editing, validation, and deployment in a browser-based VS Code environment, with built-in guidance for backend configuration and deployment. Users can select from Azure Storage, Terraform Cloud, or a temporary workspace for state management. The solution streamlines Infrastructure as Code processes for both beginners and enterprises, now in public preview, with future plans for enhanced CI/CD and editor integrations.&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/understanding-and-building-an-azure-hybrid-meshed-hub-spoke-topology/4516879" target="_blank" rel="noopener noreferrer"&gt;Understanding and building an Azure Hybrid Meshed Hub-Spoke Topology&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/svenbaeck/1876236" target="_blank" rel="noopener noreferrer"&gt;Svenbaeck&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/18/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article explains how to design a secure, scalable Azure hybrid network using a meshed hub-spoke topology. Centralized hubs control all traffic and security, preventing uncontrolled lateral communication between spokes and supporting hybrid connectivity. Key design principles include controlled routing in gateways and spokes, proper VNet peering, and meshing hubs for multi-region setups. Azure Firewalls or NVAs in the hub enable traffic inspection and policy enforcement. The approach simplifies management, enhances security, and supports regional independence and fault isolation, making it suitable for enterprise-scale Azure environments. Clear address planning and consistent configuration are emphasized for effective operation.&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/simplify-virtual-wan-spoke-connectivity-at-scale-with-azure-virtual-network-mana/4523055" target="_blank" rel="noopener noreferrer"&gt;Simplify Virtual WAN Spoke Connectivity at Scale with Azure Virtual Network Manager&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/jay-li/1197988" target="_blank" rel="noopener noreferrer"&gt;Jay-Li&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/26/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Azure Virtual Network Manager (AVNM) integrates with Azure Virtual WAN to simplify and automate spoke connectivity, routing, and security policy management across large-scale hub-and-spoke network architectures. By grouping virtual networks and applying centralized connectivity and routing policies, AVNM reduces repetitive manual configuration, ensures operational consistency, and enables bulk onboarding, dynamic updates, and incremental deployments. This integration streamlines operations, enhances scalability, and provides robust security controls, making it easier for organizations to manage complex Azure networking environments confidently and efficiently.&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/building-resilient-networks-for-ai-supercomputers/4516919" target="_blank" rel="noopener noreferrer"&gt;Building resilient networks for AI supercomputers&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/jithinjose/324164" target="_blank" rel="noopener noreferrer"&gt;jithinjose&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/06/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article details Microsoft’s networking innovations for the Fairwater AI supercomputer, focusing on resilience and efficiency at extreme GPU scale. Central to this is the Multipath Reliable Connection (MRC), a new, open-source transport protocol that distributes data across multiple paths, enabling robust, high-utilization GPU clusters even during routine network faults. Combined with a two-tier multiplane topology and static SRv6 routing, this approach minimizes disruptions, improves training throughput, and simplifies failure recovery. Microsoft, in partnership with industry leaders, is open-sourcing MRC and related tools to advance resilient AI infrastructure across the ecosystem.&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/distributing-model-weights-to-your-ai-cluster-a-faster-pre-flight-on-aks-and-slu/4517294" target="_blank" rel="noopener noreferrer"&gt;Distributing model weights to your AI cluster: a faster pre-flight on AKS and Slurm&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/pauledwards/363080" target="_blank" rel="noopener noreferrer"&gt;pauledwards&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/06/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article introduces "azcp-cluster", a tool for efficiently distributing large AI model checkpoints across multi-node GPU clusters on Azure. Instead of each node downloading the full dataset separately—causing slowdowns, increased costs, and potential Azure storage throttling—azcp-cluster shards the download across nodes, then broadcasts data at high-speed over InfiniBand. This approach reduces egress costs, maximizes fabric speed, and simplifies cluster setup on Slurm and AKS. Practical deployment examples, Docker integration, and Kubernetes scheduling strategies are provided, with recommendations for both merged-image and init-container patterns. Benchmarks show significant speedups and cost savings.&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/windowsosplatform/share-the-moment-listen-together-with-shared-audio/4522401" target="_blank" rel="noopener noreferrer"&gt;Share the Moment: Listen Together with Shared Audio&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/blog/windowsosplatform" target="_blank" rel="noopener noreferrer"&gt;Windows OS Platform&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt; &lt;A href="https://techcommunity.microsoft.com/users/steven%20ilami/234436" target="_blank" rel="noopener noreferrer"&gt;Steven Ilami&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/26/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article introduces “Shared Audio,” a new Windows 11 feature that enables two users to wirelessly listen to audio from the same PC using separate Bluetooth LE Audio accessories, like headphones or hearing aids. This solves the longstanding limitation of one-audio-device connections, enhancing shared experiences during flights, study sessions, or road trips. Users can easily manage connections and individual volumes through Quick Settings. Shared Audio requires compatible LE Audio devices, Windows 11 (version 24H2 or newer), and suitable hardware. The feature aims to make group listening more accessible, convenient, and customizable for entertainment, productivity, and accessibility needs.&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/how-to-secure-azure-databricks-without-public-exposure-using-waf--private-endpoi/4517721" target="_blank" rel="noopener noreferrer"&gt;How to Secure Azure Databricks without Public Exposure using WAF + Private Endpoints&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/faizaanmerchant/3432847" target="_blank" rel="noopener noreferrer"&gt;FaizaanMerchant&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/11/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article outlines how to secure Azure Databricks using a Zero Trust Architecture by combining Azure Application Gateway with Web Application Firewall (WAF) and Private Endpoints. This approach eliminates public internet exposure, ensures all traffic is inspected and routed securely, and aligns with strict compliance requirements. The recommended architecture uses a Hub-and-Spoke model, disabling public access and enforcing internal and external access through WAF and private endpoints, respectively. Key considerations include proper DNS configuration, SSL setup, and custom WAF rules, ensuring secure, compliant, and seamless access for both internal and external users.&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/cloud-native-platforms-evolve/4520195" target="_blank" rel="noopener noreferrer"&gt;Cloud Native Platforms: Evolve&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/kishorekumarpattabiraman/3426309" target="_blank" rel="noopener noreferrer"&gt;KishoreKumarPattabiraman&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Published:&lt;/STRONG&gt; 05/21/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article argues that AI is transforming software engineering by augmenting workflows across the entire software development lifecycle—not just code generation. Success depends on disciplined adoption: turning individual AI prompts into reusable workflows, implementing robust guardrails, and maintaining clear boundaries for human judgment. Responsible AI, with practices ensuring fairness, transparency, safety, and accountability, is essential. Teams should measure AI by outcomes (like defect rates and lead time), not usage. The key is evolving engineering practices to leverage AI safely and effectively, making workflows, not individual suggestions, the core unit of value.&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/new-platform-sso-with-registration-during-automated-device-enrollment-on-macos/4519846" target="_blank" rel="noopener noreferrer"&gt;New Platform SSO with registration during Automated Device Enrollment on macOS&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; 05/14/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; Microsoft Intune now supports Platform Single Sign-On (PSSO) registration during Automated Device Enrollment (ADE) setup for macOS 26 and newer. With the new “Enable Registration During Setup” setting and Intune Company Portal version 5.2604.0+, users register their devices and sign in with Microsoft Entra credentials during Setup Assistant, enabling immediate access to work resources. This streamlines onboarding, reduces compliance gaps, authentication issues, and IT helpdesk tickets. The feature requires coordinated policies assigned to static user groups. Future updates aim to reduce multiple sign-in prompts for an even smoother enrollment experience.&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/migrating-frontline-mobile-devices-aligning-stakeholders-before-real-world-testi/4516511" target="_blank" rel="noopener noreferrer"&gt;Migrating frontline mobile devices: Aligning stakeholders before real-world testing&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; 05/01/2026&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; The article outlines the crucial steps for migrating frontline mobile devices by emphasizing the need to align stakeholders and processes before conducting real-world testing with Microsoft Intune. It highlights translating discovery findings into actionable decisions, identifying and aligning key operational and technical stakeholders, and ensuring readiness across licensing, identity, and device lifecycle areas. Real-world testing should validate end-to-end workflows, security, and supportability in operational conditions, not just device enrollment. Standardization can evolve post-testing, and clear ownership of success criteria is essential to achieve meaningful pilot outcomes and support future device management decisions.&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>Thu, 18 Jun 2026 21:36:23 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/check-this-out-cto-guide-may-june-2026/ba-p/4529349</guid>
      <dc:creator>TysonPaul</dc:creator>
      <dc:date>2026-06-18T21:36:23Z</dc:date>
    </item>
    <item>
      <title>Microsoft Security Copilot: AI-Driven Security Operations at Greater Scale</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/microsoft-security-copilot-ai-driven-security-operations-at/ba-p/4528912</link>
      <description>&lt;P class="lia-align-justify"&gt;At its core, Security Copilot is &lt;STRONG&gt;built to enhance every facet of security operations at machine speed&lt;/STRONG&gt;. It translates a vast array of inputs (Microsoft’s cloud-scale telemetry, threat intelligence feeds, security best practices, and enterprise-specific data) into &lt;STRONG&gt;tailored recommendations and summaries&lt;/STRONG&gt;, helping security teams &lt;STRONG&gt;“catch what others miss,” respond faster, and strengthen their expertise&lt;/STRONG&gt;. In the sections below, I explore the key security benefits of Security Copilot, its extensibility via third-party plugins and skills, and the value of its deep integration with Microsoft’s security ecosystem.&lt;/P&gt;
&lt;H1&gt;&lt;SPAN class="lia-text-color-10"&gt;Key Benefits for Security Operations&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;Security Copilot meaningfully improves &lt;STRONG&gt;threat detection, investigation, response, correlation of signals, and analyst productivity&lt;/STRONG&gt;. The table below summarizes these core security benefits and capabilities:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 98.1481%; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Security Operations Aspect&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Benefit with Security Copilot&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Threat Detection&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P class="lia-align-justify"&gt;&lt;STRONG&gt;Augmented detection of elusive threats:&lt;/STRONG&gt; Security Copilot leverages broad threat intelligence and comprehensive signals to identify subtle threats, anomalies, and attack patterns that might be missed through manual analysis. By reasoning over Microsoft’s vast security graph and global threat telemetry, it helps analysts &lt;EM&gt;“catch what others miss,”&lt;/EM&gt; ensuring &lt;STRONG&gt;unique or stealthy threats are surfaced&lt;/STRONG&gt;.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Incident Investigation&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P class="lia-align-justify"&gt;&lt;STRONG&gt;Faster, context-rich investigations:&lt;/STRONG&gt; Security Copilot can swiftly &lt;STRONG&gt;summarize and analyze incident data&lt;/STRONG&gt; from multiple sources, enhancing incident details with additional context from logs, alerts, and threat intel. It correlates related events and highlights root causes, giving analysts a &lt;STRONG&gt;consolidated understanding of complex incidents in minutes&lt;/STRONG&gt;. This enables quicker triage and deeper insights, so investigators know what happened and where to focus next.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Response &amp;amp; Remediation&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P class="lia-align-justify"&gt;&lt;STRONG&gt;Guided response and remediation:&lt;/STRONG&gt; Security Copilot not only identifies issues but also &lt;STRONG&gt;provides prescriptive guidance&lt;/STRONG&gt; on how to respond. It can suggest &lt;STRONG&gt;remediation steps and mitigation strategies&lt;/STRONG&gt; in plain language, helping analysts act decisively. For example, it may outline containment steps or orchestrate automated actions through integrated tools, significantly &lt;STRONG&gt;reducing response time to incidents&lt;/STRONG&gt;.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Signal Correlation&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P class="lia-align-justify"&gt;&lt;STRONG&gt;Holistic cross-domain correlation:&lt;/STRONG&gt; Because it taps into signals across identities, endpoints, email, cloud workloads, and more, Security Copilot automatically &lt;STRONG&gt;connects the dots among disparate alerts and data streams&lt;/STRONG&gt;. It presents unified incident narratives by linking related indicators (e.g., matching an endpoint malware alert with identity login anomalies and cloud logs), &lt;STRONG&gt;eliminating manual cross-tool correlation and uncovering hidden attack paths&lt;/STRONG&gt;. Analysts get a &lt;STRONG&gt;single cohesive view&lt;/STRONG&gt; of an incident across the kill chain.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Analyst Productivity&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P class="lia-align-justify"&gt;&lt;STRONG&gt;Boosted efficiency &amp;amp; skill elevation:&lt;/STRONG&gt; By automating repetitive tasks (like scanning logs, writing KQL queries, or summarizing reports) and supporting natural language interaction, Security Copilot &lt;STRONG&gt;reduces manual workload&lt;/STRONG&gt; and accelerates everyday tasks. This lets analysts focus on higher-value activities. In practice, teams using Security Copilot have seen &lt;STRONG&gt;significant productivity gains&lt;/STRONG&gt; – a recent study found &lt;STRONG&gt;23–47% improvement in SecOps task efficiency&lt;/STRONG&gt; after adoption. Junior analysts ramp up faster (learning from Copilot’s guidance), while senior analysts can handle more incidents with less fatigue.&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 class="lia-align-justify"&gt;These improvements translate into &lt;STRONG&gt;measurable security outcomes&lt;/STRONG&gt;. &lt;STRONG&gt;Incident response becomes faster and more consistent&lt;/STRONG&gt;, with &lt;EM&gt;mean time to resolution&lt;/EM&gt; reduced by &lt;STRONG&gt;30% on average within a few months of use&lt;/STRONG&gt; according to early research. Security Copilot’s ability to &lt;STRONG&gt;accelerate investigations and streamline tasks&lt;/STRONG&gt; drives down risk exposure and helps organizations make the most of their security investments. Ultimately, it &lt;STRONG&gt;strengthens an organization’s security posture&lt;/STRONG&gt; by augmenting human analysts with AI-driven speed, scale, and intelligence.&lt;/P&gt;
&lt;H1&gt;&lt;SPAN class="lia-text-color-10"&gt;Seamless Integration with the Microsoft Security Ecosystem&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P class="lia-align-justify"&gt;Another key strength of Security Copilot is its &lt;STRONG&gt;deep native integration with Microsoft’s security portfolio&lt;/STRONG&gt;. From day one, Security Copilot was &lt;EM&gt;“designed with integration in mind.”&lt;/EM&gt; It &lt;STRONG&gt;plugs directly into a broad range of Microsoft security products&lt;/STRONG&gt; — including &lt;STRONG&gt;Microsoft 365 Defender (XDR), Microsoft Sentinel (SIEM), Microsoft Entra (ID and access management), Microsoft Intune (endpoint management), Microsoft Purview (compliance), and more&lt;/STRONG&gt;. In practice, Security Copilot is available as both a &lt;EM&gt;standalone portal&lt;/EM&gt; and as an &lt;STRONG&gt;embedded side-by-side experience within these Microsoft security tools&lt;/STRONG&gt;. This means a security analyst working in Microsoft Sentinel or Defender can access Copilot’s capabilities without switching context: &lt;STRONG&gt;Copilot is right there in the workflow, ready to answer questions or assist with tasks in real time&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Because of this close integration, &lt;STRONG&gt;Security Copilot can access data and signals from across all Microsoft security solutions&lt;/STRONG&gt; that an organization uses. It operates over &lt;STRONG&gt;a unified security data estate&lt;/STRONG&gt; encompassing endpoints, identities, emails, applications, cloud workloads, data repositories, and beyond. The result is truly &lt;STRONG&gt;end-to-end visibility and protection&lt;/STRONG&gt;: Copilot can reason across diverse telemetry (e.g., correlating a device malware alert from Defender with cloud logs from Azure, or identity risk signals from Entra) to provide comprehensive insight. This unified approach &lt;STRONG&gt;eliminates silos and tool fragmentation&lt;/STRONG&gt; — analysts spend less time pivoting between separate consoles or manually stitching together information because Copilot synthesizes it automatically.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Moreover, &lt;STRONG&gt;leveraging the Microsoft ecosystem means Security Copilot can immediately add value without requiring a rip-and-replace of existing tools&lt;/STRONG&gt;. It acts as a &lt;STRONG&gt;“force multiplier” across the installed Microsoft Security stack&lt;/STRONG&gt;, maximizing the return on those investments by making them more effective and easier to use. For example, &lt;STRONG&gt;Copilot can turn a collection of raw alerts from different Microsoft products into a single, coherent incident storyline with actionable next steps&lt;/STRONG&gt;. This synergy leads to significant &lt;STRONG&gt;operational efficiency gains&lt;/STRONG&gt; and a more streamlined &lt;STRONG&gt;SOC workflow&lt;/STRONG&gt;, as analysts have a central AI assistant coordinating across all defenses on their behalf.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;By providing unified insights, reducing tool sprawl, and bringing together Microsoft’s best-in-class security technologies, &lt;STRONG&gt;Security Copilot emerges as a valuable asset for modern security teams&lt;/STRONG&gt;. It empowers organizations to practice &lt;STRONG&gt;“AI-first” security operations&lt;/STRONG&gt; – enabling defenders to work faster and smarter, while fully utilizing an integrated security ecosystem to protect the enterprise from evolving threats. In summary, Microsoft Security Copilot offers a &lt;STRONG&gt;compelling combination of advanced AI capabilities, extensibility, and seamless integration&lt;/STRONG&gt; that helps security teams achieve &lt;STRONG&gt;unprecedented speed, breadth, and efficiency&lt;/STRONG&gt; in defending their organizations. &lt;STRONG&gt;It enhances human expertise with machine-scale intelligence&lt;/STRONG&gt;, improving threat detection and response outcomes and transforming the way security operations centers operate for the better.&lt;/P&gt;
&lt;H1&gt;&lt;SPAN class="lia-text-color-10"&gt;Open Extensibility with Third-Party Plugins and Skills&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P class="lia-align-justify"&gt;A standout capability of Security Copilot is its &lt;STRONG&gt;extensible plugin architecture&lt;/STRONG&gt;, which allows it to incorporate external data sources and integrate with third-party security tools. &lt;STRONG&gt;Plugins&lt;/STRONG&gt; in Security Copilot are modular connectors that bring in specific data or perform defined actions (each plugin encapsulates certain “&lt;STRONG&gt;skills&lt;/STRONG&gt;,” such as running a KQL query, calling an API, or searching threat intel). Microsoft provides numerous &lt;STRONG&gt;pre-installed plugins&lt;/STRONG&gt; out-of-the-box for common Microsoft security services and workflows, and administrators can easily &lt;STRONG&gt;add or develop custom plugins to connect 3rd-party systems or bespoke data sources&lt;/STRONG&gt;. This design ensures that Security Copilot’s capabilities can expand and adapt to different environments.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Through both &lt;STRONG&gt;Microsoft-built and third-party plugins&lt;/STRONG&gt;, Security Copilot can tap into a wide variety of security data beyond the Microsoft stack. For example, &lt;STRONG&gt;supported third-party plugins let Copilot pull context from external solutions such as IT service management tools (e.g., ServiceNow)&lt;/STRONG&gt;, vulnerability management platforms, identity providers, network security appliances, and others. Plugins feed &lt;STRONG&gt;additional logs, alerts, and intelligence&lt;/STRONG&gt; into Copilot’s analysis, thereby enriching its understanding of incidents with non-Microsoft data and events. This means a SOC can leverage &lt;STRONG&gt;existing investments in third-party security products by having Security Copilot analyze and correlate those systems’ outputs&lt;/STRONG&gt; alongside Microsoft’s telemetry.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Microsoft and its partners have already created an &lt;STRONG&gt;ecosystem of Security Copilot plugins&lt;/STRONG&gt;. For instance, Microsoft announced &lt;STRONG&gt;15+ new third-party plugins&lt;/STRONG&gt; at Ignite 2024, spanning categories like &lt;STRONG&gt;threat intelligence&lt;/STRONG&gt; (e.g., integrating feeds from providers like CrowdSec, Cybersixgill, GreyNoise) and &lt;STRONG&gt;device/network/identity management&lt;/STRONG&gt; tools (e.g., Red Canary, Netskope, Tanium, CyberArk, etc.). These plugins bring rich external data on threat actors, indicators of compromise, vulnerabilities, device health, user activity, and more, allowing Copilot to provide even more comprehensive analyses and recommendations.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Crucially, &lt;STRONG&gt;customers can build their own plugins and skills&lt;/STRONG&gt; if needed, using Security Copilot’s developer tools and APIs. This means an enterprise could integrate a proprietary threat feed, custom data store, or even trigger custom response workflows via Copilot, tailoring the AI assistant to their unique security environment. Thanks to &lt;STRONG&gt;secure design and admin controls&lt;/STRONG&gt;, organizations maintain full governance over which plugins are enabled and how they consume resources. In summary, Security Copilot’s open, plugin-based extensibility ensures that it can &lt;STRONG&gt;grow with an organization’s needs&lt;/STRONG&gt;, incorporating &lt;STRONG&gt;any relevant third-party data or workflow&lt;/STRONG&gt; to further &lt;STRONG&gt;enhance threat analysis and incident response&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H1&gt;&lt;SPAN class="lia-text-color-10"&gt;Technical Resources:&lt;/SPAN&gt;&lt;/H1&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/copilot/security/" target="_blank"&gt;Security Copilot Main documentation site&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/copilot/security/agents-overview" target="_blank"&gt;Security Copilot agents&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/copilot/security/plugin-overview" target="_blank"&gt;Security Copilot plugins&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/copilot/security/whats-new-copilot-security" target="_blank"&gt;What’s new for Security Copilot&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/copilot/security/security-copilot-application-card" target="_blank"&gt;Responsible AI in Security Copilot&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/Security-Copilot/tree/main" target="_blank"&gt;Official Security Copilot GitHub&lt;/A&gt;&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/microsoftthreatprotectionblog/operationalizing-microsoft-security-copilot-to-reinvent-soc-productivity/3944877" data-lia-auto-title="How to operationalize Security Copilot and increase SOC productivity" data-lia-auto-title-active="0" target="_blank"&gt;How to operationalize Security Copilot and increase SOC productivity&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 18 Jun 2026 20:49:10 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/microsoft-security-copilot-ai-driven-security-operations-at/ba-p/4528912</guid>
      <dc:creator>edgarus71</dc:creator>
      <dc:date>2026-06-18T20:49:10Z</dc:date>
    </item>
    <item>
      <title>Security Copilot RBAC for Embedded Experience in Unified Security Platform</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/security-copilot-rbac-for-embedded-experience-in-unified/ba-p/4528833</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Introduction&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The evolution of Security Operations Centers (SOC) is increasingly driven by AI-powered capabilities that improve efficiency, accuracy, and response time. Microsoft Security Copilot represents a significant advancement in this space by embedding AI-driven assistance directly within security platforms such as Microsoft Defender XDR, Microsoft Sentinel, and Microsoft Entra.&lt;/P&gt;
&lt;P&gt;The concept of &lt;STRONG&gt;embedded experience&lt;/STRONG&gt; is central to this transformation. Rather than operating as a standalone interface, Security Copilot is integrated within existing security tools, allowing analysts to invoke AI-generated insights directly during investigations. This reduces the need for tool switching and accelerates decision-making.&lt;/P&gt;
&lt;P&gt;The purpose of this document is to define and explain the &lt;STRONG&gt;Role-Based Access Control (RBAC) model&lt;/STRONG&gt; required to securely enable this embedded experience. It provides a structured understanding of how access is governed across multiple layers, how these layers interact, and how organizations can align permissions with SOC workflows while maintaining a least-privilege security posture.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Understanding Embedded Experience&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Security Copilot in embedded mode operates within the context of the host platform. When invoked from Defender or Sentinel, it does not function independently but instead consumes data already accessible to the user. This model ensures that Copilot enhances visibility without expanding access boundaries.&lt;/P&gt;
&lt;P&gt;This behavior is governed by an &lt;STRONG&gt;On-Behalf-Of (OBO) model&lt;/STRONG&gt;, where Security Copilot leverages the permissions of the authenticated user. It does not introduce new entitlements or override existing RBAC configurations.&lt;/P&gt;
&lt;P&gt;As a result, the insights generated by Copilot are always limited to what the user is already authorized to see, reinforcing Zero Trust principles and preventing unauthorized data exposure.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Prerequisites for Embedded Experience&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;To enable Security Copilot in an embedded environment, organizations must establish foundational prerequisites that ensure seamless and secure operation.&lt;/P&gt;
&lt;P&gt;First, access to underlying platforms such as Microsoft Defender XDR, Microsoft Sentinel, and Microsoft Entra must already be provisioned. Since Copilot is not a standalone data source, it cannot function without these integrations.&lt;/P&gt;
&lt;P&gt;Second, RBAC alignment across identity, platform, and service layers must be configured correctly. Misalignment can lead to incomplete results, restricted functionality, or inconsistent analyst experiences.&lt;/P&gt;
&lt;P&gt;Finally, governance processes such as access review, monitoring, and adherence to least privilege principles should be implemented. These controls ensure that Copilot usage remains compliant, auditable, and aligned with organizational security policies.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;RBAC Framework for Security Copilot&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Security Copilot adopts a &lt;STRONG&gt;multi-layer RBAC model&lt;/STRONG&gt; consisting of three tightly integrated layers. These layers collectively determine whether a user can access Copilot features and what data they can retrieve.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;RBAC Layer Mapping&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;RBAC Layer&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Role Type&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;td&gt;
&lt;P&gt;&lt;STRONG&gt;Example Roles&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Access Impact&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Security Copilot Platform&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Feature access control&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Determines who can use Copilot capabilities&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Security Copilot Owner, Security Copilot Contributor&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Enables use of Copilot features but does not grant data access&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Microsoft Entra ID&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Identity and directory governance&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Controls access to identity data and reports&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Security Reader, Reports Reader, Security Administrator&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Governs identity insights and directory visibility&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Service-Specific RBAC&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Data access control&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Defines access to security data within services&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Defender Security Reader, Sentinel Reader&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Determines what Copilot can retrieve and present&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;This layered approach ensures that no single role grants full access. All three layers must align for complete functionality.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Security Copilot Platform Roles&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Security Copilot platform roles control who can interact with the Copilot interface and execute AI-driven workflows.&lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;Security Copilot Owner role&lt;/STRONG&gt; provides administrative control over Copilot configuration, including access management and platform-level settings. This role is typically assigned to administrators responsible for governance and operational enablement.&lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;Security Copilot Contributor role&lt;/STRONG&gt; enables analysts to run prompts, perform investigations, and interact with Copilot features during daily SOC operations. However, this role does not grant visibility into security data by itself.&lt;/P&gt;
&lt;P&gt;This clear separation ensures that Copilot remains a controlled interface layer rather than a source of privilege escalation.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Entra ID Roles&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Microsoft Entra roles govern access to identity-related data, which is critical for security operations involving user behavior, sign-in logs, and directory insights.&lt;/P&gt;
&lt;P&gt;Roles such as &lt;STRONG&gt;Security Reader&lt;/STRONG&gt; provide read-only visibility into security data, while &lt;STRONG&gt;Reports Reader&lt;/STRONG&gt; enables access to reporting and analytics capabilities. In certain advanced cases, the &lt;STRONG&gt;Security Administrator role&lt;/STRONG&gt; may be required for configuration-level actions.&lt;/P&gt;
&lt;P&gt;The document emphasizes avoiding excessive privilege assignment, particularly the use of Global Administrator roles for daily operations, as this conflicts with least privilege principles.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Service-Specific RBAC Roles&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Service-level roles determine the data sources that Security Copilot can access when embedded in platforms.&lt;/P&gt;
&lt;P&gt;In Microsoft Defender XDR, roles such as Security Reader allow access to alerts, incidents, and endpoint data. In Microsoft Sentinel, Sentinel Reader provides access to log data, analytics, and incidents. In Microsoft Entra, roles like Reports Reader provide access to identity insights.&lt;/P&gt;
&lt;P&gt;Copilot cannot retrieve or analyze data beyond what these roles permit. The output it generates is always constrained to the user’s effective permissions across these services.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Unified RBAC Behavior in Embedded Experience&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In an embedded scenario, all three RBAC layers are evaluated simultaneously.&lt;/P&gt;
&lt;P&gt;When a SOC analyst invokes Copilot in Defender, the system validates whether the user has permission to use Copilot, access identity data, and retrieve Defender-specific insights. Only when all these conditions are satisfied does Copilot provide a comprehensive output.&lt;/P&gt;
&lt;P&gt;This ensures that Copilot responses are both &lt;STRONG&gt;contextually rich and access-compliant&lt;/STRONG&gt;, eliminating the risk of unauthorized data exposure while maintaining operational efficiency.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Security Copilot Core Use Cases&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Security Copilot enables a layered set of capabilities that span both analyst interaction patterns and agent-driven execution models. These use cases collectively enhance SOC efficiency, decision-making, and operational scalability.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Use Case Mapping Table&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;Use Case&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Embedded / Agent Example&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Value to SOC&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Summarization&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Transforms complex alerts, incidents, and telemetry into structured, human-readable insights by correlating signals across multiple sources&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Summarizing a Defender XDR incident involving endpoint, identity, and cloud alerts into a unified attack narrative&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Reduces analyst fatigue and significantly accelerates triage by eliminating manual data aggregation&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Guided Response&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Provides contextual, step-by-step investigative guidance and recommended remediation actions based on observed patterns and threat intelligence&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Suggesting investigation paths in Sentinel, including pivoting to identity logs, device timeline, and lateral movement indicators&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Improves consistency in investigations and enables less experienced analysts to operate effectively&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Script Analysis&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Evaluates scripts, queries, and command-line activities to identify malicious patterns, errors, or optimization opportunities&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Analyzing PowerShell scripts or KQL queries used in threat hunting scenarios to detect obfuscation or suspicious logic&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Enhances detection accuracy and reduces the risk of missing critical indicators&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Reporting&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Generates structured incident summaries, executive reports, and compliance-ready documentation with contextual insights&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Producing incident summaries for leadership or compliance teams with both technical and business context&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Improves communication, supports audit readiness, and reduces manual reporting overhead&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;STRONG&gt;Agent-Driven SOC Use Cases (Expanded Capabilities)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;With the introduction of Security Copilot agents, the platform extends beyond assistance into orchestrated, intelligence-driven operations across SOC workflows.&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;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Agent-Based Use Case&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Real Agent Example&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;SOC Impact&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;Dynamic Threat Detection&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Continuously analyzes telemetry to identify previously undetected or weak signals across the attack surface&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Dynamic Threat Detection Agent&lt;/STRONG&gt; correlates signals across Defender workload telemetry to surface hidden threats&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Improves detection coverage and reduces the likelihood of missed attacks&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Threat Intelligence Correlation &amp;amp; Briefing&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Aggregates internal and external intelligence sources to generate contextual threat insights aligned to organizational risk&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Threat Intelligence Briefing Agent&lt;/STRONG&gt; produces structured intelligence reports based on attack patterns and exposure context&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Enhances situational awareness and supports proactive defense strategies&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Advanced Threat Hunting&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Enables hypothesis-driven and AI-assisted threat hunting by generating queries, exploring telemetry, and correlating historical data&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Advanced Threat Hunting Agent&lt;/STRONG&gt; builds and executes queries across Defender and Sentinel datasets for proactive investigation and telemetry exploration&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Accelerates threat discovery and reduces reliance on manual query development&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Security Analysis &amp;amp; Threat Prioritization&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Performs AI-driven analysis of security telemetry to identify high-risk patterns, prioritize threats, assess risk exposure, and recommend investigative actions&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Security Analyst Agent&lt;/STRONG&gt; analyses password spray attacks, ransomware activity, malware campaigns, identity abuse, and other security risks by generating telemetry-driven assessments and recommendations&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Improves analyst productivity, prioritizes high-impact threats, and enables faster decision making&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Security Triage Automation&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Automates alert prioritization and classification by adding contextual enrichment and reducing noise&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Security Triage Agent / Phishing Triage Agent&lt;/STRONG&gt; evaluates alerts and distinguishes between real threats and false positives&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Reduces alert fatigue and improves prioritization accuracy in high-volume environments&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;End-to-End Investigation Orchestration&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Performs multi-step investigation by gathering signals, correlating activity, and building attack timelines&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Security Analyst Agent&lt;/STRONG&gt; investigates incidents across identity, endpoint, email, cloud, and data signals to produce a consolidated incident narrative&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Reduces Mean Time to Investigate (MTTI) and ensures consistent investigation outcomes&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Cross-Domain Threat Correlation&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Connects signals across identity, endpoint, cloud, email, and data domains to identify multi-stage attack chains&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Agents operating across Defender, Entra, Sentinel, and Security Copilot correlate activities such as phishing leading to identity compromise and lateral movement&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Breaks down silos and enables holistic threat visibility across the environment&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Remediation &amp;amp; Response Enablement&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Identifies vulnerable assets and supports remediation workflows through contextual recommendations&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Agents integrated with endpoint and policy systems suggest patching actions, containment actions, and configuration changes based on detected risks&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Improves response effectiveness and strengthens overall security posture&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;Each of these use cases operates within the RBAC boundaries defined earlier, ensuring secure and context-aware outputs.&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;Mapping Use Cases to SOC Processes&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The four core use cases align directly with SOC operational stages, enabling a consistent and repeatable analysis model.&lt;/P&gt;
&lt;P&gt;Summarization plays a significant role during the &lt;STRONG&gt;detection and triage phase&lt;/STRONG&gt;, where analysts need quick clarity on incoming alerts. Instead of manually analyzing raw data, Copilot provides a structured overview, helping analysts determine priority and relevance.&lt;/P&gt;
&lt;P&gt;Guided response becomes critical during the &lt;STRONG&gt;investigation and response phase&lt;/STRONG&gt;, where decision-making speed is essential. By suggesting next steps and correlating data points, Copilot assists analysts in navigating complex attack scenarios.&lt;/P&gt;
&lt;P&gt;Script analysis supports both &lt;STRONG&gt;threat hunting and investigation&lt;/STRONG&gt;, allowing analysts to validate scripts, queries, or automation logic. This reduces the risk of overlooking malicious behavior embedded in scripts.&lt;/P&gt;
&lt;P&gt;Reporting aligns with the &lt;STRONG&gt;post-incident and compliance phase&lt;/STRONG&gt;, where structured documentation is required. Copilot generates summaries that can be shared with leadership or compliance teams, ensuring clarity and consistency.&lt;/P&gt;
&lt;P&gt;Together, these use cases create a continuous cycle of detection, investigation, response, and reporting, fully integrated with SOC workflows.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Security Copilot’s embedded experience represents a transformative shift in how AI is integrated into security operations. By embedding intelligence directly within platforms such as Defender and Sentinel, it enhances analyst productivity while maintaining strict governance controls.&lt;/P&gt;
&lt;P&gt;The three-layer RBAC model, consisting of Security Copilot roles, Microsoft Entra roles, and service-specific roles, ensures that access is both secure and compliant with least privilege principles. The On-Behalf-Of model further guarantees that Copilot does not expand access beyond existing permissions.&lt;/P&gt;
&lt;P&gt;The inclusion of structured use cases such as summarization, guided response, script analysis, and reporting enables organizations to operationalize Copilot effectively across SOC processes.&lt;/P&gt;
&lt;P&gt;When RBAC is properly aligned and integrated with SOC workflows, Security Copilot becomes a powerful enabler of faster investigations, improved accuracy, and enhanced security posture—all while maintaining strict control over data access and governance.&lt;/P&gt;</description>
      <pubDate>Wed, 17 Jun 2026 11:10:30 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/security-copilot-rbac-for-embedded-experience-in-unified/ba-p/4528833</guid>
      <dc:creator>SantoshPargi</dc:creator>
      <dc:date>2026-06-17T11:10:30Z</dc:date>
    </item>
    <item>
      <title>Automating Daily MDE Compliance Monitoring Across Azure VMs</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/automating-daily-mde-compliance-monitoring-across-azure-vms/ba-p/4528274</link>
      <description>&lt;H2&gt;The Problem We’re Solving&lt;/H2&gt;
&lt;P&gt;Most security teams have no automated way to know when a VM silently falls out of MDE coverage, whether because the agent stopped, the VM was newly provisioned without onboarding, or the device stopped reporting. This Logic App closes that gap and puts the right information in front of the right people every day.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Disclaimer: This solution is designed for Azure Virtual Machines only. For non-Azure VMs onboarded to Microsoft Defender for Endpoint through Azure Arc, a separate companion blog will be published soon to cover that scenario.&lt;/EM&gt;&lt;/P&gt;
&lt;H3&gt;What changes once you deploy this&lt;/H3&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;Challenge Without This Logic App&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;How This Logic App Helps&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Security gaps go undetected for days or weeks&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Any VM that is not onboarded or has stopped reporting is caught within 24 hours of the daily run&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;No automated owner notification&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The VM's ServerOwner tag is read automatically, and the owner is emailed directly with full compliance details&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;VMs with no owner fall through the cracks&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Flagged explicitly in the IT summary report with instructions for how to assign the tag&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Manual compliance reporting is time-consuming&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Full CSV report auto-attached to every daily IT summary; no manual extraction needed&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Agents silently stop reporting after onboarding&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Detects "Onboarded, Not Reporting" as a distinct status, separate from "Not Onboarded"&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Large multi-subscription environments are hard to cover&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Paginated queries across all enabled subscriptions; every running VM is checked&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;H3&gt;Compliance States Detected&lt;/H3&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;Compliance Status&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Priority&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;What It Means&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Not Onboarded&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;P2, High&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The VM is running in Azure but has never appeared in MDE. There is zero security telemetry for this machine.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Onboarded, Not Reporting&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;P3, Medium&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The VM was previously enrolled but has not checked in within the configured window. The MDE agent may be stopped or the VM may have lost network connectivity to MDE.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Compliant&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;No alert&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;VM is onboarded and checked in within the required time window. It is excluded from all notifications.&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;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;Running VMs Only: &lt;/STRONG&gt;This workflow queries Azure Resource Graph with a filter of powerState == "VM running". Deallocated, stopped, and powered-off VMs are intentionally excluded — they are not expected to report to MDE while offline. Only machines that are turned on are evaluated.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 100.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;Workflow Architecture&lt;/H2&gt;
&lt;P&gt;The workflow runs as a sequential daily pipeline. All Azure VM data and MDE device data are collected into memory first, then each VM is evaluated in a single For Each loop.&lt;/P&gt;
&lt;H3&gt;Execution Pipeline&lt;/H3&gt;
&lt;OL&gt;
&lt;LI&gt;Recurrence trigger fires daily at 08:00 IST.&lt;/LI&gt;
&lt;LI&gt;CONFIG compose action reads MDE_LASTSEEN_HOURS (default 24). This defines the compliance window: how recently a VM must have reported to MDE to be considered Compliant.&lt;/LI&gt;
&lt;LI&gt;Init-varITTeamEmail and Init-varSenderEmail load the configurable email addresses used for sending and receiving notifications.&lt;/LI&gt;
&lt;LI&gt;Get-AllSubscriptions calls the Azure Management API to discover all subscriptions in the tenant.&lt;/LI&gt;
&lt;LI&gt;ForEach-Subscription runs a paginated Azure Resource Graph query per enabled subscription, collecting all running VMs along with Private IP, OS Type, Location, ServerOwner tag, and VM UUID.&lt;/LI&gt;
&lt;LI&gt;Init-MDEVariables then Paginate-MDEDevices call the MDE Security Center API in pages of 10,000 to load every enrolled device into the AllMDEDevices array.&lt;/LI&gt;
&lt;LI&gt;ForEach-AzureVM looks each Azure VM up in AllMDEDevices and determines compliance status and priority.&lt;/LI&gt;
&lt;LI&gt;Non-compliant handling builds HTML and CSV rows. If the VM has a ServerOwner tag, a compliance alert email goes to the owner with the IT Team CC'd. If there's no owner, the VM is appended to NoOwnerList.&lt;/LI&gt;
&lt;LI&gt;IT Summary email is sent once all VMs are processed. If any non-compliant VMs were found, the consolidated IT report is sent with the CSV attachment. Otherwise an All Clear email is sent.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H3&gt;How Azure VM Data is Matched to MDE Data&lt;/H3&gt;
&lt;P&gt;Each Azure VM is matched against the MDE device list using a two-level strategy. Both checks run for every VM on every run.&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;Match Method&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;How It Works&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Primary: Azure VM ID&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Compares azureVmId from the MDE device record (lowercase) against the VmId captured from Azure Resource Graph (lowercase). Immune to hostname changes; this is the preferred match.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Fallback: Hostname + IP&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Checks that MDE computerDnsName starts with the Azure VM name (case-insensitive) AND lastIpAddress matches the Azure Private IP. Both conditions must be true.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Not Found&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;A synthetic MDE record with onboardingStatus: "NotFound" is created. The VM is treated as Not Onboarded and a P2 High alert is raised.&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;H3&gt;Pagination Design&lt;/H3&gt;
&lt;P&gt;The workflow handles large environments through two independent pagination mechanisms that run before any compliance evaluation begins.&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;Data Source&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Page Size&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Mechanism&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Resource Graph&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;1,000 VMs per page&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Uses $skipToken from the response. The Until loop re-queries with the token until no token is returned (last page). Variables VMSkipToken and VMFetchComplete manage loop state per subscription. Supports up to 50,000 VMs (50 pages).&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;MDE Security Center API&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;10,000 devices per page&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Uses the $skip offset parameter. MDESkip is incremented by 10,000 each iteration. The loop stops when a page returns fewer than 10,000 records. Supports up to 500,000 MDE devices (50 pages × 10,000).&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;Prerequisites&lt;BR /&gt;Azure Resources&lt;/H2&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;Resource&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Requirement&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;Azure Logic App&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Standard plan, Stateful workflow&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Consumption plan also supported&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Managed Identity&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;System-assigned on the Logic App&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Enable under Logic App &amp;gt; Identity&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Sender mailbox (varSenderEmail)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Licensed Microsoft 365 account&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Emails are sent FROM this address&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;IT Team email (varITTeamEmail)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Valid email address or distribution list&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Receives all reports; CC'd on owner alerts&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Azure VMs&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Running, with ServerOwner tag (recommended)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Tag value must be a valid email address&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;MDE licensing&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Microsoft Defender for Endpoint P1 or P2&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Tenant must be enrolled in MDE&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;H3&gt;The ServerOwner Tag&lt;/H3&gt;
&lt;P&gt;Server owner notifications rely on a VM-level Azure tag. Without it, the VM is included in the IT summary, but no individual alert is sent to an owner.&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;Tag Name&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Expected Value&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Effect&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;ServerOwner&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Valid email, e.g. john@yourcompany.com&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Compliance alert sent TO this address; IT Team CC'd&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;If the tag is missing or empty, the VM is flagged in the Action Required: No Owner Tag Found section of the IT summary email, with step-by-step instructions for tagging it in the Azure Portal.&lt;/P&gt;
&lt;H2&gt;Required Permissions &amp;amp; Why&lt;/H2&gt;
&lt;P&gt;The Logic App's Managed Identity must be granted three API permissions. These are Application permissions that cannot be assigned through the Azure Portal UI, so the PowerShell script in Section 4.3 must be used. Admin consent is required.&lt;/P&gt;
&lt;H3&gt;Permission Summary&lt;/H3&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;Permission&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;API / Service&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;AppId&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Why It Is Required&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;user_impersonation&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Azure Management&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;797f4846-ba00-4fd7-ba43-dac1f8f63013&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Allows the Managed Identity to call the Azure Resource Graph API to query VM inventory across all subscriptions. Without this, the workflow cannot discover VMs.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;WindowsDefenderATP.Read.All&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;MDE Security Center&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;fc780465-2017-40d4-a0c5-307022471b92&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Allows reading all device records from the MDE API (/api/machines). This returns onboarding status, last seen time, and health status — the core compliance data.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Mail.Send&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Microsoft Graph&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;00000003-0000-0000-c000-000000000000&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Allows sending emails via the Graph /sendMail endpoint on behalf of the varSenderEmail mailbox. Without this, no alerts or reports can be sent.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&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;Important: &lt;/STRONG&gt;The Azure Management and MDE permissions belong to separate service principals — they are NOT part of Microsoft Graph. Each permission must be assigned to its own service principal using the AppId shown above. The script in Section 4.2 handles this correctly.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 100.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3&gt;Where to find the required values&lt;/H3&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;Parameter&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Where to find it in Azure Portal&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;$tenantID&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Azure Portal &amp;gt; Microsoft Entra ID &amp;gt; Overview &amp;gt; Tenant ID&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;$managedIdentityObjectId&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Logic App &amp;gt; Settings &amp;gt; Identity &amp;gt; System assigned tab &amp;gt; Object (principal) ID&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;H3&gt;Permission Assignment Script&lt;/H3&gt;
&lt;P&gt;Run this in Azure Cloud Shell or any terminal with the Microsoft.Graph PowerShell module installed. Update $tenantID and $managedIdentityObjectId before running.&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;# PowerShell # ── Update these two values before running ─────────────────────────── $tenantID = "&amp;lt;tenantID&amp;gt;" # Your Tenant ID $managedIdentityObjectId = "&amp;lt;objectID&amp;gt;" # MI Object ID # Install Microsoft.Graph if not already present if (!(Get-Module -ListAvailable -Name Microsoft.Graph)) { Install-Module -Name Microsoft.Graph -Scope CurrentUser -Force } # Connect to Microsoft Graph Connect-MgGraph -TenantId $tenantID ` -Scopes "AppRoleAssignment.ReadWrite.All","Application.Read.All" # MDE Compliance Logic App needs 3 permissions across 3 different service principals $permissions = @( @{ Permission="user_impersonation"; AppId="797f4846-ba00-4fd7-ba43-dac1f8f63013" }, @{ Permission="WindowsDefenderATP.Read.All"; AppId="fc780465-2017-40d4-a0c5-307022471b92" }, @{ Permission="Mail.Send"; AppId="00000003-0000-0000-c000-000000000000" } ) foreach ($entry in $permissions) { $sp = Get-MgServicePrincipal -Filter "AppId eq '$($entry.AppId)'" $appRole = $sp.AppRoles | Where-Object { $_.Value -eq $entry.Permission } if ($appRole -ne $null) { New-MgServicePrincipalAppRoleAssignment ` -ServicePrincipalId $sp.Id ` -PrincipalId $managedIdentityObjectId ` -ResourceId $sp.Id ` -AppRoleId $appRole.Id Write-Host "Assigned: $($entry.Permission)" -ForegroundColor Green } else { Write-Host "Not found: $($entry.Permission)" -ForegroundColor Yellow } } Write-Host "All permissions assigned." -ForegroundColor Green&lt;/LI-CODE&gt;
&lt;H3&gt;Verify Permissions Assigned&lt;/H3&gt;
&lt;LI-CODE lang="powershell"&gt;# PowerShell # Run after the assignment script to verify all 3 permissions are present Get-MgServicePrincipalAppRoleAssignment ` -ServicePrincipalId $managedIdentityObjectId | Select-Object AppRoleId, PrincipalDisplayName | Format-Table -AutoSize&lt;/LI-CODE&gt;
&lt;P&gt;&lt;STRONG&gt;Note: &lt;/STRONG&gt;You should see three assignment rows in the output — one for each permission. If any are missing, re-run the assignment script. An error saying the assignment already exists is normal and can be safely ignored.&lt;/P&gt;
&lt;H2&gt;Creating the Logic App&lt;BR /&gt;Create the resource&lt;/H2&gt;
&lt;OL&gt;
&lt;LI&gt;Azure Portal &amp;gt; search Logic Apps &amp;gt; + Create.&lt;/LI&gt;
&lt;LI&gt;Select your Subscription and Resource Group. Logic App name: la-mde-compliance-monitor.&lt;/LI&gt;
&lt;LI&gt;Plan type: Standard &amp;gt; Windows &amp;gt; select or create a Hosting Plan &amp;gt; Review + Create &amp;gt; Create.&lt;/LI&gt;
&lt;LI&gt;Once deployed, click Go to resource.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H3&gt;Enable System-assigned Managed Identity&lt;/H3&gt;
&lt;OL&gt;
&lt;LI&gt;Open the Logic App &amp;gt; left menu: Settings &amp;gt; Identity.&lt;/LI&gt;
&lt;LI&gt;On the System assigned tab, toggle Status to On.&lt;/LI&gt;
&lt;LI&gt;Click Save &amp;gt; Yes on the confirmation dialog.&lt;/LI&gt;
&lt;LI&gt;The Object (principal) ID appears. Copy this value for the PowerShell script.&lt;/LI&gt;
&lt;LI&gt;Run the Permissions Assignment script to assign all three permissions to this identity.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Why Managed Identity: &lt;/STRONG&gt;A System-assigned Managed Identity is automatically scoped to this Logic App and deleted when the Logic App is deleted. It authenticates to Azure Management API, MDE API, and Microsoft Graph without any stored passwords or client secrets.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Create the workflow and import the JSON&lt;/H3&gt;
&lt;OL&gt;
&lt;LI&gt;Logic App &amp;gt; left menu: Workflows &amp;gt; + Add.&lt;/LI&gt;
&lt;LI&gt;Workflow name: MDEComplianceMonitor. State type: Stateful. Click Create.&lt;/LI&gt;
&lt;LI&gt;Click the workflow name &amp;gt; left menu: Code.&lt;/LI&gt;
&lt;LI&gt;Press Ctrl + A &amp;gt; Delete to clear the editor completely.&lt;/LI&gt;
&lt;LI&gt;Paste the complete workflow JSON from the companion file (see Appendix A).&lt;/LI&gt;
&lt;LI&gt;Click Save. It should succeed with no validation errors.&lt;/LI&gt;
&lt;/OL&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;Important: &lt;/STRONG&gt;Always use Stateful. Stateless workflows do not support run history, have a 5-minute timeout, and do not retain intermediate state — all of which are required by this workflow's pagination loops.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 100.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;
&lt;H2&gt;Configuration: What You Can Change&lt;/H2&gt;
&lt;P&gt;After importing the JSON, update only the values described below. Everything else runs automatically.&lt;/P&gt;
&lt;H3&gt;Email Address Variables&lt;/H3&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;Variable&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Where to Update&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;varITTeamEmail&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The IT Team email address. All IT Summary reports are sent TO this address. All per-VM owner emails CC this address.&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;3000&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;varSenderEmail&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;The Microsoft 365 licensed account that emails are sent FROM via Graph API. Must have Mail.Send permission granted to the Managed Identity.&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;3000&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;H3&gt;Compliance look-up window: MDE_LASTSEEN_HOURS&lt;/H3&gt;
&lt;P&gt;This setting in the CONFIG compose action defines how recently a VM must have reported to MDE to count as Compliant. Default is 24 hours.&lt;/P&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;Value&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Behaviour&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;24 (default)&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Compliant if the VM checked in with MDE within the last 24 hours. Recommended starting point.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;12&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Stricter check; suitable for high-security environments requiring near-real-time coverage.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;48&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;More relaxed; suitable for environments with scheduled maintenance windows or intermittent connectivity.&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;H3&gt;Running VMs Only&lt;/H3&gt;
&lt;P&gt;The Azure Resource Graph query includes a filter for powerState == "VM running". This means:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Deallocated VMs are excluded (not expected to report to MDE while offline).&lt;/LI&gt;
&lt;LI&gt;Stopped (allocated) VMs are excluded.&lt;/LI&gt;
&lt;LI&gt;Newly started VMs are included and checked on the next daily run.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;To Change the Filter: &lt;/STRONG&gt;To change the power state filter, locate the "query" string inside the Build-VMQuery-Paged action and modify the | where powerState == clause. For example, removing the filter entirely will check all VMs regardless of state.&lt;/P&gt;
&lt;H2&gt;Sample Email Notifications&lt;/H2&gt;
&lt;P&gt;The screenshots below show actual emails generated by this workflow. All sensitive data (email addresses, VM names, subscription IDs, IP addresses) has been redacted.&lt;/P&gt;
&lt;H3&gt;Per-VM owner alert&lt;/H3&gt;
&lt;P&gt;Sent to the server owner (ServerOwner tag) when their VM is non-compliant. The IT Team is CC'd. The email contains full server details, compliance status, priority, last MDE check-in time, and resolution SLA.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;STRONG&gt;Note: &lt;/STRONG&gt;If no ServerOwner tag is set the VM is skipped here and included in the "No Owner Tag Found" section of the IT summary instead.&lt;/P&gt;
&lt;H3&gt;IT Team Daily Summary Report&lt;/H3&gt;
&lt;P&gt;Sent once per day to the IT Team after all owner emails are dispatched. Shows up to 20 VMs inline with a full CSV attachment containing the complete list, plus a dedicated section for VMs with no owner tag.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;STRONG&gt;Note: &lt;/STRONG&gt;The CSV attachment always contains the complete list of all non-compliant VMs regardless of count. The inline HTML table is limited to 20 rows to keep the email size manageable.&lt;/P&gt;
&lt;H3&gt;All Compliant VMs:&lt;/H3&gt;
&lt;P&gt;If all VMs are compliant, you’ll see email like this:&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;Post-Deployment Checklist&lt;/H2&gt;
&lt;P&gt;Before you leave the workflow running unattended, walk through this checklist once.&lt;/P&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;#&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Item&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Logic App resource created (Standard plan, Stateful workflow)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;System-assigned Managed Identity enabled; Object ID copied&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;PowerShell script run; user_impersonation, WindowsDefenderATP.Read.All, and Mail.Send assigned&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;4&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Permissions verified using Get-MgServicePrincipalAppRoleAssignment (3 rows expected)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Workflow JSON pasted into Code view; saved without validation errors&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;6&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;varITTeamEmail updated to your IT security team or distribution list address&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;7&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;varSenderEmail updated to a licensed Microsoft 365 mailbox&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;8&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;MDE_LASTSEEN_HOURS reviewed (default 24, adjust if needed)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;9&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;At least one Azure VM has the ServerOwner tag set with a valid email&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;10&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Manual run triggered: Logic App &amp;gt; Overview &amp;gt; Run Trigger &amp;gt; Run&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;11&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Run history shows Succeeded; no 401 or 403 errors on any HTTP action&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;12&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;IT Team received the daily summary email with CSV attachment&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;13&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Server owner received a per-VM alert with the IT Team CC'd&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;14&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Recurrence trigger confirmed running daily at 08:00 IST&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;H2&gt;Wrapping Up&lt;/H2&gt;
&lt;P&gt;What I love about this is how much it accomplishes with so little: a Logic App, a Managed Identity, and three permissions. No connectors, no secrets to rotate, no third-party services. Yet every morning, your security team starts the day knowing exactly which VMs are out of MDE coverage and which owners have already been notified.&lt;/P&gt;
&lt;P&gt;If you adopt this pattern, here are a few natural next steps to consider:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Hook into Microsoft Sentinel by writing non-compliant VMs to a custom table for trend analysis.&lt;/LI&gt;
&lt;LI&gt;Auto-create ServiceNow or Jira tickets for VMs that remain non-compliant for more than 48 hours.&lt;/LI&gt;
&lt;LI&gt;Extend the match logic to include Arc-enabled servers, not just Azure VMs.&lt;/LI&gt;
&lt;LI&gt;Add a Teams adaptive card notification alongside email for faster response.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;I'd love to hear how you're solving MDE coverage gaps in your environment.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Appendix A: Workflow JSON&lt;/H2&gt;
&lt;P&gt;The complete Logic App workflow definition is provided below. To import it: open the Logic App in Azure Portal, navigate to the workflow, click Code view, press Ctrl + A to clear the existing content, paste the entire JSON, then click Save.&lt;/P&gt;
&lt;LI-CODE lang="json"&gt;{ "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", "triggers": { "Recurrence": { "recurrence": { "frequency": "Day", "interval": 1, "schedule": { "hours": [ "8" ], "minutes": [ 0 ] }, "timeZone": "India Standard Time" }, "evaluatedRecurrence": { "frequency": "Day", "interval": 1, "schedule": { "hours": [ "8" ], "minutes": [ 0 ] }, "timeZone": "India Standard Time" }, "type": "Recurrence" } }, "actions": { "CONFIG": { "runAfter": {}, "type": "Compose", "inputs": { "MDE_LASTSEEN_HOURS": 24 } }, "Set-ExcludedSubscriptions": { "runAfter": { "CONFIG": [ "Succeeded" ] }, "type": "Compose", "inputs": [] }, "Init-varITTeamEmail": { "runAfter": { "Set-ExcludedSubscriptions": [ "Succeeded" ] }, "type": "InitializeVariable", "inputs": { "variables": [ { "name": "varITTeamEmail", "type": "string", "value": "admin@contoso.onmicrosoft.com" } ] } }, "Init-varSenderEmail": { "runAfter": { "Init-varITTeamEmail": [ "Succeeded" ] }, "type": "InitializeVariable", "inputs": { "variables": [ { "name": "varSenderEmail", "type": "string", "value": "admin@contoso.onmicrosoft.com" } ] } }, "Get-AllSubscriptions": { "runAfter": { "Init-varSenderEmail": [ "Succeeded" ] }, "type": "Http", "inputs": { "uri": "https://management.azure.com/subscriptions?api-version=2022-12-01", "method": "GET", "headers": { "Content-Type": "application/json" }, "authentication": { "type": "ManagedServiceIdentity", "audience": "https://management.azure.com" }, "retryPolicy": { "type": "fixed", "count": 3, "interval": "PT60S" } } }, "Parse-AllSubscriptions": { "runAfter": { "Get-AllSubscriptions": [ "Succeeded" ] }, "type": "ParseJson", "inputs": { "content": "@body('Get-AllSubscriptions')", "schema": { "type": "object", "properties": { "value": { "type": "array", "items": { "type": "object", "properties": { "subscriptionId": { "type": "string" }, "displayName": { "type": "string" }, "state": { "type": "string" } } } } } } } }, "Init-AllVMs": { "runAfter": { "Parse-AllSubscriptions": [ "Succeeded" ] }, "type": "InitializeVariable", "inputs": { "variables": [ { "name": "AllVMs", "type": "array", "value": [] }, { "name": "VMSkipToken", "type": "string", "value": "INIT" }, { "name": "VMFetchComplete", "type": "boolean", "value": false } ] } }, "ForEach-Subscription": { "foreach": "@body('Parse-AllSubscriptions')?['value']", "actions": { "Check-SubscriptionEnabled": { "actions": { "Reset-VMSkipToken": { "type": "SetVariable", "inputs": { "name": "VMSkipToken", "value": "INIT" } }, "Reset-VMFetchComplete": { "runAfter": { "Reset-VMSkipToken": [ "Succeeded" ] }, "type": "SetVariable", "inputs": { "name": "VMFetchComplete", "value": false } }, "Until": { "actions": { "Build-VMQuery-Paged": { "type": "Compose", "inputs": { "subscriptions": [ "@{items('ForEach-Subscription')?['subscriptionId']}" ], "query": "Resources | where type == 'microsoft.compute/virtualmachines' | extend VMName = tostring(name), ResourceGroup = tostring(resourceGroup), Location = tostring(location), OSType = tostring(properties.storageProfile.osDisk.osType), VMSize = tostring(properties.hardwareProfile.vmSize), ServerOwner = tostring(tags.ServerOwner), Environment = tostring(tags.Environment), SubscriptionId = tostring(subscriptionId), nicId = tolower(tostring(properties.networkProfile.networkInterfaces[0].id)), VmId = tolower(tostring(properties.vmId)) | join kind=leftouter (Resources | where type == 'microsoft.network/networkinterfaces' | extend privateIP = tostring(properties.ipConfigurations[0].properties.privateIPAddress) | project nicId = tolower(id), privateIP) on nicId | join kind=leftouter (Resources | where type == 'microsoft.compute/virtualmachines' | extend powerState = tostring(properties.extended.instanceView.powerState.displayStatus) | project id, powerState) on id | where powerState == 'VM running' | project VMName, ResourceGroup, Location, OSType, VMSize, ServerOwner, Environment = 'Azure', SubscriptionId, PrivateIP = privateIP, VmId, CloudEnvironment = 'Azure'", "options": { "$skipToken": "@if(equals(variables('VMSkipToken'), 'INIT'), '', variables('VMSkipToken'))" }, "$top": 1000 } }, "Get-VMs-Paged": { "runAfter": { "Build-VMQuery-Paged": [ "Succeeded" ] }, "type": "Http", "inputs": { "uri": "https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01", "method": "POST", "headers": { "Content-Type": "application/json" }, "body": "@outputs('Build-VMQuery-Paged')", "authentication": { "type": "ManagedServiceIdentity", "audience": "https://management.azure.com" } }, "runtimeConfiguration": { "contentTransfer": { "transferMode": "Chunked" } } }, "ForEach-VM-Result-Paged": { "foreach": "@body('Get-VMs-Paged')?['data']", "actions": { "Append-SingleVM-Paged": { "type": "AppendToArrayVariable", "inputs": { "name": "AllVMs", "value": "@items('ForEach-VM-Result-Paged')" } } }, "runAfter": { "Get-VMs-Paged": [ "Succeeded" ] }, "type": "Foreach" }, "Check-VMSkipToken": { "actions": { "Set-VMFetchComplete": { "type": "SetVariable", "inputs": { "name": "VMFetchComplete", "value": true } } }, "runAfter": { "ForEach-VM-Result-Paged": [ "Succeeded" ] }, "else": { "actions": { "Set-VMSkipToken": { "type": "SetVariable", "inputs": { "name": "VMSkipToken", "value": "@body('Get-VMs-Paged')?['$skipToken']" } } } }, "expression": { "or": [ { "equals": [ "@string(body('Get-VMs-Paged')?['$skipToken'])", "" ] } ] }, "type": "If" } }, "runAfter": { "Reset-VMFetchComplete": [ "Succeeded" ] }, "expression": "@equals(variables('VMFetchComplete'), true)", "limit": { "count": 50, "timeout": "PT1H" }, "type": "Until" } }, "else": { "actions": {} }, "expression": { "and": [ { "equals": [ "@items('ForEach-Subscription')?['state']", "Enabled" ] } ] }, "type": "If" } }, "runAfter": { "Init-AllVMs": [ "Succeeded" ] }, "type": "Foreach" }, "Init-MDEVariables": { "runAfter": { "ForEach-Subscription": [ "Succeeded" ] }, "type": "InitializeVariable", "inputs": { "variables": [ { "name": "AllMDEDevices", "type": "array" }, { "name": "MDESkip", "type": "integer", "value": 0 }, { "name": "MDEFetchComplete", "type": "boolean", "value": false } ] } }, "Paginate-MDEDevices": { "actions": { "Get-MDEDevices-Page": { "type": "Http", "inputs": { "uri": "https://api.securitycenter.microsoft.com/api/machines?$select=computerDnsName,id,osPlatform,lastSeen,onboardingStatus,healthStatus,lastIpAddress&amp;amp;$top=10000&amp;amp;$skip=@{variables('MDESkip')}", "method": "GET", "headers": { "Content-Type": "application/json" }, "authentication": { "type": "ManagedServiceIdentity", "audience": "https://api.securitycenter.microsoft.com" }, "retryPolicy": { "type": "fixed", "count": 3, "interval": "PT60S" } }, "runtimeConfiguration": { "contentTransfer": { "transferMode": "Chunked" } } }, "Parse-MDEPage": { "runAfter": { "Get-MDEDevices-Page": [ "Succeeded" ] }, "type": "ParseJson", "inputs": { "content": "@body('Get-MDEDevices-Page')", "schema": { "type": "object", "properties": { "value": { "type": "array", "items": { "type": "object", "properties": { "computerDnsName": { "type": [ "string", "null" ] }, "id": { "type": [ "string", "null" ] }, "osPlatform": { "type": [ "string", "null" ] }, "lastSeen": { "type": [ "string", "null" ] }, "onboardingStatus": { "type": [ "string", "null" ] }, "healthStatus": { "type": [ "string", "null" ] }, "lastIpAddress": { "type": [ "string", "null" ] }, "azureVmId": { "type": [ "string", "null" ] } } } } } } } }, "Append-MDEPage-ToArray": { "foreach": "@body('Parse-MDEPage')?['value']", "actions": { "Append-SingleMDEDevice": { "type": "AppendToArrayVariable", "inputs": { "name": "AllMDEDevices", "value": "@items('Append-MDEPage-ToArray')" } } }, "runAfter": { "Parse-MDEPage": [ "Succeeded" ] }, "type": "Foreach" }, "Check-PageSize": { "actions": { "Set-FetchComplete-True": { "type": "SetVariable", "inputs": { "name": "MDEFetchComplete", "value": true } } }, "runAfter": { "Append-MDEPage-ToArray": [ "Succeeded" ] }, "else": { "actions": { "Increment-MDESkip": { "type": "IncrementVariable", "inputs": { "name": "MDESkip", "value": 10000 } } } }, "expression": { "and": [ { "less": [ "@length(body('Parse-MDEPage')?['value'])", 10000 ] } ] }, "type": "If" } }, "runAfter": { "Init-MDEVariables": [ "Succeeded" ] }, "expression": "@equals(variables('MDEFetchComplete'), true)", "limit": { "count": 50, "timeout": "PT1H" }, "type": "Until" }, "Init-Variables": { "runAfter": { "Paginate-MDEDevices": [ "Succeeded" ] }, "type": "InitializeVariable", "inputs": { "variables": [ { "name": "EmailsSent", "type": "array", "value": [] }, { "name": "NoOwnerList", "type": "array", "value": [] }, { "name": "NonCompliantList", "type": "array", "value": [] }, { "name": "SummaryStats", "type": "object", "value": { "TotalNonCompliant": 0, "P1Critical": 0, "P2High": 0, "P3Medium": 0, "P4Low": 0, "EmailsSent": 0, "NoOwnerFound": 0 } }, { "name": "HTMLRows", "type": "string" }, { "name": "NonCompliantCount", "type": "integer", "value": 0 }, { "name": "CSVRows", "type": "string", "value": "@{concat('\"VM Name\",\"Private IP\",\"OS Type\",\"Location\",\"Server Owner\",\"MDE Status\",\"Last Seen\",\"Priority\",\"Action Taken\",\"Subscription ID\"', decodeUriComponent('%0A'))}" }, { "name": "HTMLRowCount", "type": "integer", "value": 0 } ] } }, "ForEach-AzureVM": { "foreach": "@variables('AllVMs')", "actions": { "Find-VMInMDE-Filter": { "type": "Query", "inputs": { "from": "@variables('AllMDEDevices')", "where": "@or(and(not(equals(item()?['azureVmId'], null)), not(equals(item()?['azureVmId'], '')), equals(toLower(item()?['azureVmId']), toLower(items('ForEach-AzureVM')?['VmId']))), and(or(equals(item()?['azureVmId'], null), equals(item()?['azureVmId'], '')), startsWith(toLower(item()?['computerDnsName']), toLower(items('ForEach-AzureVM')?['VMName'])), equals(item()?['lastIpAddress'], items('ForEach-AzureVM')?['PrivateIP'])))" } }, "Find-VMInMDE": { "runAfter": { "Find-VMInMDE-Filter": [ "Succeeded" ] }, "type": "Compose", "inputs": "@if(greater(length(body('Find-VMInMDE-Filter')), 0), first(body('Find-VMInMDE-Filter')), json('{\"computerDnsName\":\"NOT_FOUND\",\"onboardingStatus\":\"NotFound\",\"lastSeen\":\"1900-01-01T00:00:00Z\",\"lastIpAddress\":\"N/A\",\"healthStatus\":\"Unknown\"}'))" }, "Get-ComplianceStatus": { "runAfter": { "Find-VMInMDE": [ "Succeeded" ] }, "type": "Compose", "inputs": "@if(equals(outputs('Find-VMInMDE')?['computerDnsName'], 'NOT_FOUND'), 'Not Onboarded', if(equals(outputs('Find-VMInMDE')?['onboardingStatus'], 'Onboarded'), if(greater(outputs('Find-VMInMDE')?['lastSeen'], addHours(utcNow(), mul(-1, outputs('CONFIG')?['MDE_LASTSEEN_HOURS']))), 'Compliant', 'Onboarded - Not Reporting'), 'Not Onboarded'))" }, "Get-Priority": { "runAfter": { "Get-ComplianceStatus": [ "Succeeded" ] }, "type": "Compose", "inputs": "@if(equals(outputs('Get-ComplianceStatus'), 'Not Onboarded'), 'P2 - High', if(equals(outputs('Get-ComplianceStatus'), 'Onboarded - Not Reporting'), 'P3 - Medium', if(equals(outputs('Get-ComplianceStatus'), 'Compliant'), 'Compliant', 'P4 - Low')))" }, "Is-NonCompliant": { "actions": { "Append-CSVRows": { "type": "AppendToStringVariable", "inputs": { "name": "CSVRows", "value": "\"@{items('ForEach-AzureVM')?['VMName']}\",\"@{if(equals(items('ForEach-AzureVM')?['PrivateIP'], ''), 'N/A', items('ForEach-AzureVM')?['PrivateIP'])}\",\"@{items('ForEach-AzureVM')?['OSType']}\",\"@{items('ForEach-AzureVM')?['Location']}\",\"@{if(equals(items('ForEach-AzureVM')?['ServerOwner'], ''), 'No Owner Tag', items('ForEach-AzureVM')?['ServerOwner'])}\",\"@{outputs('Get-ComplianceStatus')}\",\"@{if(equals(outputs('Find-VMInMDE')?['onboardingStatus'], 'Onboarded'), if(equals(outputs('Find-VMInMDE')?['lastSeen'], '1900-01-01T00:00:00Z'), 'Never', concat(convertTimeZone(outputs('Find-VMInMDE')?['lastSeen'], 'UTC', 'India Standard Time', 'dd-MM-yyyy HH:mm:ss'), ' (', string(div(sub(ticks(utcNow()), ticks(outputs('Find-VMInMDE')?['lastSeen'])), 864000000000)), ' days ago)')), concat(outputs('Find-VMInMDE')?['onboardingStatus'], ' - Last Seen: ', convertTimeZone(outputs('Find-VMInMDE')?['lastSeen'], 'UTC', 'India Standard Time', 'dd-MM-yyyy HH:mm:ss')))}\",\"@{outputs('Get-Priority')}\",\"@{if(equals(items('ForEach-AzureVM')?['ServerOwner'], ''), 'IT Team Notified', 'Email sent to Server Owner')}\",\"@{items('ForEach-AzureVM')?['SubscriptionId']}\"@{decodeUriComponent('%0A')}" } }, "Check-HTMLRowCount": { "actions": { "Append-HTMLRows": { "type": "AppendToStringVariable", "inputs": { "name": "HTMLRows", "value": "&amp;lt;tr&amp;gt;&amp;lt;td style=\"padding:8px 10px;border:1px solid #ddd;font-weight:600;\"&amp;gt;@{items('ForEach-AzureVM')?['VMName']}&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:8px 10px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{if(equals(items('ForEach-AzureVM')?['PrivateIP'], ''), 'N/A', items('ForEach-AzureVM')?['PrivateIP'])}&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:8px 10px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{items('ForEach-AzureVM')?['OSType']}&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:8px 10px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{items('ForEach-AzureVM')?['Location']}&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:8px 10px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{if(equals(items('ForEach-AzureVM')?['ServerOwner'], ''), 'No Owner Tag', items('ForEach-AzureVM')?['ServerOwner'])}&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:8px 10px;border:1px solid #ddd;color:#c80000;\"&amp;gt;@{outputs('Get-ComplianceStatus')}&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:8px 10px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{if(equals(outputs('Find-VMInMDE')?['onboardingStatus'], 'Onboarded'), if(equals(outputs('Find-VMInMDE')?['lastSeen'], '1900-01-01T00:00:00Z'), 'Never', concat(convertTimeZone(outputs('Find-VMInMDE')?['lastSeen'], 'UTC', 'India Standard Time', 'dd-MM-yyyy HH:mm:ss'), ' (', string(div(sub(ticks(utcNow()), ticks(outputs('Find-VMInMDE')?['lastSeen'])), 864000000000)), ' days ago)')), concat(outputs('Find-VMInMDE')?['onboardingStatus'], ' - Last Seen: ', convertTimeZone(outputs('Find-VMInMDE')?['lastSeen'], 'UTC', 'India Standard Time', 'dd-MM-yyyy HH:mm:ss')))}&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:8px 10px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{outputs('Get-Priority')}&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:8px 10px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{if(equals(items('ForEach-AzureVM')?['ServerOwner'], ''), 'IT Team Notified', 'Email sent to Server Owner')}&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:8px 10px;border:1px solid #ddd;word-break:break-all;\"&amp;gt;@{items('ForEach-AzureVM')?['SubscriptionId']}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;" } }, "Increment-HTMLRowCount": { "runAfter": { "Append-HTMLRows": [ "Succeeded" ] }, "type": "IncrementVariable", "inputs": { "name": "HTMLRowCount", "value": 1 } } }, "runAfter": { "Append-CSVRows": [ "Succeeded" ] }, "else": { "actions": {} }, "expression": { "and": [ { "less": [ "@variables('HTMLRowCount')", 20 ] } ] }, "type": "If" }, "Increment-NonCompliantCount": { "runAfter": { "Check-HTMLRowCount": [ "Succeeded" ] }, "type": "IncrementVariable", "inputs": { "name": "NonCompliantCount", "value": 1 } }, "Check-ServerOwner": { "actions": { "Send-OwnerEmail": { "type": "Http", "inputs": { "uri": "@{concat('https://graph.microsoft.com/v1.0/users/', encodeURIComponent(variables('varSenderEmail')), '/sendMail')}", "method": "POST", "headers": { "Content-Type": "application/json" }, "body": { "message": { "subject": "[@{outputs('Get-Priority')}] MDE Compliance Alert - @{items('ForEach-AzureVM')?['VMName']}", "body": { "contentType": "HTML", "content": "&amp;lt;html&amp;gt;&amp;lt;body style=\"font-family:Segoe UI,Arial,sans-serif;color:#1a1a1a;\"&amp;gt;&amp;lt;div style=\"max-width:680px;margin:24px auto;border:1px solid #e0e0e0;border-radius:8px;overflow:hidden;\"&amp;gt;&amp;lt;div style=\"background:#c80000;padding:20px 28px;\"&amp;gt;&amp;lt;h2 style=\"color:#fff;margin:0;\"&amp;gt;MDE Compliance Alert&amp;lt;/h2&amp;gt;&amp;lt;p style=\"color:#ffcccc;margin:6px 0 0;font-size:13px;\"&amp;gt;Priority: @{outputs('Get-Priority')}&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=\"padding:28px;\"&amp;gt;&amp;lt;p style=\"margin-top:0;font-size:14px;\"&amp;gt;Your server &amp;lt;strong&amp;gt;@{items('ForEach-AzureVM')?['VMName']}&amp;lt;/strong&amp;gt; has a Microsoft Defender for Endpoint compliance issue requiring immediate attention.&amp;lt;/p&amp;gt;&amp;lt;table style=\"width:100%;border-collapse:collapse;font-size:14px;\"&amp;gt;&amp;lt;thead&amp;gt;&amp;lt;tr style=\"background:#f5f5f5;\"&amp;gt;&amp;lt;th style=\"text-align:left;padding:10px 14px;border:1px solid #ddd;width:38%;\"&amp;gt;Field&amp;lt;/th&amp;gt;&amp;lt;th style=\"text-align:left;padding:10px 14px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;Value&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/thead&amp;gt;&amp;lt;tbody&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;font-weight:600;\"&amp;gt;Server Name&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{items('ForEach-AzureVM')?['VMName']}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr style=\"background:#fafafa;\"&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;font-weight:600;\"&amp;gt;Private IP&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{if(equals(items('ForEach-AzureVM')?['PrivateIP'], ''), 'N/A', items('ForEach-AzureVM')?['PrivateIP'])}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;font-weight:600;\"&amp;gt;OS Type&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{items('ForEach-AzureVM')?['OSType']}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr style=\"background:#fafafa;\"&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;font-weight:600;\"&amp;gt;Location&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{items('ForEach-AzureVM')?['Location']}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;font-weight:600;\"&amp;gt;Compliance Status&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;color:#c80000;font-weight:700;\"&amp;gt;@{outputs('Get-ComplianceStatus')}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr style=\"background:#fafafa;\"&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;font-weight:600;\"&amp;gt;Priority&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;font-weight:700;\"&amp;gt;@{outputs('Get-Priority')}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;font-weight:600;\"&amp;gt;MDE Onboarding Status&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{outputs('Find-VMInMDE')?['onboardingStatus']}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr style=\"background:#fafafa;\"&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;font-weight:600;\"&amp;gt;Last Seen in MDE (IST)&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{if(equals(outputs('Find-VMInMDE')?['lastSeen'], '1900-01-01T00:00:00Z'), 'Never', concat(convertTimeZone(outputs('Find-VMInMDE')?['lastSeen'], 'UTC', 'India Standard Time', 'dd-MM-yyyy HH:mm:ss'), ' (', string(div(sub(ticks(utcNow()), ticks(outputs('Find-VMInMDE')?['lastSeen'])), 864000000000)), ' days ago)'))}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;font-weight:600;\"&amp;gt;Resource Group&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{items('ForEach-AzureVM')?['ResourceGroup']}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr style=\"background:#fafafa;\"&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;font-weight:600;\"&amp;gt;Subscription ID&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:9px 14px;border:1px solid #ddd;word-break:break-all;\"&amp;gt;@{items('ForEach-AzureVM')?['SubscriptionId']}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/tbody&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;table style=\"width:100%;border-collapse:collapse;\"&amp;gt;&amp;lt;tr style=\"background:#fff8e1;\"&amp;gt;&amp;lt;td style=\"padding:10px 14px;border:1px solid #ffe082;font-size:13px;\"&amp;gt;&amp;lt;strong&amp;gt;Resolution SLA:&amp;lt;/strong&amp;gt; P1 Critical - 24hrs | P2 High - 48hrs | P3 Medium - 72hrs&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;p style=\"font-size:13px;color:#555;\"&amp;gt;For assistance contact IT Security: &amp;lt;a href=\"mailto:@{variables('varITTeamEmail')}\"&amp;gt;@{variables('varITTeamEmail')}&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;" }, "toRecipients": [ { "emailAddress": { "address": "@{items('ForEach-AzureVM')?['ServerOwner']}" } } ], "ccRecipients": [ { "emailAddress": { "address": "@variables('varITTeamEmail')" } } ] }, "saveToSentItems": "true" }, "authentication": { "type": "ManagedServiceIdentity", "audience": "https://graph.microsoft.com" }, "retryPolicy": { "type": "fixed", "count": 2, "interval": "PT60S" } }, "runtimeConfiguration": { "contentTransfer": { "transferMode": "Chunked" } } }, "Append-EmailsSent": { "runAfter": { "Send-OwnerEmail": [ "Succeeded" ] }, "type": "AppendToArrayVariable", "inputs": { "name": "EmailsSent", "value": "@{items('ForEach-AzureVM')?['VMName']} → @{items('ForEach-AzureVM')?['ServerOwner']}" } } }, "runAfter": { "Increment-NonCompliantCount": [ "Succeeded" ] }, "else": { "actions": { "Append-NoOwnerList": { "type": "AppendToArrayVariable", "inputs": { "name": "NoOwnerList", "value": "&amp;lt;tr&amp;gt;&amp;lt;td style=\"padding:8px 10px;border:1px solid #ddd;font-weight:600;\"&amp;gt;@{items('ForEach-AzureVM')?['VMName']}&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:8px 10px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{if(equals(items('ForEach-AzureVM')?['PrivateIP'], ''), 'N/A', items('ForEach-AzureVM')?['PrivateIP'])}&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:8px 10px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;@{outputs('Get-ComplianceStatus')}&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:8px 10px;border:1px solid #ddd;font-weight:700;\"&amp;gt;@{outputs('Get-Priority')}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;" } } } }, "expression": { "and": [ { "not": { "equals": [ "@items('ForEach-AzureVM')?['ServerOwner']", "" ] } } ] }, "type": "If" } }, "runAfter": { "Get-Priority": [ "Succeeded" ] }, "else": { "actions": {} }, "expression": { "and": [ { "not": { "equals": [ "@outputs('Get-ComplianceStatus')", "Compliant" ] } } ] }, "type": "If" } }, "runAfter": { "Init-Variables": [ "Succeeded" ] }, "type": "Foreach", "runtimeConfiguration": { "concurrency": { "repetitions": 1 } } }, "Check-AnyNonCompliant": { "actions": { "Send-ITSummaryEmail": { "type": "Http", "inputs": { "uri": "@{concat('https://graph.microsoft.com/v1.0/users/', encodeURIComponent(variables('varSenderEmail')), '/sendMail')}", "method": "POST", "headers": { "Content-Type": "application/json" }, "body": { "message": { "subject": "MDE Compliance Report (Azure Workloads) - @{variables('NonCompliantCount')} Non-Compliant VMs Found", "body": { "contentType": "HTML", "content": "&amp;lt;html&amp;gt;&amp;lt;body style=\"font-family:Segoe UI,Arial,sans-serif;color:#1a1a1a;\"&amp;gt;&amp;lt;div style=\"max-width:1400px;margin:24px auto;border:1px solid #e0e0e0;border-radius:8px;\"&amp;gt;&amp;lt;div style=\"background:#0078d4;padding:20px 28px;\"&amp;gt;&amp;lt;h2 style=\"color:#fff;margin:0;\"&amp;gt;MDE Compliance Daily Report&amp;lt;/h2&amp;gt;&amp;lt;p style=\"color:#cce4ff;margin:6px 0 0;font-size:13px;\"&amp;gt;Generated: @{convertTimeZone(utcNow(), 'UTC', 'India Standard Time', 'dd-MM-yyyy HH:mm:ss')} IST&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=\"padding:28px;\"&amp;gt;&amp;lt;table style=\"border-collapse:collapse;font-size:14px;margin-bottom:28px;\"&amp;gt;&amp;lt;thead&amp;gt;&amp;lt;tr style=\"background:#f0f0f0;\"&amp;gt;&amp;lt;th style=\"padding:10px 18px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;Metric&amp;lt;/th&amp;gt;&amp;lt;th style=\"padding:10px 18px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;Value&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/thead&amp;gt;&amp;lt;tbody&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=\"padding:9px 18px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;Total Non-Compliant VMs&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:9px 18px;border:1px solid #ddd;font-weight:700;color:#c80000;\"&amp;gt;@{variables('NonCompliantCount')}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr style=\"background:#fafafa;\"&amp;gt;&amp;lt;td style=\"padding:9px 18px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;Server Owners Notified&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:9px 18px;border:1px solid #ddd;color:#107c10;font-weight:600;\"&amp;gt;@{length(variables('EmailsSent'))}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=\"padding:9px 18px;border:1px solid #ddd;word-wrap:break-word;\"&amp;gt;No Owner Tag&amp;lt;/td&amp;gt;&amp;lt;td style=\"padding:9px 18px;border:1px solid #ddd;color:#e65100;font-weight:600;\"&amp;gt;@{length(variables('NoOwnerList'))}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/tbody&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;p style=\"background:#fff3cd;border:1px solid #ffc107;padding:10px 14px;border-radius:4px;font-size:13px;margin-bottom:16px;\"&amp;gt;This report shows the first &amp;lt;strong&amp;gt;20 non-compliant VMs&amp;lt;/strong&amp;gt; only. &amp;lt;strong&amp;gt;Please check the attached CSV file&amp;lt;/strong&amp;gt; for the complete list.&amp;lt;/p&amp;gt;&amp;lt;table style=\"width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;\"&amp;gt;&amp;lt;colgroup&amp;gt;&amp;lt;col style=\"width:120px\"&amp;gt;&amp;lt;col style=\"width:90px\"&amp;gt;&amp;lt;col style=\"width:70px\"&amp;gt;&amp;lt;col style=\"width:100px\"&amp;gt;&amp;lt;col style=\"width:160px\"&amp;gt;&amp;lt;col style=\"width:110px\"&amp;gt;&amp;lt;col style=\"width:165px\"&amp;gt;&amp;lt;col style=\"width:80px\"&amp;gt;&amp;lt;col style=\"width:90px\"&amp;gt;&amp;lt;col style=\"width:195px\"&amp;gt;&amp;lt;/colgroup&amp;gt;&amp;lt;thead&amp;gt;&amp;lt;tr style=\"background:#0078d4;color:#fff;\"&amp;gt;&amp;lt;th style=\"padding:10px 12px;border:1px solid #005a9e;\"&amp;gt;VM Name&amp;lt;/th&amp;gt;&amp;lt;th style=\"padding:10px 12px;border:1px solid #005a9e;\"&amp;gt;Private IP&amp;lt;/th&amp;gt;&amp;lt;th style=\"padding:10px 12px;border:1px solid #005a9e;\"&amp;gt;OS Type&amp;lt;/th&amp;gt;&amp;lt;th style=\"padding:10px 12px;border:1px solid #005a9e;\"&amp;gt;Location&amp;lt;/th&amp;gt;&amp;lt;th style=\"padding:10px 12px;border:1px solid #005a9e;\"&amp;gt;Server Owner&amp;lt;/th&amp;gt;&amp;lt;th style=\"padding:10px 12px;border:1px solid #005a9e;\"&amp;gt;MDE Status&amp;lt;/th&amp;gt;&amp;lt;th style=\"padding:10px 12px;border:1px solid #005a9e;\"&amp;gt;Last Seen (IST)&amp;lt;/th&amp;gt;&amp;lt;th style=\"padding:10px 12px;border:1px solid #005a9e;\"&amp;gt;Priority&amp;lt;/th&amp;gt;&amp;lt;th style=\"padding:10px 12px;border:1px solid #005a9e;\"&amp;gt;Action Taken&amp;lt;/th&amp;gt;&amp;lt;th style=\"padding:10px 12px;border:1px solid #005a9e;\"&amp;gt;Subscription ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/thead&amp;gt;&amp;lt;tbody&amp;gt;@{variables('HTMLRows')}&amp;lt;/tbody&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;h3 style=\"border-bottom:2px solid #e65100;padding-bottom:8px;\"&amp;gt;Action Required - No Owner Tag Found&amp;lt;/h3&amp;gt;&amp;lt;div style=\"background:#fff8f0;border:1px solid #ffccbc;padding:16px;border-radius:4px;font-size:13px;margin-bottom:16px;\"&amp;gt;&amp;lt;p style=\"margin:0 0 8px 0;\"&amp;gt;The following &amp;lt;strong&amp;gt;@{length(variables('NoOwnerList'))}&amp;lt;/strong&amp;gt; server(s) have no &amp;lt;strong&amp;gt;ServerOwner&amp;lt;/strong&amp;gt; tag assigned.&amp;lt;/p&amp;gt;&amp;lt;ol style=\"margin:0;padding-left:20px;\"&amp;gt;&amp;lt;li style=\"margin-bottom:6px;\"&amp;gt;Identify the owner of each server below&amp;lt;/li&amp;gt;&amp;lt;li style=\"margin-bottom:6px;\"&amp;gt;Go to the VM in Azure Portal → Tags → Add tag&amp;lt;/li&amp;gt;&amp;lt;li style=\"margin-bottom:6px;\"&amp;gt;&amp;lt;strong&amp;gt;Tag Name:&amp;lt;/strong&amp;gt; ServerOwner | &amp;lt;strong&amp;gt;Tag Value:&amp;lt;/strong&amp;gt; owner email address&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Once tagged, the next daily report will automatically notify the owner&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;table style=\"width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;\"&amp;gt;&amp;lt;thead&amp;gt;&amp;lt;tr style=\"background:#e65100;color:#fff;\"&amp;gt;&amp;lt;th style=\"padding:10px 12px;border:1px solid #bf360c;text-align:left;\"&amp;gt;VM Name&amp;lt;/th&amp;gt;&amp;lt;th style=\"padding:10px 12px;border:1px solid #bf360c;text-align:left;\"&amp;gt;Private IP&amp;lt;/th&amp;gt;&amp;lt;th style=\"padding:10px 12px;border:1px solid #bf360c;text-align:left;\"&amp;gt;MDE Status&amp;lt;/th&amp;gt;&amp;lt;th style=\"padding:10px 12px;border:1px solid #bf360c;text-align:left;\"&amp;gt;Priority&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/thead&amp;gt;&amp;lt;tbody&amp;gt;@{if(equals(length(variables('NoOwnerList')), 0), '&amp;lt;tr&amp;gt;&amp;lt;td colspan=\"4\" style=\"padding:12px;text-align:center;\"&amp;gt;None - All servers have owner tags assigned&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;', join(variables('NoOwnerList'), ''))}&amp;lt;/tbody&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;" }, "toRecipients": [ { "emailAddress": { "address": "@variables('varITTeamEmail')" } } ], "attachments": [ { "@@odata.type": "#microsoft.graph.fileAttachment", "name": "@{concat('MDE-Compliance-Report-', convertTimeZone(utcNow(), 'UTC', 'India Standard Time', 'dd-MM-yyyy'), '.csv')}", "contentType": "text/csv", "contentBytes": "@{base64(variables('CSVRows'))}" } ] }, "saveToSentItems": "true" }, "authentication": { "type": "ManagedServiceIdentity", "audience": "https://graph.microsoft.com" } }, "runtimeConfiguration": { "contentTransfer": { "transferMode": "Chunked" } } } }, "runAfter": { "ForEach-AzureVM": [ "Succeeded" ] }, "else": { "actions": { "Send-AllClearEmail": { "type": "Http", "inputs": { "uri": "@{concat('https://graph.microsoft.com/v1.0/users/', encodeURIComponent(variables('varSenderEmail')), '/sendMail')}", "method": "POST", "headers": { "Content-Type": "application/json" }, "body": { "message": { "subject": "[@{convertTimeZone(utcNow(), 'UTC', 'India Standard Time', 'dd-MM-yyyy')}] MDE Compliance Report - All VMs Compliant", "body": { "contentType": "HTML", "content": "&amp;lt;html&amp;gt;&amp;lt;body style=\"font-family:Segoe UI,Arial,sans-serif;color:#1a1a1a;\"&amp;gt;&amp;lt;div style=\"max-width:600px;margin:24px auto;border:1px solid #e0e0e0;border-radius:8px;overflow:hidden;\"&amp;gt;&amp;lt;div style=\"background:#107c10;padding:20px 28px;\"&amp;gt;&amp;lt;h2 style=\"color:#fff;margin:0;\"&amp;gt;MDE Compliance Report&amp;lt;/h2&amp;gt;&amp;lt;p style=\"color:#c8e6c9;margin:6px 0 0;font-size:13px;\"&amp;gt;Generated: @{convertTimeZone(utcNow(), 'UTC', 'India Standard Time', 'dd-MM-yyyy HH:mm:ss')} IST&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=\"padding:28px;text-align:center;\"&amp;gt;&amp;lt;h2 style=\"color:#107c10;\"&amp;gt;All VMs Compliant&amp;lt;/h2&amp;gt;&amp;lt;p style=\"font-size:15px;color:#555;\"&amp;gt;All Azure Virtual Machines are onboarded to Microsoft Defender for Endpoint and reporting within the required 24-hour window.&amp;lt;/p&amp;gt;&amp;lt;p style=\"font-size:13px;color:#888;\"&amp;gt;No action required. The next report will be sent tomorrow at 08:00 IST.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;" }, "toRecipients": [ { "emailAddress": { "address": "@variables('varITTeamEmail')" } } ] }, "saveToSentItems": "true" }, "authentication": { "type": "ManagedServiceIdentity", "audience": "https://graph.microsoft.com" } }, "runtimeConfiguration": { "contentTransfer": { "transferMode": "Chunked" } } } } }, "expression": { "and": [ { "greater": [ "@variables('NonCompliantCount')", 0 ] } ] }, "type": "If" } }, "parameters": { "$connections": { "type": "Object", "defaultValue": {} } } }, "parameters": { "$connections": { "type": "Object", "value": {} } } }&lt;/LI-CODE&gt;</description>
      <pubDate>Mon, 15 Jun 2026 11:52:45 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/automating-daily-mde-compliance-monitoring-across-azure-vms/ba-p/4528274</guid>
      <dc:creator>SayanRoy</dc:creator>
      <dc:date>2026-06-15T11:52:45Z</dc:date>
    </item>
    <item>
      <title>Analyse Intune Diagnostics Logs with GitHub Copilot</title>
      <link>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/analyse-intune-diagnostics-logs-with-github-copilot/ba-p/4527500</link>
      <description>&lt;P&gt;Hello everyone! I’m Stefan Röll, Cloud Solution Architect at Microsoft Germany for Cloud Endpoints. I work closely with IT Admins to improve their experience with everything around Intune, W365 and Windows. I know that troubleshooting an issue can be time consuming and challenging. In this blog I would like to show you how your troubleshooting skills can be supercharged with AI.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;TL;DR&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;The way I troubleshoot issues has completely changed with GitHub Copilot. I just provide it with Intune Diagnostics Logs, network traces etc. and let the magic happen. The output still requires deep technical skills, but finding the root cause of an issue is just way faster and easier now.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;GitHub Copilot – not only for&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;d&lt;/STRONG&gt;&lt;STRONG&gt;evelopers&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;GitHub Copilot is best known for helping developers to write and fix code.&lt;/P&gt;
&lt;P&gt;But it also has tremendous debugging and troubleshooting skills. And the best part is that it only takes two minutes to set up and you will never go back trying to manually find an issue if you must work through a lot of log files.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Getting started in two minutes&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;Let’s get started:&lt;/P&gt;
&lt;P&gt;Go to &lt;A href="https://github.com/features/copilot/plans" target="_blank" rel="noopener"&gt;https://github.com/features/copilot/plans&lt;/A&gt; and get a GitHub Copilot Subscription. If you are interested in Business or Enterprise subscriptions, please reach out to your Customer Success Account Manager (CSAM) or sales team to get started. It is also likely that you company already has subscriptions that you can get internally.&lt;/P&gt;
&lt;P&gt;Once you’ve got your subscription, Install GitHub Copilot CLI via terminal:&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;winget install GitHub.Copilot&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Now you can start Copilot via the command:&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;copilot&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Next, type&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powerquery"&gt;/login&lt;/LI-CODE&gt;
&lt;P&gt;and log in with your GitHub account.&lt;/P&gt;
&lt;P&gt;Now you should add the Microsoft Learn MCP Server and the included skills. This helps Copilot to search through the Microsoft documentation.&lt;/P&gt;
&lt;P&gt;You can do this with:&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;/plugin install microsoftdocs/mcp&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Copilot is ready for your first troubleshooting session! 🎉&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Example &lt;/STRONG&gt;&lt;STRONG&gt;#1 – Why did our PCs restart during the day?&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;Let’s start with a typical scenario: “All our PCs restarted during business hours. Can you please find the root cause for this?”&lt;/P&gt;
&lt;P&gt;Before Copilot, you had to manually check multiple places to find the root cause. Was it triggered by a Windows update, an app update, a driver issue, or another hidden background process?&lt;/P&gt;
&lt;P&gt;Now the only thing we need are Intune Diagnostics logs. Simply go to your Intune Console and collect diagnostics:&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 they are uploaded, download the .zip file to a local folder like C:\Temp\CopilotAnalysis.&lt;/P&gt;
&lt;P&gt;Next, open a command prompt and go to the folder with the extracted files and start Copilot&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;cd C:\Temp\CopilotAnalysis
copilot&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;With “Shift + TAB” we switch over to the “Autopilot” mode of GitHub Copilot. This will tell Copilot to do its magic without asking for confirmation for each step. You can find more information about this mode here: &lt;A href="https://docs.github.com/en/copilot/concepts/agents/copilot-cli/autopilot" target="_blank" rel="noopener"&gt;https://docs.github.com/en/copilot/concepts/agents/copilot-cli/autopilot&lt;/A&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;If you don’t want that, you can also continue in normal mode, but expect a lot of confirmation prompts.&lt;/P&gt;
&lt;P&gt;With a simple prompt, we can create a deep root cause analysis, and Copilot will use the provided diagnostics logs:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Based on the provided Intune Diagnostics logs, find out why the Windows 11 PC rebooted automatically during business hours. Once you have found the issue, confirm your findings with the configured Microsoft Learn MCP Server. Then create a Root Cause Analysis Report and save it as HTML in the same folder. Include a timeline with relevant events in the report. Extract all needed files like .zip, .cab that you need for the analysis.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;&lt;img /&gt;
&lt;P&gt;Now you can watch Copilot working through the logs and after some minutes you will get a report like this:&lt;/P&gt;
&lt;img /&gt;&lt;img /&gt;
&lt;P&gt;Here we go. You can see that the reboot was caused by a misconfigured Intune app deployment.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;⚠️Please be aware that AI can make mistakes. Never blindly trust the output, especially any recommendations for how to fix an issue. ⚠️&lt;/P&gt;
&lt;P&gt;However, now we have a fantastic starting point. In this case, Copilot correctly identified the root cause and we can fix this in Intune&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;&lt;img /&gt;
&lt;P&gt;It also created the requested timeline&lt;/P&gt;
&lt;img /&gt;
&lt;H4&gt;&lt;STRONG&gt;Example&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;#2 – Why did the Autopilot deployment fail?&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;When Autopilot deployments fail, it can be hard to troubleshoot as you may not have the affected device in front of you. Therefore, it is great that Intune automatically uploads diagnostics logs when this happens. In this example, an Autopilot deployment failed, and we are going to analyse the logs with Copilot.&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;I downloaded the logs to a new folder, opened the terminal, navigated to the folder, and started Copilot:&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now I am going to analyse this with a different prompt:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Analyse the provided Intune Diagnostics logs and find out why this Windows 11 Autopilot deployment failed. Once you have found the issue, confirm your findings with the configured Microsoft Learn MCP Server. Then create a Root Cause Analysis Report and save it as HTML in the same folder. Include a timeline with relevant events in the report. Extract all needed files like .zip, .cab that you need for the analysis.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After a beverage of choice, I had much more clarity on what happened:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Root cause:&lt;/STRONG&gt; Enrollment Status Page (ESP) remained blocked in &lt;STRONG&gt;Account setup&lt;/STRONG&gt; by a required &lt;STRONG&gt;user-targeted WinGet app&lt;/STRONG&gt; that did not complete download/install during the observed log window. The blocking app was &lt;STRONG&gt;Sysinternals Suite - Req - All Users&lt;/STRONG&gt; (Win32App_9c514d25-f55e-4177-af53-ca5ebbcf2619, package 9P7KNL5RWT25).&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Remarks&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;In this blog, I did not cover different models, credits, better prompting, and other improvements you can make to optimise the analysis. I wanted to give IT Pros a quick start with GitHub Copilot CLI.&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;I highly recommend that you try GitHub Copilot yourself the next time you need to troubleshoot an issue. You will be amazed at how good it is at finding the root cause of an issue. This works with all kinds of log files, network traces, and more.&lt;/P&gt;
&lt;P&gt;GitHub Copilot does not replace endpoint expertise, but it can dramatically reduce the time needed to move from raw diagnostics to a validated root-cause hypothesis.&lt;/P&gt;
&lt;P&gt;I hope this blog helped you get started😊&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Stefan Röll&lt;/P&gt;
&lt;P&gt;Cloud Solution Architect – Microsoft Germany&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Helpful resources and references:&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/training/support/mcp" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/training/support/mcp&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/training/support/mcp-get-started" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/training/support/mcp-get-started&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://github.com/features/copilot/plans" target="_blank" rel="noopener"&gt;https://github.com/features/copilot/plans&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://github.com/features/copilot/cli" target="_blank" rel="noopener"&gt;https://github.com/features/copilot/cli&lt;/A&gt;&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Disclaimer:&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;This posting is provided "AS IS" with no warranties and confers no rights&lt;/P&gt;</description>
      <pubDate>Thu, 11 Jun 2026 12:15:59 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/analyse-intune-diagnostics-logs-with-github-copilot/ba-p/4527500</guid>
      <dc:creator>StefanRöll</dc:creator>
      <dc:date>2026-06-11T12:15:59Z</dc:date>
    </item>
  </channel>
</rss>

