mohammedsiddiqui6872/CIS-Microsoft-365-Foundations-Benchmark
GitHub: mohammedsiddiqui6872/CIS-Microsoft-365-Foundations-Benchmark
基于PowerShell的Microsoft 365合规性自动化审计工具,对照CIS基准检查140项控制措施并生成HTML/CSV报告。
Stars: 11 | Forks: 4
# CIS Microsoft 365 Foundations Benchmark v6.0.0 - 自动化合规检查器
[](https://www.powershellgallery.com/packages/CIS-M365-Benchmark)
[](https://www.powershellgallery.com/packages/CIS-M365-Benchmark)
[](https://github.com/PowerShell/PowerShell)
[](LICENSE)
[](https://www.cisecurity.org/)
[](https://buymeacoffee.com/mohammedsiddiqui)
[](https://powershellnerd.com/profile/mohammedsiddiqui)
一个综合性的 PowerShell 模块,可根据 **全部 140 项 CIS Microsoft 365 Foundations Benchmark v6.0.0 控制措施** 审计您的 Microsoft 365 环境,并生成详细的 HTML 和 CSV 合规报告。
## v5.1.0 版本更新内容
**v5.1.0 - 排除章节、断开连接、Scope 修复及排序**
- **`-ExcludeSections` 参数** - 跳过 Intune、Teams 或 PowerBI 等章节(非常适合混合环境)
- **`Disconnect-CISM365Benchmark`** - 干净地断开所有 M365 会话 (Graph, Exchange, SPO, Teams, IPPS)
- **修复控制措施 1.3.4 & 1.3.5** - 添加了缺失的 `OrgSettings-AppsAndServices.Read.All` 和 `OrgSettings-Forms.Read.All` Graph scope
- **修复报告排序** - 诸如 9.1.10 的控制措施现在能正确排在 9.1.9 之后(而不是 9.1.2 之前)
- **版本对齐** - 所有文件现在统一显示为 v5.1.0
## 功能特性
- **140 项合规控制措施**,覆盖所有 M365 服务
- **95% 完全自动化** - 133 项控制措施通过 Microsoft Graph API 和原生 REST API 自动运行
- **明/暗主题切换** - HTML 报告支持切换主题及适合打印的输出
- **零参数身份验证** - `Connect-CISM365Benchmark` 采用基于 MSAL 的 token 管理
- **双重报告格式** - 专业的 HTML 和 CSV 报告,带有浮动操作按钮
- **基于配置文件的过滤** - 检查 L1、L2 或所有控制措施
- **安全认证** - 现代 OAuth 2.0 与 MSAL token 缓存
- **只读评估** - 不对您的环境进行任何更改
- **可操作的修复建议** - 每项失败的检查都包含具体的修复步骤
- **兼容 PowerShell 5.1 & 7+** - 适用于 Windows PowerShell 和 PowerShell Core
- **缓存 API 调用** - 通过智能缓存减少 80% 的 API 调用
## 自动化覆盖范围
| 类别 | 控制措施总数 | 已自动化 | 手动 | 覆盖率 |
|----------|---------------|-----------|--------|----------|
| **第 1 部分:M365 Admin** | 15 | 13 | 2 | 87% |
| **第 2 部分:M365 Defender** | 20 | 18 | 2 | 90% |
| **第 3 部分:Purview** | 4 | 4 | 0 | 100% |
| **第 4 部分:Intune** | 2 | 2 | 0 | 100% |
| **第 5 部分:Entra ID** | 45 | 43 | 2 | 96% |
| **第 6 部分:Exchange** | 12 | 12 | 0 | 100% |
| **第 7 部分:SharePoint** | 13 | 12 | 1 | 92% |
| **第 8 部分:Teams** | 17 | 17 | 0 | 100% |
| **第 9 部分:Power BI** | 12 | 12 | 0 | 100% |
| **总计** | **140** | **133** | **7** | **95%** |
## 安装
```
# 从 PowerShell Gallery 安装
Install-Module -Name CIS-M365-Benchmark -Scope CurrentUser
# 更新到最新版本
Update-Module -Name CIS-M365-Benchmark
```
## 先决条件
### 必需的 PowerShell 模块
首次使用该模块时,以下模块会**自动安装**:
| 模块 | 用途 |
|--------|---------|
| `Microsoft.Graph` (v2.0+) | Entra ID, Conditional Access, PIM, Authentication Methods |
| `ExchangeOnlineManagement` (v3.1+) | Exchange Online 配置检查 |
| `Microsoft.Online.SharePoint.PowerShell` | SharePoint Online 租户配置检查 |
| `MicrosoftTeams` | Teams 会议、消息传递和联盟策略 |
### 所需权限
您的账户需要以下权限:
**Microsoft Graph API:**
- `Directory.Read.All`
- `Policy.Read.All`
- `AuditLog.Read.All`
- `UserAuthenticationMethod.Read.All`
- `IdentityRiskyUser.Read.All`
- `Application.Read.All`
- `Organization.Read.All`
- `User.Read.All`
- `Group.Read.All`
- `RoleManagement.Read.All`
- `Reports.Read.All`
- `DeviceManagementConfiguration.Read.All`
- `DeviceManagementServiceConfig.Read.All`
- `OrgSettings-AppsAndServices.Read.All`
- `OrgSettings-Forms.Read.All`
**Exchange Online:**
- View-Only Organization Management 或更高权限
**SharePoint Online:**
- SharePoint Administrator 或 Global Administrator
**Microsoft Teams:**
- Teams Administrator 或 Global Administrator
## 使用方法
```
# 快速入门 - 3 步
Import-Module CIS-M365-Benchmark
Connect-CISM365Benchmark
Invoke-CISM365Benchmark
# 手动指定 Tenant
Invoke-CISM365Benchmark `
-TenantDomain "contoso.onmicrosoft.com" `
-SharePointAdminUrl "https://contoso-admin.sharepoint.com"
# 仅检查 L1 或 L2 控制
Invoke-CISM365Benchmark -ProfileLevel "L1"
Invoke-CISM365Benchmark -ProfileLevel "L2"
# 排除特定部分(适用于混合环境)
Invoke-CISM365Benchmark -ExcludeSections Intune
Invoke-CISM365Benchmark -ExcludeSections Intune, Teams, PowerBI
# 自定义输出目录
Invoke-CISM365Benchmark -OutputPath "C:\CIS-Reports"
# 设备代码认证(无头/远程会话)
Connect-CISM365Benchmark -UseDeviceCode
Invoke-CISM365Benchmark
# 包含所有参数的完整示例
Invoke-CISM365Benchmark `
-TenantDomain "contoso.onmicrosoft.com" `
-SharePointAdminUrl "https://contoso-admin.sharepoint.com" `
-ProfileLevel "All" `
-OutputPath "C:\Security\CIS-Reports" `
-ExcludeSections Intune `
-Verbose
# 完成后断开所有 M365 会话
Disconnect-CISM365Benchmark
# 查找特定控制
Get-CISM365BenchmarkControl -ControlNumber "5.2.2.1"
# 检查先决条件和模块版本
Test-CISM365BenchmarkPrerequisites
# 模块信息
Get-CISM365BenchmarkInfo
```
### 可用的 ExcludeSections 值
| 值 | 章节 |
|-------|---------|
| `AdminCenter` | 第 1 部分:Microsoft 365 Admin Center |
| `Defender` | 第 2 部分:Microsoft 365 Defender |
| `Purview` | 第 3 部分:Microsoft Purview |
| `Intune` | 第 4 部分:Microsoft Intune |
| `EntraID` | 第 5 部分:Microsoft Entra ID |
| `Exchange` | 第 6 部分:Exchange Online |
| `SharePoint` | 第 7 部分:SharePoint Online |
| `Teams` | 第 8 部分:Microsoft Teams |
| `PowerBI` | 第 9 部分:Power BI |
## 输出报告
### HTML 报告
- **文件**:`CIS-M365-Compliance-Report_YYYYMMDD_HHMMSS.html`
- 专业报告,带有**明/暗主题切换**(偏好设置保存至 localStorage)
- 摘要仪表板,包含进度条、L1/L2 细分和合规性统计数据
- 可过滤的结果表,支持搜索,并为每个失败的控制措施提供修复步骤
- 适合打印的输出(自动强制使用浅色主题)
### CSV 报告
- **文件**:`CIS-M365-Compliance-Report_YYYYMMDD_HHMMSS.csv`
- 导入 Excel 以进行长期跟踪或进一步分析
### 审计日志
- **文件**:`CIS-M365-Audit_YYYYMMDD_HHMMSS.log`
- 记录每个检查结果的时间戳日志,作为合规证据
## 故障排除
**问题:“Connect-CISM365Benchmark is not recognized”**
- 安装最新版本:`Install-Module -Name CIS-M365-Benchmark -Scope CurrentUser -Force`
**问题:身份验证浏览器窗口未打开**
- 使用设备代码身份验证:`Connect-CISM365Benchmark -UseDeviceCode`
**问题:多次登录提示**
- 正常现象。每个 M365 服务 (Graph, Exchange, SharePoint, Teams) 可能会单独提示。
**问题:SPO 身份验证在 PowerShell 7+ 上失败**
- 该模块会自动处理此问题。如果问题仍然存在,请尝试使用 Windows PowerShell 5.1。
**问题:PIM 或 Identity Governance 错误**
- 确保 PIM 已获授权。控制措施 5.3.4/5.3.5 需要 Entra ID P2。
## 安全注意事项
- **只读**:脚本仅读取配置,绝不修改设置
- **安全认证**:使用 OAuth 2.0 现代身份验证
- **不存储凭据**:身份验证 token 仅基于会话存在
- **无 MSOL 依赖**:已完全迁移至 Microsoft Graph API
- **审计追踪**:所有检查均带有时间戳记录
- **敏感数据**:报告可能包含租户配置详情 - 请妥善保管
## 许可证
本项目采用 MIT 许可证授权 - 详情请参阅 [LICENSE](LICENSE) 文件。
## 参考资料
- [CIS Microsoft 365 Foundations Benchmark v6.0.0](https://www.cisecurity.org/benchmark/microsoft_365)
- [Microsoft Graph API 文档](https://docs.microsoft.com/en-us/graph/)
- [Microsoft 365 安全最佳实践](https://docs.microsoft.com/en-us/microsoft-365/security/)
## 作者
**Mohammed Siddiqui**
- LinkedIn: [聊聊吧!](https://www.linkedin.com/in/mohammedsiddiqui6872/)
- Profile: [PowerShellNerd Profile](https://powershellnerd.com/profile/mohammedsiddiqui)
## 支持
如有问题、疑问或建议:
- [提交 Issue](https://github.com/mohammedsiddiqui6872/CIS-Microsoft-365-Foundations-Benchmark/issues)
- [发起讨论](https://github.com/mohammedsiddiqui6872/CIS-Microsoft-365-Foundations-Benchmark/discussions)
**如果您觉得这个工具有帮助,请考虑给它一个 Star!**
**免责声明**:本工具包与 Microsoft Corporation 或 CIS (Center for Internet Security) 无关,也未受其认可。此脚本按“原样”提供,用于合规性评估目的。请务必先在非生产环境中进行测试。
v5.0.0 - 95% 自动化、MSAL 认证、Fabric API 及主题切换
- **95% 自动化** - 140 项控制措施中有 133 项现已完全自动化(从 92 项提升) - **基于 MSAL 的身份验证** - Graph + SharePoint token 在连接时获取,减少登录提示 - **全部 12 项 Power BI/Fabric 控制措施自动化** - 通过 MSAL token 进行原生 Fabric Admin API 集成 - **安全与合规中心集成** - Purview DLP 和保留策略检查通过 `Connect-IPPSSession` 自动化 - **解决 MSAL 程序集冲突** - 隔离子进程用于 Fabric token 获取 - **明/暗主题切换** - HTML 报告现包含带有 localStorage 持久化的主题切换器 - **减少 80% API 调用** - 跨所有部分的智能缓存 - **MSOnline 模块完全退役** - 100% 使用 Microsoft Graph API - **打印覆盖** - HTML 报告在打印时强制使用浅色主题标签:AI合规, ATTACK-Python-Client, CIS Benchmark, DevSecOps, GPT, Graph API, Intune, IPv6, IT运维, Libemu, M365, Microsoft 365, Office 365, PowerShell, Socks5代理, Teams, Web报告查看器, 上游代理, 动态调试, 合规报告, 基线扫描, 安全基线, 安全配置, 对称加密, 指令遵循, 教学环境, 漏洞管理, 自动化审计