Installation guide
- Install the Maester PowerShell module, Pester, and the out-of-the-box tests.
Install-Module Pester -MinimumVersion 5.7.1 -MaximumVersion 5.7.1 -SkipPublisherCheck -Force -Scope CurrentUserInstall-Module Maester -Scope CurrentUser
md maester-testscd maester-testsInstall-MaesterTests- Sign into your Microsoft 365 tenant and run the tests.
Connect-MaesterInvoke-MaesterInvoke-Maester
Section titled “Invoke-Maester”To learn more about the Invoke-Maester cmdlet including how to filter tests, and customize the run of the Pester configuration, see the Invoke-Maester documentation.
Optional modules and permissions
Section titled “Optional modules and permissions”Maester includes optional CISA tests that require additional permissions and modules to run. These optional tests are skipped if the modules are not installed or there is no active connection.
Also see Create-entra-app
Installing Azure, Exchange Online, Teams and PnP.PowerShell modules
Section titled “Installing Azure, Exchange Online, Teams and PnP.PowerShell modules”Install-Module Az.Accounts, ExchangeOnlineManagement, MicrosoftTeams, PnP.PowerShell -Scope CurrentUserThe Security & Compliance PowerShell module is dependent on the ExchangeOnlineManagement
Connect-IPPSSessioncmdlet.
Connecting to Azure, Exchange, and other services
Section titled “Connecting to Azure, Exchange, and other services”In order to run all the CISA tests, you need to connect to the Azure, Exchange Online, and other modules.
For a more detailed introduction to these concepts see the Connect-Maester documentation.
Run the following command to interactively connect to the Azure, Microsoft Graph, Exchange Online, and other modules. A sign-in window will appear for each module.
Connect-Maester -Service AllConnecting to GitHub
Section titled “Connecting to GitHub”GitHub is an optional connection for GitHub security tests and is not included in Connect-Maester -Service All.
For interactive sessions, use the Maester GitHub App OAuth flow:
Connect-Maester -Service Graph,GitHub -GitHubOrganization '<github-organization>'See Connect to GitHub (optional) for GitHub App install/approval details and token-based automation options.
Permissions
Section titled “Permissions”Exchange Online implements a role-based access control model. The controls these cmdlets test require minimum roles of either of the following:
- View-Only Configuration OR
- O365SupportViewConfig
Installing Azure DevOps PowerShell module
Section titled “Installing Azure DevOps PowerShell module”Install-Module ADOPS -Scope CurrentUserConnecting to Azure DevOps
Section titled “Connecting to Azure DevOps”In order to run all the Azure DevOps tests, you need to connect to Azure DevOps.
This is currently not included as part of Connect-Maester and must be called separately. Run the following command to interactively connect using the Azure DevOps modules. A sign-in window will appear.
Example with PowerShell variable
$AdoPSAllowInsecureAPIs = $trueImport-Module ADOPSConnect-ADOPS -Organization <Name Of DevOps Organization>Example with ArgumentList
Import-Module ADOPS -ArgumentList $trueConnect-ADOPS -Organization <Name Of DevOps Organization>Note: Some of the API endpoints used for Azure DevOps tests use unsupported endpoints. To allow usage of unsupported endpoints, you must set
$truein the argumentlist when importing the module, or set a PowerShell variable called “$AdoPSAllowInsecureAPIs” to$truebefore importing the module. Reference: https://github.com/AZDOPS/AZDOPS/issues/248
Permissions
Section titled “Permissions”Azure DevOps implements a role-based access control model. The controls these cmdlets test require the minimum role of:
- Project-Scoped Users at Organization level
Next Steps
Section titled “Next Steps”- Monitoring with Maester
- Alerting with Maester
- Writing Custom Tests