Galvnyz/M365-Assess

GitHub: Galvnyz/M365-Assess

面向IT顾问和管理员的只读式Microsoft 365安全评估工具,一键生成多框架合规报告。

Stars: 58 | Forks: 13

# M365 评估
M365 Assess ### 综合性 M365 安全评估工具 **面向 IT 顾问和管理员的只读 Microsoft 365 安全评估** [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/0f35e6c409222118.svg)](https://github.com/Galvnyz/M365-Assess/actions/workflows/ci.yml) [![PowerShell 7.x](https://img.shields.io/badge/PowerShell-7.x-blue?logo=powershell&logoColor=white)](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows) [![Read-Only](https://img.shields.io/badge/Operations-Read--Only-brightgreen)](.) [![Version](https://img.shields.io/badge/version-0.9.8-blue)](.) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
运行单个命令即可生成 CSV 报告、品牌化 HTML 评估报告以及涵盖身份、电子邮件、安全、设备、协作和合规基线的 XLSX 合规矩阵。**169 项自动化安全检查**映射至 **14 个合规框架**。 ## 快速开始 ``` # 1. 克隆 repository git clone https://github.com/Galvnyz/M365-Assess.git cd M365-Assess # 2. 安装所需 modules Install-Module Microsoft.Graph, ExchangeOnlineManagement -Scope CurrentUser # 3. 运行评估 .\Invoke-M365Assessment.ps1 -TenantId 'contoso.onmicrosoft.com' # 结果将生成于带有时间戳的文件夹中,包含 CSV 数据 + HTML 报告 + XLSX 合规性矩阵 ``` ## 先决条件 | 需求 | 详情 | |-------------|---------| | **PowerShell 7.x** (`pwsh`) | 主要运行时。[安装指南](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows) | | **Microsoft.Graph** | `Install-Module Microsoft.Graph -Scope CurrentUser` | | **ExchangeOnlineManagement** | `Install-Module ExchangeOnlineManagement -Scope CurrentUser` | | **ImportExcel** *(可选)* | `Install-Module ImportExcel -Scope CurrentUser` 用于 XLSX 合规矩阵导出 | | **Windows PowerShell 5.1** *(可选)* | 仅用于 [ScubaGear](docs/SCUBAGEAR.md) 部分。Windows 自带。 | ### 平台支持 | 平台 | 状态 | |----------|--------| | **Windows** | 已完全测试 | | **macOS** | 实验性 | | **Linux** | 实验性 | macOS 和 Linux 受 PowerShell 7 支持,但尚未经过完全测试。如果遇到问题,请[提交 issue](https://github.com/Galvnyz/M365-Assess/issues/new) 并附上您的操作系统版本、PowerShell 版本、终端应用程序以及评估日志文件。 ## 交互式控制台 运行不带参数的编排器将启动交互式向导,引导您完成部分选择、租户 ID、身份验证方法和输出文件夹的设置。 ``` .\Invoke-M365Assessment.ps1 ``` 在执行期间,控制台会为每项安全检查显示带有颜色编码状态指示器的实时流式进度:
M365 Assess console showing real-time security check progress
ASCII 横幅 ``` ███╗ ███╗ ██████╗ ██████╗ ███████╗ ████╗ ████║ ╚════██╗ ██╔════╝ ██╔════╝ ██╔████╔██║ █████╔╝ ██████╗ ███████╗ ██║╚██╔╝██║ ╚═══██╗ ██╔══██╗ ╚════██║ ██║ ╚═╝ ██║ ██████╔╝ ╚█████╔╝ ███████║ ╚═╝ ╚═╝ ╚═════╝ ╚════╝ ╚══════╝ █████╗ ███████╗███████╗███████╗███████╗███████╗ ██╔══██╗██╔════╝██╔════╝██╔════╝██╔════╝██╔════╝ ███████║███████╗███████╗█████╗ ███████╗███████╗ ██╔══██║╚════██║╚════██║██╔══╝ ╚════██║╚════██║ ██║ ██║███████║███████║███████╗███████║███████║ ╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝╚══════╝╚══════╝ ```
## 可用部分 | 部分 | 收集器 | 覆盖范围 | |---------|-----------|----------------| | **Tenant** | 租户信息 | 组织配置文件、已验证域、安全默认值 | | **Identity** | 用户摘要、MFA 报告、管理员角色、条件访问、应用注册、密码策略、Entra 安全配置 | 用户账户、MFA 状态、RBAC、CA 策略、应用注册、同意设置、密码保护 | | **Licensing** | 许可证摘要 | SKU 分配和分配计数 | | **Email** | 邮箱摘要、邮件流、电子邮件安全、EXO 安全配置、DNS 身份验证 | 邮箱类型、传输规则、反垃圾邮件/钓鱼、现代身份验证、审核设置、外部发件人标记、SPF/DKIM/DMARC | | **Intune** | 设备摘要、合规策略、配置配置文件 | 受管设备、合规状态、配置文件 | | **Security** | 安全分数、改进操作、Defender 策略、Defender 安全配置、DLP 策略、Stryker 事件就绪状态 | Microsoft Secure Score、Defender for Office 365、反钓鱼/垃圾邮件/恶意软件、安全链接/附件、数据丢失防护、事件就绪检查(失效管理员、CA 排除项、紧急账户、设备擦除审核) | | **Collaboration** | SharePoint & OneDrive、SharePoint 安全配置、Teams 访问、Teams 安全配置、Forms 安全配置 | 共享设置、外部共享控制、同步限制、Teams 会议策略、第三方应用限制、Forms 钓鱼/数据共享设置 | | **Hybrid** | 混合同步 | Azure AD Connect 同步状态和域配置 | | **PowerBI** | Power BI 安全配置 | 11 项 CIS 9.1.x 租户设置检查:来宾访问、外部共享、发布到 Web、敏感度标签、服务主体限制。需要 MicrosoftPowerBIMgmt 模块。 | | **Inventory** *(选填)* | 邮箱、组、Teams、SharePoint、OneDrive 清单 | 逐对象 M&A 清单:邮箱、通讯组列表、M365 组、Teams、SharePoint 站点、OneDrive 账户 | | **ActiveDirectory** *(选填)* | AD 域和林、AD DC 健康、AD 复制、AD 安全 | 域/林拓扑、通过 dcdiag 的 DC 健康检查、复制伙伴和延迟、密码策略、特权组成员。需要 RSAT 或域控制器访问权限。 | | **SOC2** *(选填)* | 安全控制、机密性控制、审计证据、就绪清单 | SOC 2 信任服务标准评估:安全和机密性控制、30 天审计日志证据收集、针对非自动化标准 (CC1-CC5, CC8-CC9) 的组织就绪清单 | | **ScubaGear** *(选填)* | CISA 基线扫描 | CISA SCuBA 安全基线合规性([详情](docs/SCUBAGEAR.md))。仅限 Windows。 | ``` # 运行特定部分 .\Invoke-M365Assessment.ps1 -Section Identity,Email -TenantId 'contoso.onmicrosoft.com' # 运行所有内容,包括 opt-in 部分 .\Invoke-M365Assessment.ps1 -Section Tenant,Identity,Licensing,Email,Intune,Security,Collaboration,PowerBI,Hybrid,Inventory,ActiveDirectory,SOC2,ScubaGear -TenantId 'contoso.onmicrosoft.com' ``` ## 参数 | 参数 | 类型 | 默认值 | 描述 | |-----------|------|---------|-------------| | `-Section` | string[] | Tenant, Identity, Licensing, Email, Intune, Security, Collaboration, PowerBI, Hybrid | 要评估的部分。添加 `Inventory`、`ScubaGear` 或其他选填部分。 | | `-TenantId` | string | *(向导提示)* | 租户 ID 或 `*.onmicrosoft.com` 域 | | `-OutputFolder` | string | `.\M365-Assessment` | 基础输出目录 | | `-SkipConnection` | switch | | 跳过服务连接(使用现有连接) | | `-ClientId` | string | | 用于证书身份验证的 App Registration 客户端 ID | | `-CertificateThumbprint` | string | | 用于仅应用身份验证的证书指纹 | | `-UserPrincipalName` | string | | 用于交互式身份验证的 UPN(避免 WAM broker 问题) | | `-UseDeviceCode` | switch | | 在无头环境中使用设备代码流程 | | `-ManagedIdentity` | switch | | 使用 Azure 托管身份验证(VM、App Service、Functions) | | `-ScubaProductNames` | string[] | aad, defender, exo, powerplatform, sharepoint, teams | 要扫描的 ScubaGear 产品 | | `-M365Environment` | string | `commercial` | 云环境:`commercial`、`gcc`、`gcchigh`、`dod` | | `-NoBranding` | switch | | 生成不带 M365 Assess 品牌的报告 | | `-SkipDLP` | switch | | 跳过 DLP 收集器和 Purview 连接(节省约 46 秒) | | `-SkipComplianceOverview` | switch | | 从报告中省略合规概述部分 | | `-SkipCoverPage` | switch | | 从报告中省略品牌封面页 | | `-SkipExecutiveSummary` | switch | | 省略执行摘要,改为显示紧凑的扫描标题 | | `-SkipPdf` | switch | | 即使 wkhtmltopdf 可用也跳过 PDF 生成 | | `-FrameworkFilter` | string[] | *(全部)* | 将合规概述限制为特定的框架系列(例如 `CIS`、`NIST`) | | `-CustomBranding` | hashtable | | 白标报告。键:`CompanyName`、`LogoPath`、`AccentColor` | | `-CisBenchmarkVersion` | string | `v6` | CIS 基准版本(`v6` 对应 v6.0.1)。可用时设置为 `v7` | | `-ClientSecret` | SecureString | | 用于仅应用身份验证的 App Registration 客户端密钥 | ### 交互式向导 如果未提供连接参数(`-TenantId`、`-SkipConnection`、`-ClientId` 或 `-ManagedIdentity`),交互式向导将提示输入租户、身份验证方法和输出文件夹。如果在命令行中提供了 `-Section` 或 `-OutputFolder`,这些向导步骤将自动跳过。 有关详细的身份验证示例和 App Registration 设置,请参阅[身份验证](AUTHENTICATION.md)。 ## 输出结构 ``` M365-Assessment/ Assessment_YYYYMMDD_HHMMSS_/ 01-Tenant-Info.csv 02-User-Summary.csv 03-MFA-Report.csv 04-Admin-Roles.csv 05-Conditional-Access.csv 06-App-Registrations.csv 07-Password-Policy.csv 07b-Entra-Security-Config.csv 08-License-Summary.csv 09-Mailbox-Summary.csv 10-Mail-Flow.csv 11-Email-Security.csv 11b-EXO-Security-Config.csv 12-DNS-Authentication.csv 13-Device-Summary.csv 14-Compliance-Policies.csv 15-Config-Profiles.csv 15b-Intune-Security-Config.csv 16-Secure-Score.csv 17-Improvement-Actions.csv 18-Defender-Policies.csv 18b-Defender-Security-Config.csv 19-DLP-Policies.csv 19b-Compliance-Security-Config.csv 19c-Purview-Retention-Config.csv 20-SharePoint-OneDrive.csv 20b-SharePoint-Security-Config.csv 21-Teams-Access.csv 21b-Teams-Security-Config.csv 21c-Forms-Security-Config.csv 22-PowerBI-Security-Config.csv 23-Hybrid-Sync.csv _Assessment-Summary_.csv # Status of every collector _Assessment-Log_.txt # Timestamped execution log _Assessment-Issues_.log # Issue report with recommendations _Assessment-Report_.html # Self-contained HTML report _Compliance-Matrix_.xlsx # Framework compliance matrix (requires ImportExcel) ``` ## 报告预览 自包含的 HTML 报告可在任何浏览器中打开,无需依赖项。从封面页点击进入执行摘要,深入查看每个安全域,并查看跨 14 个框架的合规状态。
Report cover page

Executive summary with collector status, org profile, and section navigation

Security section showing Secure Score, Defender controls, and security config checks

Compliance overview with framework selector, finding distribution, and control matrix
## 项目结构 ``` M365-Assess/ Invoke-M365Assessment.ps1 # Orchestrator - main entry point ActiveDirectory/ # Hybrid sync, AD domain/DC/replication/security Collaboration/ # SharePoint, OneDrive, Teams Common/ # Shared helpers assets/ # Branding assets (logo, backgrounds) Connect-Service.ps1 # Service connection helper Export-AssessmentReport.ps1 # HTML report generator Export-ComplianceMatrix.ps1 # XLSX compliance matrix export Show-CheckProgress.ps1 # Real-time progress display controls/ # Control registry and framework mappings registry.json # Master registry (244 entries, 160 automated) frameworks/ # Per-framework mapping files Entra/ # Users, MFA, admin roles, CA, apps, licensing, security config Exchange-Online/ # Mailboxes, mail flow, email security, EXO config Inventory/ # M&A inventory: mailboxes, groups, Teams, SharePoint, OneDrive Intune/ # Devices, compliance, config profiles Networking/ # Port scanning, DNS, connectivity PowerBI/ # Power BI tenant security settings (CIS 9.x) Purview/ # DLP policies, audit retention Security/ # Secure Score, Defender, DLP, ScubaGear Setup/ # App Registration provisioning scripts docs/ # Detailed documentation ``` ## 文档 | 指南 | 描述 | |-------|-------------| | [身份验证](AUTHENTICATION.md) | 交互式、证书、设备代码、托管身份和现有连接方法 | | [HTML 报告](REPORT.md) | 报告功能、自定义品牌、`-NoBranding`、独立生成 | | [合规性](COMPLIANCE.md) | 14 个框架、XLSX 导出、CheckId 系统、控制注册表 | | [兼容性](docs/COMPATIBILITY.md) | 模块版本、依赖矩阵、已知不兼容性 | | [ScubaGear](docs/SCUBAGEAR.md) | CISA 基线集成、首次运行、产品、GCC 支持 | | [CheckId 指南](docs/CheckId-Guide.md) | CheckId 命名约定和映射参考 | | [安全](SECURITY.md) | 漏洞报告和安全策略 | ## 独立脚本 每个收集器都可以在编排器之外独立运行: ``` # 首先连接到所需服务 . .\Common\Connect-Service.ps1 Connect-Service -Service Graph -Scopes 'User.Read.All','UserAuthenticationMethod.Read.All' # 运行单个 collector .\Entra\Get-MfaReport.ps1 ``` ### 独立脚本 单个收集器和报告生成可以独立于完整评估运行: | 脚本 | 用途 | |--------|---------| | `Entra/Get-MfaReport.ps1` | MFA 注册和功能报告 | | `Entra/Get-InactiveUsers.ps1` | 90 天以上未活跃的用户 | | `Exchange-Online/Get-MailFlowReport.ps1` | 邮件流规则和连接器 | | `Common/Export-AssessmentReport.ps1` | 从现有 CSV 重新生成 HTML 报告 | | `Common/Export-ComplianceMatrix.ps1` | 生成 XLSX 合规矩阵 | 每个收集器都需要先建立 Graph 或 Exchange Online 连接: ``` . .\Common\Connect-Service.ps1 Connect-Service -Service Graph -Scopes 'User.Read.All','AuditLog.Read.All' .\Entra\Get-InactiveUsers.ps1 -DaysInactive 90 ``` ## 获取帮助 ``` Get-Help .\Invoke-M365Assessment.ps1 -Full Get-Help .\Common\Export-AssessmentReport.ps1 -Examples ``` ## 贡献 欢迎贡献代码!请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 了解指南。 ## 许可证 本项目根据 MIT 许可证授权。详情请参阅 [LICENSE](LICENSE)。
Daren9m 和贡献者构建
标签:Exchange Online, HTML报告, IPv6, IT运维, Libemu, M365, Microsoft 365, Microsoft Graph, Office 365安全, PowerShell, Socks5代理, Web报告查看器, XLSX合规矩阵, 云端安全, 协同办公, 反取证, 只读评估, 合规基线, 安全基线, 安全报告, 安全评估, 安全顾问工具, 教学环境, 渗透测试辅助, 结构化查询, 自动化安全, 设备管理, 调试辅助, 足迹分析, 身份安全, 邮件安全, 防御性安全