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 - 自动化合规检查器 [![PowerShell Gallery](https://img.shields.io/powershellgallery/v/CIS-M365-Benchmark.svg)](https://www.powershellgallery.com/packages/CIS-M365-Benchmark) [![PowerShell Gallery Downloads](https://img.shields.io/powershellgallery/dt/CIS-M365-Benchmark.svg)](https://www.powershellgallery.com/packages/CIS-M365-Benchmark) [![PowerShell](https://img.shields.io/badge/PowerShell-5.1%2B%20%7C%207%2B-blue.svg)](https://github.com/PowerShell/PowerShell) [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![CIS Benchmark](https://img.shields.io/badge/CIS%20Benchmark-v6.0.0-orange.svg)](https://www.cisecurity.org/) [![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-Support-yellow.svg)](https://buymeacoffee.com/mohammedsiddiqui) [![PowerShellNerd Profile](https://img.shields.io/badge/PowerShellNerd-Profile-purple.svg)](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
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 报告在打印时强制使用浅色主题
## 功能特性 - **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) 无关,也未受其认可。此脚本按“原样”提供,用于合规性评估目的。请务必先在非生产环境中进行测试。
标签:AI合规, ATTACK-Python-Client, CIS Benchmark, DevSecOps, GPT, Graph API, Intune, IPv6, IT运维, Libemu, M365, Microsoft 365, Office 365, PowerShell, Socks5代理, Teams, Web报告查看器, 上游代理, 动态调试, 合规报告, 基线扫描, 安全基线, 安全配置, 对称加密, 指令遵循, 教学环境, 漏洞管理, 自动化审计