Skip to content

Commit 73eff98

Browse files
authored
Merge pull request #1382 from SamErde/docs-NavigationSidebar
Update docs navigation sidebar
2 parents aea6196 + e1165df commit 73eff98

File tree

5 files changed

+88
-58
lines changed

5 files changed

+88
-58
lines changed

website/docs/ca-what-if.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,7 @@ Describe "Contoso.ConditionalAccess" {
6060
$userId = (Get-MgUser -UserId 'john@contoso.com').Id
6161
$sharePointAppId = '67ad5377-2d78-4ac2-a867-6300cda00e85'
6262
63-
$policiesEnforced = Test-MtConditionalAccessWhatIf -UserId $userId `
64-
-IncludeApplications $sharePointAppId `
63+
$policiesEnforced = Test-MtConditionalAccessWhatIf -UserId $userId -IncludeApplications $sharePointAppId
6564
6665
$policiesEnforced.grantControls.builtInControls | Should -Contain "mfa"
6766
}
@@ -80,14 +79,14 @@ Describe "Contoso.ConditionalAccess" {
8079
$userId = (Get-MgUser -UserId 'adele@contoso.com').Id
8180
$azureAppId = 'c44b4083-3bb0-49c1-b47d-974e53cbdf3c'
8281
83-
$policiesEnforced = Test-MtConditionalAccessWhatIf -UserId $userId `
84-
-IncludeApplications $azureAppId `
82+
$policiesEnforced = Test-MtConditionalAccessWhatIf -UserId $userId -IncludeApplications $azureAppId
8583
8684
$policiesEnforced.grantControls.builtInControls | Should -Contain "block"
8785
}
8886
}
8987
```
88+
9089
## Next steps
9190

92-
* To learn more about the **Test-MtConditionalAccessWhatIf** cmdlet, including the supported parameters and examples see [Test-MtConditionalAccessWhatIf | Maester Reference](https://maester.dev/docs/commands/Test-MtConditionalAccessWhatIf).
93-
* For a step by step guide on writing custom Maester tests and running them see [Writing Maester tests](/docs/writing-tests).
91+
- To learn more about the **Test-MtConditionalAccessWhatIf** cmdlet, including the supported parameters and examples see [Test-MtConditionalAccessWhatIf | Maester Reference](https://maester.dev/docs/commands/Test-MtConditionalAccessWhatIf).
92+
- For a step by step guide on writing custom Maester tests and running them see [Writing Maester tests](/docs/writing-tests).

website/docs/export-results.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Exporting results
2+
title: 📤 Exporting results
33
---
44

55
Maester supports exporting test results to CSV and Excel files. This is useful for sharing test results with others or for further analysis in a spreadsheet program.
@@ -38,4 +38,3 @@ To export just the test results without the test suite hierarchy, use the `-Pass
3838
$results = Invoke-Maester -PassThru
3939
Convert-MtResultsToFlatObject -InputObject $results -PassThru
4040
```
41-

website/docs/intro.md

Lines changed: 51 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,71 @@
11
---
2+
title: 📦 Installation guide
23
sidebar_position: 1
3-
title: Introduction
44
---
55

6-
## What is Maester?
6+
- Install the **Maester** PowerShell module, Pester, and the out of the box tests.
77

8-
Maester is a PowerShell based test automation framework to help you stay in control of your Microsoft security configuration.
8+
```powershell
9+
Install-Module Pester -SkipPublisherCheck -Force -Scope CurrentUser
10+
Install-Module Maester -Scope CurrentUser
911
10-
## Why Maester?
12+
md maester-tests
13+
cd maester-tests
14+
Install-MaesterTests
15+
```
1116

12-
As business needs evolve, we often need to make changes to our tenant configuration. As employees come and go, new features are added, and existing features are updated. How do you ensure that a change in one area doesn't introduce a security vulnerability in another?
17+
- Sign into your Microsoft 365 tenant and run the tests.
1318

14-
Take for example conditional access policies. You may have a policy that requires multi-factor authentication for a group of users. What if someone accidentally deletes the group or removes users from the group? **Your conditional access policy is now ineffective.**
19+
```powershell
20+
Connect-Maester
21+
Invoke-Maester
22+
```
1523

16-
Let's take another scenario that is fairly common. What if the original author of the conditional access policy leaves the company and someone else makes a change to the policy without understanding the implications?
24+
## Invoke-Maester
1725

18-
## How does Maester help?
26+
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](commands/Invoke-Maester.mdx) documentation.
1927

20-
What if we could run a set of tests to ensure that our configuration is in compliance with our security policies?
28+
## Optional modules and permissions
2129

22-
That is exactly what Maester does.
30+
Maester includes optional [CISA](tests/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.
2331

24-
:::info[Why Maester?]
32+
### Installing Azure, Exchange Online and Teams modules
2533

26-
Maester helps you monitor your Microsoft 365 tenant by running a set of tests to ensure your configuration is in compliance with your security policies.
34+
```powershell
35+
Install-Module Az.Accounts -Scope CurrentUser
36+
Install-Module ExchangeOnlineManagement -Scope CurrentUser
37+
Install-Module MicrosoftTeams -Scope CurrentUser
38+
```
2739

28-
:::
40+
> The Security & Compliance PowerShell module is dependent on the ExchangeOnlineManagement `Connect-IPPSSession` cmdlet.
2941
30-
Maester provides a framework for you to bring DevOps practices to managing your Microsoft security configuration.
42+
### Connecting to Azure, Exchange and other services
3143

32-
* Define your security policies as code and store them in a version control system.
33-
* Continuously run tests that ensure your tenant configuration is complying with the defined policies.
34-
* Found an incorrect configuration? Create a new test to ensure it doesn't happen again.
35-
* Write tests using [Pester](https://pester.dev/), a popular testing framework for PowerShell.
36-
* Use the built-in tests to quickly get started with monitoring your tenant.
37-
* Write custom tests as you introduce new configuration and codify your intent for the configuration.
44+
In order to run all the CISA tests, you need to connect to the Azure, Exchange Online, and other modules.
3845

39-
## Introducing Maester
46+
For a more detailed introduction to these concepts see the [Connect-Maester](connect-maester/readme.md) documentation.
4047

41-
This introductory session on Maester is from the [PowerShell + DevOps Global Summit 2024](https://www.powershellsummit.org/) and provides an overview of the Maester framework.
48+
Run the following command to interactively connect to the Azure, Exchange Online, and other modules. A sign in window will appear for each module.
4249

43-
<iframe width="640" height="360" src="https://www.youtube.com/embed/xfs02tjSU24" title="Introducing Maester: Your Microsoft 365 test automation framework by Merill Fernando" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
50+
```powershell
51+
Connect-Maester -Service All
52+
```
53+
54+
### Permissions
55+
56+
Exchange Online implements a [role-based access control model](https://learn.microsoft.com/exchange/permissions-exo/permissions-exo). The controls these cmdlets test, require minimum roles of either of the following:
57+
58+
- View-Only Configuration OR
59+
- O365SupportViewConfig
60+
61+
## Next Steps
62+
63+
- Monitoring with Maester
64+
- [Set up Maester on GitHub](monitoring/github.md)
65+
- [Set up Maester on Azure DevOps](monitoring/azure-devops.md)
66+
- [Set up Maester on Azure Container App Jobs](monitoring/azure-container-app-job.md)
67+
- Alerting with Maester
68+
- [Set up Maester email alerts](alerts/email.md)
69+
- [Set up Maester Teams alerts](alerts/teams.md)
70+
- [Set up Maester Slack alerts](alerts/slack.md)
71+
- [Writing Custom Tests](writing-tests/index.mdx)

website/docs/updating-tests.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
---
2-
title: Updating tests
2+
title: 🧪 Updating tests
33
---
44

55
# Updating your Maester tests
66

77
The Maester team will add new tests over time. To get the latest updates, use the commands below to update your GitHub repository with the latest tests.
88

9-
## Step 1: Change to the folder with your tests
9+
### Step 1: Change to the folder with your tests
1010

1111
Open a command prompt and navigate to the folder where you have your Maester tests.
1212

1313
```powershell
1414
cd maester-tests
1515
```
1616

17-
## Step 2: Update the Maester module
17+
### Step 2: Update the Maester module
1818

1919
Update the **Maester** PowerShell module to the latest version and load it.
2020

@@ -23,7 +23,7 @@ Update-Module Maester -Force
2323
Import-Module Maester
2424
```
2525

26-
## Step 3: Update the tests folder
26+
### Step 3: Update the tests folder
2727

2828
You will be prompted to confirm changes to the tests folder.
2929

website/sidebars.js

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,35 @@
44
const sidebars = {
55
siteSidebar: [
66
"intro",
7-
"installation",
87
{
98
type: "category",
10-
label: "👁️‍🗨️ Monitoring with Maester",
11-
collapsed: true,
12-
collapsible: true,
13-
items: [{ type: "autogenerated", dirName: "monitoring" }],
14-
},
15-
{
16-
type: "category",
17-
label: "📮 Maester Alerts",
9+
label: "⚙️ Configure Maester",
1810
collapsed: true,
1911
collapsible: true,
20-
items: [{ type: "autogenerated", dirName: "alerts" }],
12+
link: {type: 'doc', id: 'configuration/overview'},
13+
items: [{ type: "autogenerated", dirName: "configuration" }],
2114
},
2215
{
2316
type: "category",
24-
label: "🛠️ Writing custom tests",
25-
collapsed: false,
17+
label: "🔗 Connect-Maester",
18+
collapsed: true,
2619
collapsible: true,
27-
items: [{ type: "autogenerated", dirName: "writing-tests" }],
20+
items: [{ type: "autogenerated", dirName: "connect-maester" }],
2821
},
22+
"export-results",
2923
{
3024
type: "category",
31-
label: "⚙️ Configure Maester",
32-
collapsed: false,
25+
label: "👁️‍🗨️ Monitoring with Maester",
26+
collapsed: true,
3327
collapsible: true,
34-
link: {type: 'doc', id: 'configuration/overview'},
35-
items: [{ type: "autogenerated", dirName: "configuration" }],
28+
items: [{ type: "autogenerated", dirName: "monitoring" }],
3629
},
37-
"ca-what-if",
38-
"updating-tests",
39-
"export-results",
4030
{
4131
type: "category",
42-
label: "Connect-Maester",
43-
collapsed: false,
32+
label: "📮 Maester Alerts",
33+
collapsed: true,
4434
collapsible: true,
45-
items: [{ type: "autogenerated", dirName: "connect-maester" }],
35+
items: [{ type: "autogenerated", dirName: "alerts" }],
4636
},
4737
"watch",
4838
"contributing",
@@ -86,6 +76,19 @@ const sidebars = {
8676
type: "html",
8777
value: '<span class="sidebar-divider" />',
8878
},
79+
"ca-what-if",
80+
{
81+
type: "html",
82+
value: '<span class="sidebar-divider" />',
83+
},
84+
"updating-tests",
85+
{
86+
type: "category",
87+
label: "🛠️ Writing custom tests",
88+
collapsed: true,
89+
collapsible: true,
90+
items: [{ type: "autogenerated", dirName: "writing-tests" }],
91+
}
8992
"tests/tags/overview",
9093
],
9194
},
@@ -97,6 +100,7 @@ const sidebars = {
97100
type: "category",
98101
label: "Command Reference",
99102
collapsed: true,
103+
//className: "powershell",
100104
items: [{ type: "autogenerated", dirName: "commands" }],
101105
},
102106
],

0 commit comments

Comments
 (0)