letaible/nis2scan
GitHub: letaible/nis2scan
nis2scan 是一款开源的 NIS2 合规扫描器,自动检查 AWS、Azure 和 GCP 云环境是否符合德国 §30 BSIG 的十项核心安全措施要求。
Stars: 0 | Forks: 0
# nis2scan: NIS2 云合规扫描器
*English version: [README.en.md](README.en.md)*
**针对 AWS、Azure 和 GCP 的自动化 §30 BSIG 合规检查**
[](https://github.com/letaible/nis2scan/blob/main/LICENSE)
[](https://www.python.org/)
nis2scan 会自动检查您的云环境(AWS、Azure、GCP)是否符合 §30 Abs. 2 BSIG(NIS2 实施法)的 10 项核心措施。每项发现都会直接映射到法律文本和 ISO 27001:2022,从而提供具备审计能力的文档记录。
## 快速开始
```
pip install nis2scan
# AWS
nis2scan scan --provider aws --config config.yaml
# Azure
nis2scan scan --provider azure
# GCP
nis2scan scan --provider gcp
```
**详细指南:** [docs/getting-started.md](https://github.com/letaible/nis2scan/blob/main/docs/getting-started.md):安装、云环境设置 (AWS/Azure/GCP)、配置、CLI 参考及故障排除。
## 法律依据
《NIS2 实施法》(NIS2UmsuCG) 已于 2025 年 12 月 6 日生效。它主要修改了《BSI 法》(BSIG)。没有过渡期:各项义务立即生效。
### 相关法律与法规
| 文档 | 描述 | 链接 |
|----------|-------------|------|
| **BSIG (BSI 法)** | 包含对企业所有 NIS2 义务的核心法律 | [gesetze-im-internet.de](https://www.gesetze-im-internet.de/bsig_2025/) |
| **§28 BSIG** | 适用对象?“极其重要”与“重要”机构的定义 | [§28 全文](https://www.gesetze-im-internet.de/bsig_2025/__28.html) |
| **§30 BSIG** | **核心标准**:10 项风险管理措施(我们的扫描范围) | [§30 全文](https://www.gesetze-im-internet.de/bsig_2025/__30.html) |
| **§31 BSIG** | 对关键设施 (KRITIS) 运营商的额外要求 | [§31 全文](https://www.gesetze-im-internet.de/bsig_2025/__31.html) |
| **§32 BSIG** | 报告义务:24 小时首次报告,72 小时后续报告,1 个月总结报告 | [§32 全文](https://www.gesetze-im-internet.de/bsig_2025/__32.html) |
| **§33 BSIG** | 在 BSI 的注册义务 | [§33 全文](https://www.gesetze-im-internet.de/bsig_2025/__33.html) |
| **§38 BSIG** | 管理层的个人责任及培训义务 | [§38 全文](https://www.gesetze-im-internet.de/bsig_2025/__38.html) |
| **§39 BSIG** | KRITIS 运营商的举证责任(每 3 年审计一次) | [§39 全文](https://www.gesetze-im-internet.de/bsig_2025/__39.html) |
| **§65 BSIG** | 罚款:最高 1000 万欧元或年营业额的 2% | [§65 全文](https://www.gesetze-im-internet.de/bsig_2025/__65.html) |
| **NIS2 指令 (欧盟)** | 欧盟指令 2022/2555,欧洲层面的基础 | [EUR-Lex](https://eur-lex.europa.eu/eli/dir/2022/2555/oj/deu) |
| **实施条例 (欧盟) 2024/2690** | 仅适用于特定的数字服务提供商(例如云、DNS、数据中心服务);并非对 §30 BSIG 的一般性细化 | [EUR-Lex](https://eur-lex.europa.eu/eli/reg_impl/2024/2690/oj/deu) |
| **NIS2UmsuCG (修订法)** | 实际的实施法案(修改 BSIG 及其他法律) | [BGBl Nr. 301/2025](https://www.recht.bund.de/bgbl/1/2025/301/VO.html) |
| **ISO/IEC 27001:2022** | NIS2 参考的国际 ISMS 标准 | [ISO.org](https://www.iso.org/standard/27001) |
| **BSI IT 基础保护** | BSI 自有的标准,尤其与联邦行政机构相关 | [BSI](https://www.bsi.bund.de/grundschutz) |
### 适用门槛 (§28 BSIG)
| 类别 | 标准 | 罚款风险 |
|-----------|-----------|---------------|
| **极其重要的机构** | 在关键领域拥有 ≥250 名员工或 >5000 万欧元营业额 | 最高 1000 万欧元或年营业额的 2% |
| **重要的机构** | 在受监管领域拥有 ≥50 名员工或 >1000 万欧元营业额 | 最高 700 万欧元或年营业额的 1.4% |
| **间接受影响** | 受影响机构的供应商/服务提供商 | 合同责任 |
## §30 BSIG → 扫描映射
核心表格:哪项检查在验证哪项法律要求?
### 概览
| §30 序号 | 措施 | 法律文本(节选) | AWS | Azure | GCP | ISMS 文档 |
|----------|----------|----------------------|-----|-------|-----|---------------|
| **1** | 风险分析 | 关于风险分析和信息技术安全的概念 | ✅ 5 | ✅ 5 | ✅ 5 | IT 安全方针 + 风险分析 |
| **2** | Incident Response | 处理安全事件 | ✅ 5 | ✅ 5 | ✅ 5 | Incident Response 计划 |
| **3** | Business Continuity | 业务连续性、Backup 管理、灾难恢复、危机管理 | ✅ 7 | ✅ 7 | ✅ 7 | BC/DR 计划 |
| **4** | 供应链安全 | 包括与供应商安全相关方面的供应链安全 | ✅ 5 | ✅ 5 | ✅ 5 | 供应链方案 |
| **5** | Vulnerability Management | 在采购、开发和维护中的安全措施,包括漏洞管理 | ✅ 5 | ✅ 5 | ✅ 5 | SDL + 补丁策略 |
| **6** | 有效性评估 | 评估风险管理措施有效性的概念和程序 | ✅ 4 | ✅ 4 | ✅ 4 | 审计计划 + KPI |
| **7** | 网络安全卫生 | 基础培训和网络卫生 | ✅ 2 | ✅ 2 | ✅ 2 | 培训方案 |
| **8** | 密码学 | 使用密码学程序的概念和流程 | ✅ 7 | ✅ 6 | ✅ 6 | 密码学策略 |
| **9** | 访问控制 | 人员安全、访问控制、ICT 系统管理 | ✅ 7 | ✅ 7 | ✅ 7 | 访问控制策略 |
| **10** | MFA 与通信 | MFA、安全的语音/视频/文本通信、紧急通信 | ✅ 5 | ✅ 5 | ✅ 5 | MFA 策略 + 通信规范 |
**图例:** ✅ = 已实施并测试
### 详细映射:各检查项 → 法律文本
#### §30 Abs. 2 Nr. 1:风险分析与 IT 安全概念
| 状态 | 检查 ID | 描述 | 严重程度 | §30 文本参考 | ISO 27001 |
|--------|----------|-------------|-------------|-------------------|-----------|
| ✅ | AWS-NR1-001 | AWS Config Recorder 激活(所有区域) | HIGH | §30(2) Nr.1:“关于风险分析的概念”,因为风险分析以所有资产可见为前提 | A.5.1, A.8.9 |
| ✅ | AWS-NR1-002 | Security Hub 启用了 CIS/Foundational Benchmarks | HIGH | §30(2) Nr.1:安全概念必须“符合技术水平”(§30(2) S.1) | A.5.1 |
| ✅ | AWS-NR1-003 | 存在带有 SCP 的 AWS Organizations | MEDIUM | §30(2) Nr.1:组织范围内的安全架构 | A.5.1, A.5.2 |
| ✅ | AWS-NR1-004 | 所有区域激活了 CloudTrail,并开启 Log-Validation | CRITICAL | §30(2) Nr.1 + Nr.6:可追溯性是风险分析和有效性评估的前提 | A.8.15 |
| ✅ | AWS-NR1-005 | 启用 GuardDuty | HIGH | §30(2) Nr.1:威胁检测作为风险分析的一部分 | A.5.7 |
| ✅ | AZ-NR1-001 | 启用 Defender for Cloud(所有订阅) | HIGH | §30(2) Nr.1:集中式安全评估 | A.5.1 |
| ✅ | AZ-NR1-002 | 存在 Azure Policy Assignments | HIGH | §30(2) Nr.1:贯彻安全标准 | A.5.1, A.5.2 |
| ✅ | AZ-NR1-003 | 配置了 Management Groups | MEDIUM | §30(2) Nr.1:组织范围的治理 | A.5.1 |
| ✅ | AZ-NR1-004 | Activity Log → Log Analytics/Storage | CRITICAL | §30(2) Nr.1 + Nr.6:Audit-Trail | A.8.15 |
| ✅ | AZ-NR1-005 | Sentinel 或等效的 SIEM | HIGH | §30(2) Nr.1:威胁检测 | A.5.7 |
#### §30 Abs. 2 Nr. 2:处理安全事件
| 状态 | 检查 ID | 描述 | 严重程度 | §30 文本参考 | ISO 27001 |
|--------|----------|-------------|-------------|-------------------|-----------|
| ✅ | AWS-NR2-001 | 启用 GuardDuty(威胁检测) | CRITICAL | §30(2) Nr.2:“处理安全事件”:检测 + 自动转发 | A.5.24 |
| ✅ | AWS-NR2-002 | 聚合 Security Hub Findings | MEDIUM | §30(2) Nr.2:安全事件的集中视图 | A.5.25 |
| ✅ | AWS-NR2-003 | 配置了 Incident Manager / OpsCenter | MEDIUM | §30(2) Nr.2:带有升级路径的结构化事件处理 | A.5.26 |
| ✅ | AWS-NR2-004 | 针对关键指标的 CloudWatch Alarms | HIGH | §30(2) Nr.2:主动检测异常 | A.5.24, A.8.16 |
| ✅ | AWS-NR2-005 | 启用 Detective(取证) | LOW | §30(2) Nr.2:取证分析能力 | A.5.27 |
| ✅ | AZ-NR2-001 | 配置了 Defender Alert Notifications | HIGH | §30(2) Nr.2:自动通知 | A.5.24 |
| ✅ | AZ-NR2-002 | Sentinel Analytics Rules 处于活动状态 | HIGH | §30(2) Nr.2:基于规则的检测 | A.5.24, A.8.16 |
| ✅ | AZ-NR2-003 | 用于自动响应的 Sentinel Playbooks/Logic Apps | MEDIUM | §30(2) Nr.2:自动化遏制 | A.5.26 |
| ✅ | AZ-NR2-004 | 用于告警的 Action Groups | HIGH | §30(2) Nr.2:升级路径 | A.5.24 |
| ✅ | AZ-NR2-005 | 定义了 Alert Processing Rules | MEDIUM | §30(2) Nr.2:优先级排序和路由 | A.5.25 |
#### §30 Abs. 2 Nr. 3:业务连续性 (BCM)
| 状态 | 检查 ID | 描述 | 严重程度 | §30 文本参考 | ISO 27001 |
|--------|----------|-------------|-------------|-------------------|-----------|
| ✅ | AWS-NR3-001 | RDS automated backups + Retention ≥7d | HIGH | §30(2) Nr.3:“Backup 管理和紧急情况后的恢复” | A.8.13 |
| ✅ | AWS-NR3-002 | 关键 Buckets 开启 S3 Versioning | MEDIUM | §30(2) Nr.3:数据恢复 | A.8.13 |
| ✅ | AWS-NR3-003 | S3 Object Lock / Glacier Vault Lock | HIGH | §30(2) Nr.3:防范勒索软件(不可变性) | A.8.13 |
| ✅ | AWS-NR3-004 | 生产 Workloads 使用 Multi-AZ | HIGH | §30(2) Nr.3:“业务连续性”:可用性 | A.5.29, A.8.14 |
| ✅ | AWS-NR3-005 | 带有 Cross-Region-Copy 的 AWS Backup 计划 | HIGH | §30(2) Nr.3:“紧急情况后的恢复”:异地冗余 | A.8.13 |
| ✅ | AWS-NR3-006 | EBS Snapshots 定期且加密 | MEDIUM | §30(2) Nr.3 + Nr.8:备份 + 加密 | A.8.13, A.8.24 |
| ✅ | AWS-NR3-007 | Route 53 Health Checks | LOW | §30(2).3:可用性监控 | A.8.14 |
| ✅ | AZ-NR3-001 | 带有策略的 Azure Backup Vaults | HIGH | §30(2) Nr.3:Backup 管理 | A.8.13 |
| ✅ | AZ-NR3-002 | SQL DB Backup Retention ≥7d | HIGH | §30(2) Nr.3:数据库备份 | A.8.13 |
| ✅ | AZ-NR3-003 | Geo-Redundant Storage (GRS) | HIGH | §30(2) Nr.3:异地冗余 | A.8.13 |
| ✅ | AZ-NR3-004 | 生产环境使用 Availability Zones | HIGH | §30(2) Nr.3:可用性 | A.5.29, A.8.14 |
| ✅ | AZ-NR3-005 | 配置了 Azure Site Recovery | HIGH | §30(2) Nr.3:灾难恢复 | A.5.30 |
| ✅ | AZ-NR3-006 | Immutable Blob Storage | HIGH | §30(2) Nr.3:勒索软件防护 | A.8.13 |
| ✅ | AZ-NR3-007 | Traffic Manager / Front Door | LOW | §30(2) Nr.3:冗余 | A.8.14 |
#### §30 Abs. 2 Nr. 8:密码学 *(阶段 1,AWS 已实现)*
| 状态 | 检查 ID | 描述 | 严重程度 | §30 文本参考 | ISO 27001 |
|--------|----------|-------------|-------------|-------------------|-----------|
| ✅ | AWS-NR8-001 | S3 Default Encryption (SSE-S3/SSE-KMS) | HIGH | §30(2) Nr.8:“使用密码学程序的概念和流程” | A.8.24 |
| ✅ | AWS-NR8-002 | EBS Volumes 已加密 | HIGH | §30(2) Nr.8:静态数据加密 | A.8.24 |
| ✅ | AWS-NR8-003 | RDS Storage Encryption 激活 | HIGH | §30(2) Nr.8:数据库加密 | A.8.24 |
| ✅ | AWS-NR8-004 | KMS Key Rotation 启用 | MEDIUM | §30(2) Nr.8:密钥管理 | A.8.24 |
| ✅ | AWS-NR8-005 | CloudFront/ELB 仅限 HTTPS,TLS ≥1.2 | HIGH | §30(2) Nr.8:传输中加密 | A.8.24 |
| ✅ | AWS-NR8-006 | ELB/ALB TLS Policy ≥ TLS 1.2 | HIGH | §30(2) Nr.8 + “技术水平”(§30(2) S.1),因为 TLS 1.0/1.1 已不再符合技术水平 | A.8.24 |
| ✅ | AWS-NR8-007 | ACM 证书未过期 | CRITICAL | §30(2) Nr.8:证书管理 | A.8.24 |
| ✅ | AZ-NR8-001 | Storage Account Encryption(首选 CMK) | HIGH | §30(2) Nr.8:静态数据加密 | A.8.24 |
| ✅ | AZ-NR8-002 | Disk Encryption / SSE | HIGH | §30(2) Nr.8:磁盘加密 | A.8.24 |
| ✅ | AZ-NR8-003 | SQL TDE 启用 | HIGH | §30(2) Nr.8:数据库加密 | A.8.24 |
| ✅ | AZ-NR8-004 | Key Vault Rotation Policy | MEDIUM | §30(2) Nr.8:密钥轮换 | A.8.24 |
| ✅ | AZ-NR8-005 | App Service HTTPS Only + TLS 1.2+ | HIGH | §30(2) Nr.8:传输加密 | A.8.24 |
| ✅ | AZ-NR8-006 | Application Gateway TLS Policy | HIGH | §30(2) Nr.8:“技术水平” | A.8.24 |
#### §30 Abs. 2 Nr. 4:供应链安全
| 状态 | 检查 ID | 描述 | 严重程度 | §30 文本参考 | ISO 27001 |
|--------|----------|-------------|-------------|-------------------|-----------|
| ✅ | AWS-NR4-001 | Trusted Advisor 访问(Business/Enterprise 支持) | MEDIUM | §30(2) Nr.4:“包括各机构与其直接供应商或服务提供商之间关系的安全相关方面的供应链安全” | A.5.19, A.5.21 |
| ✅ | AWS-NR4-002 | RAM (Resource Access Manager) 共享策略 | HIGH | §30(2) Nr.4:控制与第三方共享的资源 | A.5.20 |
| ✅ | AWS-NR4-003 | Organizations:外部账户隔离 | HIGH | §30(2) Nr.4:隔离第三方访问 | A.5.19 |
| ✅ | AWS-NR4-004 | IAM Cross-Account Roles 已审计 | HIGH | §30(2) Nr.4:检查服务提供商的访问权限 | A.5.20, A.8.3 |
| ✅ | AWS-NR4-005 | 针对第三方 OU 的 Service Control Policies | MEDIUM | §30(2) Nr.4:限制服务提供商的权限 | A.5.19 |
| ✅ | AZ-NR4-001 | 审查 Lighthouse Delegations | HIGH | §30(2) Nr.4:通过 MSP 进行委托管理 | A.5.19 |
| ✅ | AZ-NR4-002 | Guest Users (B2B) 使用 Conditional Access | HIGH | §30(2) Nr.4:受控的外部用户 | A.5.20 |
| ✅ | AZ-NR4-003 | PaaS 服务的 Private Endpoints | HIGH | §30(2) Nr.4:服务的网络隔离 | A.5.19, A.8.22 |
| ✅ | AZ-NR4-004 | Service Principal Credentials 已轮换 | MEDIUM | §30(2) Nr.4:保护第三方的自动化访问 | A.5.20 |
| ✅ | AZ-NR4-005 | Marketplace Image Trust Policy | MEDIUM | §30(2) Nr.4:软件供应链,仅限可信来源 | A.5.19 |
#### §30 Abs. 2 Nr. 5:采购、开发、维护中的安全措施及 Vulnerability Management
| 状态 | 检查 ID | 描述 | 严重程度 | §30 文本参考 | ISO 27001 |
|--------|----------|-------------|-------------|-------------------|-----------|
| ✅ | AWS-NR5-001 | 启用 ECR Image Scanning | HIGH | §30(2) Nr.5:“采购、开发和维护中的安全措施”:容器漏洞检查 | A.8.8 |
| ✅ | AWS-NR5-002 | SSM Managed Instances(补丁管理) | HIGH | §30(2) Nr.5:“包括漏洞的管理和披露” | A.8.8 |
| ✅ | AWS-NR5-003 | SSM Patch Manager Compliance | HIGH | §30(2) Nr.5:维护,即及时安装补丁,“技术水平”(§30(2) S.1) | A.8.8, A.8.9 |
| ✅ | AWS-NR5-004 | Lambda Runtime 版本保持最新 | MEDIUM | §30(2) Nr.5:过时的 Runtime = 漏洞 | A.8.8 |
| ✅ | AWS-NR5-005 | 生产实例的 AMI 寿命 < 90 天 | MEDIUM | §30(2) Nr.5:定期更新操作环境 | A.8.8 |
| ✅ | AZ-NR5-001 | Defender for Cloud:Vulnerability Assessment | HIGH | §30(2) Nr.5:漏洞检测 | A.8.8 |
| ✅ | AZ-NR5-002 | 配置了 Update Management Center | HIGH | §30(2) Nr.5:补丁管理 | A.8.8, A.8.9 |
| ✅ | AZ-NR5-003 | Container Registry Image Scan | HIGH | §30(2) Nr.5:容器漏洞 | A.8.8 |
| ✅ | AZ-NR5-004 | App Service Runtime 保持最新 | MEDIUM | §30(2) Nr.5:运行环境 | A.8.8 |
| ✅ | AZ-NR5-005 | 启用 SQL Vulnerability Assessment | HIGH | §30(2) Nr.5:数据库漏洞 | A.8.8 |
#### §30 Abs. 2 Nr. 6:评估风险管理措施的有效性
| 状态 | 检查 ID | 描述 | 严重程度 | §30 文本参考 | ISO 27001 |
|--------|----------|-------------|-------------|-------------------|-----------|
| ✅ | AWS-NR6-001 | CloudTrail 运营有效性(日志交付) | HIGH | §30(2) Nr.6:“评估有效性的概念和程序”:保护审计日志免遭篡改 | A.5.35, A.8.15 |
| ✅ | AWS-NR6-002 | Config Rules Compliance 状态 | HIGH | §30(2) Nr.6:自动化合规评估作为有效性证明 | A.5.35 |
| ✅ | AWS-NR6-003 | Security Hub Compliance Score ≥80% | HIGH | §30(2) Nr.6:汇总的有效性评估 | A.5.35 |
| ✅ | AWS-NR6-004 | CloudWatch Log Retention ≥1 年 | MEDIUM | §30(2) Nr.6:满足审计的长期可追溯性 | A.8.15 |
| ✅ | AZ-NR6-001 | Defender Secure Score ≥70% | HIGH | §30(2) Nr.6:汇总的有效性指标 | A.5.35 |
| ✅ | AZ-NR6-002 | Azure Policy Compliance State | HIGH | §30(2) Nr.6:自动化合规度量 | A.5.35 |
| ✅ | AZ-NR6-003 | Activity Log Retention ≥365 天 | MEDIUM | §30(2) Nr.6:Audit-Trail 保留 | A.8.15 |
| ✅ | AZ-NR6-004 | 所有关键资源配置了 Diagnostic Settings | HIGH | §30(2) Nr.6:主动监控的可量化证明 | A.5.35, A.8.15 |
#### §30 Abs. 2 Nr. 7:基础培训与意识提升
| 状态 | 检查 ID | 描述 | 严重程度 | §30 文本参考 | ISO 27001 |
|--------|----------|-------------|-------------|-------------------|-----------|
| ✅ | AWS-NR7-001 | IAM Password Policy ≥14 个字符,复杂度要求 | HIGH | §30(2) Nr.7:“基本的网络卫生实践”:密码最低标准 | A.5.17 |
| ✅ | AWS-NR7-002 | Root-Account 无 Access Keys | CRITICAL | §30(2) Nr.7:基本的安全卫生,最小化 Root 使用 | A.5.17, A.8.2 |
| ✅ | AZ-NR7-001 | 配置了 Entra ID Password Protection | HIGH | §30(2) Nr.7:密码卫生 | A.5.17 |
| ✅ | AZ-NR7-002 | Security Defaults 或 Conditional Access Baseline | HIGH | §30(2) Nr.7:贯彻基本安全标准 | A.5.17 |
#### §30 Abs. 2 Nr. 9:人员安全、访问控制和 ICT 管理 *(阶段 1,AWS 已实现)*
| 状态 | 检查 ID | 描述 | 严重程度 | §30 文本参考 | ISO 27001 |
|--------|----------|-------------|-------------|-------------------|-----------|
| ✅ | AWS-NR9-001 | IAM-User 缺少 MFA | HIGH | §30(2) Nr.9:“访问控制概念”:身份保障 | A.5.15, A.8.5 |
| ✅ | AWS-NR9-002 | Access Keys 超过 90 天 | HIGH | §30(2) Nr.9:“资产管理”:凭证生命周期 | A.5.15, A.8.5 |
| ✅ | AWS-NR9-003 | S3 Account-Level Public Access Block | CRITICAL | §30(2) Nr.9:访问控制,防止公开访问 | A.5.15, A.8.3 |
| ✅ | AWS-NR9-004 | Security Groups 包含 0.0.0.0/0(开放端口) | HIGH | §30(2) Nr.9:网络访问控制:最小权限原则 | A.8.20, A8.22 |
| ✅ | AWS-NR9-005 | IAM Policies 不包含通配符 (*) 权限 | HIGH | §30(2) Nr.9:基于最小权限原则的访问控制 | A.5.15, A.8.3 |
| ✅ | AWS-NR9-006 | S3 Bucket Policies 不包含 Principal: * | CRITICAL | §30(2) Nr.9:禁止对数据集的匿名访问 | A.5.15, A.8.3 |
| ✅ | AWS-NR9-007 | Unused IAM Credentials(不活动 >90 天) | MEDIUM | §30(2) Nr.9:“人员安全”:离职流程 | A.5.15, A.6.5 |
| ✅ | AZ-NR9-001 | Entra ID Conditional Access Policies | HIGH | §30(2) Nr.9:访问控制 | A.5.15 |
| ✅ | AZ-NR9-002 | Entra ID Privileged Identity Management (PIM) | HIGH | §30(2) Nr.9:限制特权访问的时间 | A.8.2, A.8.18 |
| ✅ | AZ-NR9-003 | NSG Rules 无对互联网开放的端口 | HIGH | §30(2) Nr.9:网络访问控制 | A.8.20, A.8.22 |
| ✅ | AZ-NR9-004 | Storage Account:仅限 Private Access | HIGH | §30(2) Nr.9:禁止公开访问存储 | A.5.15, A.8.3 |
| ✅ | AZ-NR9-005 | 使用 RBAC 代替经典 Subscription-Admin 角色 | HIGH | §30(2) Nr.9:基于角色的访问控制 | A.5.15 |
| ✅ | AZ-NR9-006 | Entra ID Guest Access Restrictions | MEDIUM | §30(2) Nr.9:控制外部访问 | A.5.15, A.6.5 |
| ✅ | AZ-NR9-007 | Stale Service Principals(不活动 >90 天) | MEDIUM | §30(2) Nr.9:移除未使用的身份 | A.5.15 |
#### §30 Abs. 2 Nr. 10:MFA、安全通信和紧急通信 *(阶段 1,AWS 已实现)*
| 状态 | 检查 ID | 描述 | 严重程度 | §30 文本参考 | ISO 27001 |
|--------|----------|-------------|-------------|-------------------|-----------|
| ✅ | AWS-NR10-001 | Root-Account 启用 MFA | CRITICAL | §30(2) Nr.10:“使用多因素身份验证解决方案”,因为 Root 具有最高权限 | A.8.5 |
| ✅ | AWS-NR10-002 | 所有 IAM-User 启用 MFA | HIGH | §30(2) Nr.10:对所有用户强制实行 MFA | A.8.5 |
| ✅ | AWS-NR10-003 | 为管理员访问提供 VPN / Client VPN | HIGH | §30(2) Nr.10:“安全的语音、视频和文本通信” | A.8.20 |
| ✅ | AWS-NR10-004 | SES/SNS 强制使用 TLS | MEDIUM | §30(2) Nr.10:通信加密 | A.8.20 |
| ✅ | AWS-NR10-005 | 紧急 IAM Break-Glass 程序 | HIGH | §30(2) Nr.10:“安全的紧急通信系统”:事件期间的访问 | A.5.30, A.8.5 |
| ✅ | AZ-NR10-001 | 所有用户的 Entra ID MFA | CRITICAL | §30(2) Nr.10:强制 MFA | A.8.5 |
| ✅ | AZ-NR10-002 | Entra ID:抗钓鱼 MFA (FIDO2/Windows Hello) | HIGH | §30(2) Nr.10:“技术水平”:抗钓鱼 MFA | A.8.5 |
| ✅ | AZ-NR10-003 | 用于管理员访问的 VPN Gateway / Bastion Host | HIGH | §30(2) Nr.10:安全的管理通信 | A.8.20 |
| ✅ | AZ-NR10-004 | Teams/Exchange:强制 TLS | MEDIUM | §30(2) Nr.10:安全通信 | A.8.20 |
| ✅ | AZ-NR10-005 | Emergency Access Accounts (Break Glass) | HIGH | §30(2) Nr.10:安全的紧急访问 | A.5.30, A.8.5 |
## ISMS 文档结构
nis2scan 检查技术控制。但 §30 BSIG 也要求**记录在案的组织措施**:即 ISMS。以下结构遵循 **4 级层次结构**(ISO 27001 附录 A + BSI IT 基础保护),并将每个文档映射到 §30 BSIG 和 ISO 27001:2022 的具体要求。
### ISMS 文档层次结构(4 个级别)
```
Ebene 1: Leitlinie (strategisch, §30(1) BSIG)
├── Informationssicherheits-Leitlinie (IS-Policy)
│ └── Gilt für: Alle §30-Bereiche. Vom GF unterschrieben.
│
Ebene 2: Richtlinien (taktisch, je §30-Bereich eine Richtlinie)
├── [§30 Nr.1] Risikomanagement-Richtlinie
├── [§30 Nr.2] Incident-Response-Richtlinie
├── [§30 Nr.3] Business-Continuity-Richtlinie
├── [§30 Nr.4] Lieferketten-Sicherheitsrichtlinie
├── [§30 Nr.5] Sichere Entwicklung & Patch-Richtlinie
├── [§30 Nr.6] Audit- & Wirksamkeitsbewertungsrichtlinie
├── [§30 Nr.7] Schulungs- & Awareness-Richtlinie
├── [§30 Nr.8] Kryptographie-Richtlinie
├── [§30 Nr.9] Zugriffskontroll- & Asset-Richtlinie
├── [§30 Nr.10] MFA- & Kommunikationssicherheitsrichtlinie
│
Ebene 3: Konzepte & Pläne (operativ)
├── [§30 Nr.1] Risiko-Register + Risikobehandlungsplan
├── [§30 Nr.1] Scope-Definition & Asset-Register
├── [§30 Nr.2] Incident-Response-Plan mit Eskalationsmatrix
├── [§30 Nr.2] BSI-Meldevorlagen (24h/72h/1M nach §32)
├── [§30 Nr.2] Forensik-Leitfaden
├── [§30 Nr.3] Business-Impact-Analyse (BIA)
├── [§30 Nr.3] Disaster-Recovery-Plan (je Standort/Cloud-Region)
├── [§30 Nr.3] Krisenmanagement-Handbuch
├── [§30 Nr.4] Lieferanten-Register mit Kritikalitätsbewertung
├── [§30 Nr.4] Muster-Sicherheitsklauseln für Verträge
├── [§30 Nr.4] Cloud-Provider Shared-Responsibility-Matrix
├── [§30 Nr.5] Patch-Management-Prozess
├── [§30 Nr.5] Secure-Development-Lifecycle (SDL)
├── [§30 Nr.5] Vulnerability-Disclosure-Policy
├── [§30 Nr.5] Change-Management-Prozess
├── [§30 Nr.6] ISMS-KPI-Dashboard
├── [§30 Nr.6] Internes Audit-Programm (Jahresplan)
├── [§30 Nr.7] Schulungsplan mit Zielgruppen × Themen
├── [§30 Nr.7] Phishing-Simulations-Fahrplan
├── [§30 Nr.8] Erlaubte Algorithmen & Schlüssellängen
├── [§30 Nr.8] Key-Management-Prozess
├── [§30 Nr.8] Zertifikats-Inventar & Renewal-Prozess
├── [§30 Nr.9] Joiner/Mover/Leaver-Prozess
├── [§30 Nr.9] Privileged-Access-Management (PAM) Konzept
├── [§30 Nr.9] Hardware/Software/Daten-Inventar
├── [§30 Nr.10] MFA-Rollout-Plan
├── [§30 Nr.10] Notfallkommunikationsplan (Out-of-Band)
│
Ebene 4: Nachweise & Records (Audit-Trail)
├── [§30 Nr.1] Risikobewertungs-Protokolle (mind. jährlich)
├── [§30 Nr.2] Incident-Tickets & Post-Mortem-Reports
├── [§30 Nr.2] BSI-Meldebelege (Ticket-Nr. + Zeitstempel)
├── [§30 Nr.3] DR-Test-Protokolle (mind. jährlich)
├── [§30 Nr.3] Backup-Restore-Testprotokolle
├── [§30 Nr.4] Lieferanten-Assessment-Ergebnisse
├── [§30 Nr.5] Patch-Compliance-Reports
├── [§30 Nr.5] Vulnerability-Scan-Berichte
├── [§30 Nr.6] Interne Audit-Berichte
├── [§30 Nr.6] Management-Review-Protokolle (mind. jährlich, §38!)
├── [§30 Nr.6] nis2scan Compliance-Reports (automatisiert!)
├── [§30 Nr.7] Schulungsnachweise pro Mitarbeiter
├── [§30 Nr.7] Phishing-Simulations-Ergebnisse
├── [§30 Nr.7] GF-Schulungsnachweis (Pflicht nach §38 BSIG!)
├── [§30 Nr.8] Key-Rotation-Logs
├── [§30 Nr.9] Access-Review-Protokolle (quartalsweise)
├── [§30 Nr.10] MFA-Enrollment-Status-Reports
│
Querschnittsdokumente (nicht §30-spezifisch)
├── [§33] BSI-Registrierungsbestätigung
├── [§38] Geschäftsführer-Schulungsnachweis + Billigungsprotokoll
├── [§30(1) S.3] Dokumentation aller Maßnahmen (Pflicht, "verhältnismäßig")
├── ISMS-Geltungsbereich & Organisationsstruktur
├── RACI-Matrix für Informationssicherheit
├── Statement of Applicability (SoA, bei ISO-27001-Zertifizierung)
└── Kontinuierlicher Verbesserungsprozess (KVP / PDCA-Zyklus)
```
### 级别 2:针对各个 §30 领域,方针中必须包含什么?
级别 2 中的每一项方针都必须超越纯粹的法律文本,并将 §30 BSIG 和 ISO 27001 的要求操作化:
| §30 序号 | 方针 | 必须内容(节选) | ISO 27001 |
|----------|-----------|------------------------|-----------|
| **1** | 风险管理方针 | 方法论 (NIST/ISO 27005)、风险类别、评估标准、风险偏好、升级阈值 | 6.1.2, A.5.1 |
| **2** | Incident Response 方针 | 事件类别 (P1-P4)、升级级别、§32 报告期限 (24h/72h/1M)、取证、经验教训 | A.5.24-A.5.28 |
| **3** | 业务连续性方针 | 按关键性划分的 RTO/RPO、备份策略 (3-2-1 规则)、DR 场景、危机组织、测试节奏 | A.5.29-A.5.30, A.8.13 |
| **4** | 供应链安全方针 | 供应商分类、最低条款 (SLA、审计权、分包商)、Shared-Responsibility 矩阵 | A.5.19-A.5.23 |
| **5** | SDL 与补丁方针 | SDL 阶段、补丁 SLA (Critical: 24h, High: 72h)、VDP、变更管理 (CAB)、强制 SBOM | A.8.8-A.8.9, A.8.25 |
| **6** | 审计与有效性方针 | 审计计划(频率、范围)、KPI (MTTD、补丁率、MFA 覆盖率)、管理评审 (§38!) | 9.2, 9.3, A.5.35 |
| **7** | 培训与意识方针 | 目标群体 (GF §38、管理员、开发人员、所有员工)、必修模块、频率、钓鱼模拟、效果评估 | A.6.3, A.5.17 |
| **8** | 密码学方针 | 允许的算法 (BSI TR-02102)、禁用的程序、密钥生命周期、HSM/KMS 要求、Crypto-Agility | A.8.24 |
| **9** | 访问控制与资产管理方针 | Need-to-Know 原则、RBAC、JML 流程、PAM (Just-in-Time)、Access Review、资产分类 (C/I/A)、CMDB | A.5.15-A.5.18, A.8.1-A.8.5 |
| **10** | MFA 与通信方针 | 强制 MFA(首选 FIDO2)、E2E 加密、紧急通信 (Out-of-Band)、Break-Glass 程序 | A.8.5, A.8.20 |
### 扫描器 → ISMS 文档的连接
nis2scan 报告可作为**级别 4 的自动化证明**。该扫描器并不能替代级别 1-3 的文档(这些必须由人工编写/填写),但它提供:
| nis2scan 提供的内容 | 替代了哪个文档? | ISMS 级别 |
|---------------------|--------------------------|------------|
| JSON/MD/PDF 格式的合规报告 | 用于内部审计的技术检查报告 | 级别 4 |
| 各个 §30 领域的发现 | 风险登记册的输入(级别 3) | 级别 3 → 4 |
| 随时间变化的合规分数 | ISMS 仪表盘的 KPI 输入(级别 3) | 级别 3 |
| Remediation-as-Code | 措施计划附录(级别 3) | 级别 3 |
| Permission-Policy 导出 | 技术控制的文档记录 | 级别 3 |
| Drift-Detection (持续监控) | 情况恶化时的回归警告 | 级别 4 |
### 扫描器不能替代的内容
- **级别 1:** IS 方针必须由 GF 签署 (§38 BSIG)
- **级别 2:** 方针必须针对企业自身情况制定
- **级别 3:** BIA、DR 计划、培训计划属于组织流程
- **§32 报告:** 扫描器不会替您向 BSI 报告事件;这是一个手动的强制流程
- **§38 GF 培训:** 必须实际进行管理层培训(个人义务)
- **§39 KRITIS 审计:** 对于 KRITIS 运营商:每 3 年进行一次 BSI 审计;nis2scan 可以作为准备工具,但不能替代审计
→ **级别 1-3 的文档正在准备 NIS2 ISMS 入门套件:预制的、基于 §30 BSIG 和 ISO 27001 的模板及填写指南。感兴趣吗?[打开 GitHub Issue](https://github.com/letaible/nis2scan/issues)。**
## 安装
```
# 从 PyPI
pip install nis2scan
# 或者从 Repo
git clone https://github.com/letaible/nis2scan.git
cd nis2scan
pip install -e .
```
## 配置
```
# config/default.yaml
company:
name: "Ihre GmbH"
sector: "manufacturing"
nis2_category: "important"
scan:
providers:
aws:
enabled: true
profile: "nis2scan-readonly"
regions: ["eu-central-1", "eu-west-1"]
azure:
enabled: false
bsig_30_scope: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
```
## 所需权限
所有所需权限的详细文档:
**[docs/permissions.md](https://github.com/letaible/nis2scan/blob/main/docs/permissions.md)**:AWS IAM Policies、Azure RBAC + Graph API、Service Principal 设置、OIDC CI/CD 设置。
```
# 自动生成最小 IAM Policy
nis2scan permissions --provider aws --format terraform
nis2scan permissions --provider azure --format azurecli
```
## 用法
```
# 完整 Scan
nis2scan scan --provider aws --config config.yaml
# 仅特定的 §30-Bereiche
nis2scan scan --provider aws --bsig-nr 8,9,10
# Output 为 JSON
nis2scan scan --provider aws --format json --output report.json
```
## 许可证
Apache License 2.0,详见 [LICENSE](https://github.com/letaible/nis2scan/blob/main/LICENSE)。
此代码仓库包含完整的免费扫描器(所有检查、所有提供商)。高级功能(PDF 导出、Remediation-as-Code、持续监控、SaaS 仪表盘)是独立代码仓库中的专有扩展,需要许可证。咨询:[GitHub Issues](https://github.com/letaible/nis2scan/issues)。
*nis2scan 是一个独立的开源项目,与 BSI、联邦政府或云提供商没有任何关系。*
标签:Python, 审计工具, 文档结构分析, 无后门, 杀软绕过, 漏洞利用检测