<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ievgen Bondarenko</title>
    <description>The latest articles on DEV Community by Ievgen Bondarenko (@ibondarenko1).</description>
    <link>https://dev.to/ibondarenko1</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3948300%2Fe60435e8-75f4-44d3-9f95-3632be021ed0.png</url>
      <title>DEV Community: Ievgen Bondarenko</title>
      <link>https://dev.to/ibondarenko1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ibondarenko1"/>
    <language>en</language>
    <item>
      <title>Walking through a 5-domain Microsoft 365 audit in 30 seconds</title>
      <dc:creator>Ievgen Bondarenko</dc:creator>
      <pubDate>Sat, 23 May 2026 22:05:28 +0000</pubDate>
      <link>https://dev.to/ibondarenko1/walking-through-a-5-domain-microsoft-365-audit-in-30-seconds-1bp</link>
      <guid>https://dev.to/ibondarenko1/walking-through-a-5-domain-microsoft-365-audit-in-30-seconds-1bp</guid>
      <description>&lt;p&gt;If you administer a small Microsoft 365 tenant, here's the question that probably stopped you somewhere between "I should check our security posture" and actually doing it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which tool?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Microsoft Secure Score gives recommendations but no remediation artifacts. CISA ScubaGear is excellent but federal-grade, overkill for a 20-person mid-market shop. M365DSC is configuration-as-code, which is great when you're a DSC shop and terrible when you're not. CIPP is purpose-built for MSPs managing many tenants, and solo defenders don't need that fan-out.&lt;/p&gt;

&lt;p&gt;There was a gap: an opinionated audit-plus-remediation toolkit for a solo defender running M365 + Cloudflare in a small org. I built one. Tagged 1.0 today.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ibondarenko1/m365-security-operations" rel="noopener noreferrer"&gt;github.com/ibondarenko1/m365-security-operations&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it actually does
&lt;/h2&gt;

&lt;p&gt;One PowerShell command sweeps five domains, produces a single markdown report ranking findings P1/P2/P3, and links every gap to a ready-to-deploy remediation artifact:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Domain&lt;/th&gt;
&lt;th&gt;Audit&lt;/th&gt;
&lt;th&gt;Remediation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sentinel detection engineering&lt;/td&gt;
&lt;td&gt;Workspace state, daily quota, retention, Sentinel onboarding, analytics rules, Fusion, Activity Log diagnostic, data connectors, workbooks, hunting queries, automation playbooks, watchlists, UEBA, threat intelligence&lt;/td&gt;
&lt;td&gt;5 MITRE-mapped ARM templates + 10 KQL hunting drills&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Defender for Office 365&lt;/td&gt;
&lt;td&gt;Anti-phish impersonation, anti-spam, anti-malware, Safe Attachments, Safe Links, Tenant Allow/Block List, DKIM, ZAP, outbound thresholds, transport rules, Attack Simulation Training&lt;/td&gt;
&lt;td&gt;Exchange Online PowerShell remediation scripts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DNS + email authentication&lt;/td&gt;
&lt;td&gt;MX, SPF, DKIM, DMARC, MTA-STS, TLS-RPT, BIMI, NS, Autodiscover, CAA, DNSSEC, SPF lookup count, DMARC sub-policy&lt;/td&gt;
&lt;td&gt;Cloudflare Worker + DNS deployment script for MTA-STS + TLS-RPT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Identity hardening&lt;/td&gt;
&lt;td&gt;Conditional Access policies, authorization policy, directory roles, sign-in logs, authentication methods, app consent, service principal credentials, named locations, cross-tenant access, sign-in risk, SSPR&lt;/td&gt;
&lt;td&gt;6 baseline Conditional Access policy JSONs ready for Graph PUT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Defender for Cloud&lt;/td&gt;
&lt;td&gt;Per-plan pricing tier, Secure Score, recommendations by severity, AI plane, continuous export to Sentinel&lt;/td&gt;
&lt;td&gt;Plan-tier upgrade methodology + walkthrough&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every finding is tagged with framework controls: NIST CSF 2.0, NIST SP 800-53, NIST SP 800-63B, ISO 27001:2022, MITRE ATT&amp;amp;CK, Microsoft Cloud Security Benchmark, RFC references.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it in 30 seconds
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;git&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;clone&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://github.com/ibondarenko1/m365-security-operations&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;m365-security-operations&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;/examples/run-mock.ps1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That runs the full audit against bundled sanitized fixtures and produces a complete sample report (58 findings across 5 domains). No Azure access required. Open &lt;code&gt;reports/&amp;lt;latest-timestamp&amp;gt;/report.md&lt;/code&gt; to see exactly what the tool produces.&lt;/p&gt;

&lt;p&gt;When you're ready to run against your tenant:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;az&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;login&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--tenant&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;your-tenant-id&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;/run-audit.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-TenantId&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-SubscriptionId&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Domain&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;yourdomain&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-WorkspaceName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ws&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ResourceGroup&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;rg&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why opinionated scope matters
&lt;/h2&gt;

&lt;p&gt;This toolkit explicitly does NOT cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-tenant MSP management (use CIPP)&lt;/li&gt;
&lt;li&gt;Federal compliance overlays (use ScubaGear)&lt;/li&gt;
&lt;li&gt;On-premises Active Directory (use Defender for Identity)&lt;/li&gt;
&lt;li&gt;Endpoint detection at device level (use Defender for Endpoint native)&lt;/li&gt;
&lt;li&gt;Data Loss Prevention (use Microsoft Purview)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The toolkit is opinionated for &lt;strong&gt;small-org cloud-only M365 + Cloudflare&lt;/strong&gt;. Concentration enables depth: each domain has 15-25 checks, not the surface-level 5 a broader-scope tool can maintain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture you can actually contribute to
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Schema-first: every audit script emits findings conforming to &lt;code&gt;SCHEMA.md&lt;/code&gt;, enforced by &lt;code&gt;lib/Finding.psm1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Mock mode: &lt;code&gt;lib/MockClient.psm1&lt;/code&gt; provides drop-in mocks for Graph + ARM + DNS + EXO. Contributors iterate on audit logic without burning real-tenant quota&lt;/li&gt;
&lt;li&gt;114 Pester tests in CI on Windows + Linux + Mac&lt;/li&gt;
&lt;li&gt;6 Architecture Decision Records document the design rationale&lt;/li&gt;
&lt;li&gt;5 walkthroughs cover end-to-end deployment of the remediation artifacts&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;v1.0 is the public-release baseline. Roadmap continues with v1.1-v1.5 expanding per-domain checks, adding documentation_url to every finding (currently P1/P2 only), and surfacing community-contributed checks.&lt;/p&gt;

&lt;p&gt;If you administer M365 in a small org, give it a try and open issues for what you'd like to see next.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ibondarenko1/m365-security-operations" rel="noopener noreferrer"&gt;github.com/ibondarenko1/m365-security-operations&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;MIT licensed. Methodology, schema, fixtures, walkthroughs, ADRs, Pester tests, and CI matrix all in the repo.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>microsoft</category>
      <category>azure</category>
      <category>powershell</category>
    </item>
  </channel>
</rss>
