ScubaGear: M365 Security Assessment Tool
ScubaGear is CISA's own PowerShell tool for checking a Microsoft 365 tenant's settings against the SCuBA secure configuration baselines, grading the results with Open Policy Agent instead of a simple pass/fail script. Reach for it if you're the administrator accountable for M365 hardening or a BOD 25-01 submission; skip it if you just want a quick posture glance, since building the YAML config and reading the report both take real setup time.
What ScubaGear Does
ScubaGear is a PowerShell module CISA built to check a Microsoft 365 tenant against the SCuBA Secure Configuration Baseline documents. It works in three stages: pull the tenant's current settings through Microsoft's own APIs, hand those settings to Open Policy Agent for comparison against Rego rules derived from the baselines, then emit the outcome as an HTML report, a JSON file, and a CSV export.
Target Audience for ScubaGear
ScubaGear is aimed squarely at M365 administrators โ the people responsible for actually running the tenant, not general IT staff or end users. If you're the one who owns Entra ID, Exchange Online, SharePoint, Teams, or Power Platform settings and need to prove those settings meet CISA's baselines, especially for a BOD 25-01 submission, this is built for your job specifically. If you just want a general M365 health dashboard without baseline-grading rigor, Microsoft's own Secure Score inside the admin center is a lighter starting point.
Assessing M365 Tenant Security
Checking a Microsoft 365 tenant against CISA's Secure Configuration Baselines by hand means reading seven separate baseline documents and manually comparing each control to live tenant settings โ slow, error-prone, and inconsistent from one reviewer to the next. ScubaGear automates that comparison: it pulls current M365 configuration through the platform's own APIs, evaluates it against Rego policies written straight from the SCuBA baselines using Open Policy Agent, and hands back the same HTML/JSON/CSV report every time, whether it's your first run or your fiftieth.
Key Capabilities and Output
- โA three-step assessment pipeline: PowerShell pulls current M365 configuration through Microsoft's APIs, Open Policy Agent checks it against Rego rules built from the SCuBA baselines, then the results get written out.
- โSeven baseline areas: Microsoft Entra ID, the Security Suite, Exchange Online, Power BI, Power Platform, SharePoint, and Teams, each documented in its own baseline file.
- โControls trace to two frameworks โ NIST SP 800-53 and MITRE ATT&CK โ per the mappings document the README links to.
- โA Scuba Configuration UI, launched with `Start-ScubaConfigApp`, gives you a step-by-step wizard, live YAML preview, and Microsoft Graph integration for picking users and groups instead of hand-editing config files.
- โThree report formats per run: an interactive HTML report, a structured JSON file, and a CSV export for spreadsheet work.
- โA YAML config file drives exclusions, annotations, and omissions, so accepted risk gets documented instead of silently skipped.
- โBuilt-in maintenance commands: `Update-ScubaGear` for routine updates and `Reset-ScubaGearDependencies` for a full dependency reinstall.
Installing ScubaGear
Installing ScubaGear means PowerShell 5 on Windows โ the README's install steps don't cover Linux or macOS. From PSGallery: `Install-Module -Name ScubaGear`, then `Initialize-SCuBA` to pull in the minimum required dependencies, then `Invoke-SCuBA -Version` to confirm it installed correctly. To update later, run `Update-ScubaGear`; for a full dependency reinstall, `Reset-ScubaGearDependencies` (the README says to read the Update Guide first).
Running Your First Assessment
The first run should skip the config file: `Invoke-SCuBA -ProductNames *` reads your tenant's current settings across all products and writes a baseline template without changing anything. On v2.0.0, logging in interactively to a non-commercial tenant (GCC or GCC High) still needs `-M365Environment` passed manually โ the README says auto-detection is planned for a later release. From there, copy one of the sample YAML files, edit it to match your intended policies, and rerun with `-ConfigFilePath`. Add `-Organization` for a BOD 25-01 submission, or `-SilenceBODWarnings` for any other use.
Strengths
- โFree and public-domain-licensed (CC0-1.0) โ no licensing friction for a government-built compliance tool.
- โThree output formats out of the box (HTML, JSON, CSV) instead of a report format you have to parse yourself.
- โCompliance mapping is already done for you โ controls tie to NIST SP 800-53 and MITRE ATT&CK, so you're not starting a framework crosswalk from scratch.
- โA GUI (Scuba Configuration UI) exists for people who'd rather not hand-write YAML, alongside the CLI path for automation.
- โUpdate and dependency-reset commands are built in (`Update-ScubaGear`, `Reset-ScubaGearDependencies`) instead of left to manual reinstalls.
Prerequisites and Configuration Needs
- โณInstall steps in the README are Windows-only โ PowerShell 5 on a Windows computer โ with no Linux or macOS path documented.
- โณA YAML configuration file is required specifically for CISA BOD 25-01 submissions; skip it and ScubaGear runs on a default configuration the README warns may not reflect your actual policies.
- โณThe first, config-free run only produces a baseline template โ you still have to review it, build a real YAML file, and run again before results reflect your intended settings.
- โณOn v2.0.0, non-commercial tenants (GCC, GCC High) need the `-M365Environment` parameter set by hand for interactive login; the README says automatic detection isn't built yet.
- โณRunning an assessment needs specific M365 permissions set up first โ interactive or non-interactive โ which the README defers to a separate prerequisites section rather than listing inline.
Related Assessment Tools
Common Questions About ScubaGear
ScubaGear is released under the Creative Commons Zero (CC0-1.0) license, per its GitHub license file โ effectively a public domain dedication with no usage restrictions.
ScubaGear assesses Microsoft Entra ID, the Security Suite, Exchange Online, Power BI, Power Platform, SharePoint, and Teams, each against its own SCuBA baseline document.
ScubaGear produces three report formats per run: an interactive HTML report, a structured JSON file, and a CSV export for spreadsheet analysis.
ScubaGear runs without one for an initial baseline scan, but the README says a YAML configuration file is required if the assessment is meant for a CISA BOD 25-01 submission.
ScubaGear supports BOD 25-01 submissions when run with a YAML configuration file and the `-Organization` parameter, per the command shown in its README.
ScubaGear includes a Scuba Configuration UI, launched with `Start-ScubaConfigApp`, offering a setup wizard with live YAML preview and Microsoft Graph integration for picking users and groups.
Best use cases
- โขRunning a config-free first pass to see your tenant's current M365 posture before deciding what needs fixing.
- โขDocumenting accepted risk in a YAML file (exclusions, annotations, omissions) so repeat runs don't re-flag decisions you've already made.
- โขPreparing a CISA BOD 25-01 submission, which per the README needs the YAML config file and the `-Organization` parameter rather than the defaults.
- โขWiring ScubaGear into unattended pipelines through ScubaConnect, the separate CISA infrastructure project the README names for automating ScubaGear and ScubaGoggles runs.
Related repositories
Want a second opinion on ScubaGear?
Ask an AI that can read this page โ one click and you get its take on ScubaGear.
