UmerN236/azure-hybrid-enterprise-capstone
GitHub: UmerN236/azure-hybrid-enterprise-capstone
一个 Azure 托管的 Windows Server 企业实验室,通过自动化脚本和 IaC 演示 AD DS 身份管理、组策略、文件服务及运维监控的完整云端部署。
Stars: 0 | Forks: 0
# 安全的 Azure 托管 Windows 企业基础设施
一个基于 Azure 托管的 Windows 企业实验室,旨在演示云网络、
Active Directory 管理、组策略、最小权限文件服务、
PowerShell 自动化、备份与恢复以及运营监控。
## 项目概览
| 领域 | 实现结果 |
|---|---|
| Azure 网络 | 一个 `/16` VNet,包含独立的管理、服务器和客户端 `/24` 子网 |
| 网络 IaC | 添加了 Bicep 模板,用于可重现的 VNet、子网和 NSG |
| 身份 | Windows Server 2025 AD DS 林和 DNS 域 `corp.netcore.local` |
| 最终用户测试 | 第二台 Windows Server VM 用作域成员 `CLIENT01` |
| 管理 | 部门 OU、10 个虚拟用户和 10 个安全组 |
| 授权 | AGDLP 风格的全局组到域本地组的嵌套 |
| 文件服务 | 五个加密的 SMB 共享,具有基于访问的枚举和显式 NTFS ACL |
| 组策略 | IT 驱动器映射、IT 用户限制和计算机安全基线 |
| 备份 | Windows Server Backup 到专用附加磁盘,并已验证文件恢复 |
| 监控 | Windows 日志、性能监视器、Azure 指标和高 CPU 占用警报 |
| 验证 | 服务、DNS、防火墙、Defender、SMBv1、备份和 `dcdiag` 检查 |
## 架构
```
flowchart TB
Internet((Internet))
subgraph Azure["Azure subscription"]
RG["Resource group
rg-netcore-capstone"] subgraph VNet["vnet-netcore-prod · 10.20.0.0/16"] Mgmt["snet-management
10.20.1.0/24
Reserved; no workload deployed"] subgraph Servers["snet-servers · 10.20.2.0/24 · nsg-servers"] DC["DC01 · 10.20.2.10
Windows Server 2025
AD DS · DNS · GPO · SMB"] Backup["Attached backup disk · E:
Windows Server Backup"] end subgraph Clients["snet-clients · 10.20.3.0/24 · nsg-clients"] Client["CLIENT01
Domain-joined Windows Server member
DNS: 10.20.2.10"] end end AzureMonitor["Azure platform metrics
High-CPU alert"] end Internet --> RG RG --> VNet Client -->|"DNS · Kerberos · LDAP · SMB · GPO"| DC DC --> Backup DC --> AzureMonitor Planned["Planned, not demonstrated
Bastion/VPN · second DC · Recovery Services Vault
Log Analytics/AMA · Entra integration · IaC"] Azure -. future .-> Planned ``` 带有状态的架构描述位于 [architecture/README.md](architecture/README.md) 中。原始的演示 图表作为清晰标记的历史参考保留,因为 它将几个计划中的服务绘制得好像已经实现一样。 ## 项目演示内容 ### Azure 网络分段 该实验室使用 `10.20.0.0/16` 虚拟网络,并将其拆分为管理、服务器和 客户端子网。服务器和客户端子网具有独立的网络安全 组。在实验期间,管理 RDP 被限制为受信任的公共地址。 ### Active Directory 和 DNS `DC01` 托管单域 `corp.netcore.local` 林和所有 FSMO 角色。 CLIENT01 使用 `10.20.2.10` 进行 DNS 解析,加入域,对域 用户进行身份验证,并接收组策略。 ### AGDLP 风格的访问控制 用户属于诸如 `GG_IT_Users` 之类的部门全局组。这些组 嵌套在诸如 `DL_IT_RW` 之类的资源组中,并且只有资源 组接收共享和 NTFS 权限: ``` User account → GG__Users → DL__RW → folder permission
```
这将身份成员资格与资源授权分离开来,并避免
直接将文件权限分配给用户帐户。
### 加固的部门共享
该项目创建了 IT、HR、财务、销售和运营共享,具有:
- 加密的 SMB 传输;
- 基于访问的枚举;
- 无离线缓存;
- Domain Admins 完全共享访问权限;
- 具有更改/修改权限的部门资源组;
- 对 SYSTEM、Administrators 和正确组的显式 NTFS 权限。
### 组策略
备份的 GPO 演示了:
- 将 `I:` 映射到 `\\DC01\IT` 供 IT 用户使用;
- 限制 IT 测试 OU 的控制面板和命令提示符;
- 强制执行 15 分钟的非活动限制和授权使用登录通知;
- 默认域和域控制器安全策略。
导出的域密码策略保留了七个字符的最小长度,并且
禁用了帐户锁定。这些历史设置被如实记录;
在 [docs/security.md](docs/security.md) 中有更强有力的推荐基线。
### 备份、恢复和监控
Windows Server Backup 在专用的附加磁盘上保护了系统状态、部门共享和
实验室文件。通过删除、恢复文件并
使用 SHA-256 进行了验证。监控包括 Windows 事件日志、性能
监视器、Azure VM 指标和高 CPU 占用警报。
记录的 `dcdiag` SystemLog 输出包含 Azure NetVsc 和 Secure
Boot 相关事件。核心 AD、DNS、身份验证和文件服务保持
正常运作,但该存储库并未将诊断输出描述为
完全干净。
## 存储库布局
```
.
├── .github/workflows/ GitHub quality checks
├── architecture/ As-built diagram and historical reference image
├── config/ Non-secret environment configuration
├── docs/ Design, deployment, security, testing, and roadmap
├── evidence/ Historical reports, GPO backups, and screenshots
├── infra/ Bicep network foundation
├── sample-data/ Sanitized fictional user-import data
├── scripts/ Reusable PowerShell automation
└── tools/ Repository-level quality checks
```
`evidence/` 目录是已完成实验室的历史证明。
脚本随后为了安全发布进行了加固,因此重新生成的
报告在格式和验证状态上可能会有所不同。
Bicep 网络模板也是在最初的门户部署之后添加的。
它提高了未来的可重现性,但并不作为历史证据展示。
## 重现 Windows 配置
前置条件:
- Windows Server 2025 或兼容的 Windows Server 版本;
- 与 `config/NetCoreConfig.psd1` 匹配的现有 AD DS 林;
- PowerShell 5.1 或更高版本,以管理员身份运行;
- 视需要而定的 ActiveDirectory、SmbShare 和 ServerManager 模块;
- 复制到 `C:\NetCore-Lab\CSV\users.csv` 的示例 CSV。
首先检查配置并预览更改:
```
Get-Content .\config\NetCoreConfig.psd1
.\scripts\01-Create-OUStructure.ps1 -WhatIf
.\scripts\02-Create-ADGroups.ps1 -WhatIf
.\scripts\04-Create-FileShares.ps1 -WhatIf
```
建议的执行顺序:
```
.\scripts\01-Create-OUStructure.ps1
.\scripts\02-Create-ADGroups.ps1
.\scripts\03-Import-ADUsers.ps1
.\scripts\04-Create-FileShares.ps1 -Confirm:$false
.\scripts\05-Export-FileShareReport.ps1
.\scripts\06-Export-BackupReport.ps1
.\scripts\07-Server-HealthCheck.ps1
.\scripts\08-Final-Validation.ps1
```
用户导入会安全地提示输入临时密码;存储库中不存储
任何密码。在运行脚本之前,请阅读完整的[部署指南](docs/deployment-guide.md)。
## 证据亮点
| 控制或结果 | 证据 |
|---|---|
| 网络和子网部署 | [Azure 网络截图](evidence/screenshots/azure-network/) |
| 域和 OU 创建 | [AD 截图](evidence/screenshots/active-directory/) |
| GPO 强制执行 | [GPO 截图](evidence/screenshots/group-policy/) 和 [备份](evidence/gpo-backups/) |
| 授权和拒绝的共享访问 | [文件服务器截图](evidence/screenshots/file-server/) |
| 恢复测试 | [备份报告](evidence/reports/Backup-Report.txt) 和 [截图](evidence/screenshots/backup/) |
| 监控和诊断 | [监控报告](evidence/reports/Monitoring/) |
| 最终环境清单 | [最终系统清单](evidence/reports/Final-System-Inventory.txt) |
有关证据映射和
解释说明,请参阅 [docs/evidence-index.md](docs/evidence-index.md)。
## 已知局限和路线图
此概念验证有意不包括:
- 第二个域控制器或独立的文件服务器;
- 本地连接或 Microsoft Entra 同步;
- Azure Bastion、仅 VPN 管理或特权访问工作站;
- 针对 VM、身份、备份和监控的完整基础设施即代码;
- Azure 原生的异地备份证据;
- Log Analytics、Azure Monitor Agent、VM Insights 或集中式 SIEM;
- 生产环境的密码/锁定设置;
- 多区域灾难恢复。
优先改进项已记录在
[docs/limitations-and-roadmap.md](docs/limitations-and-roadmap.md) 中。
## 安全和负责任的使用
所有公司名称和用户记录均为虚构。在发布分支之前,
请检查截图和导出文件中是否包含订阅 ID、公共 IP 地址、
租户信息、用户名或其他环境特定数据。
有关漏洞报告和密钥处理指南,请参阅
[SECURITY.md](SECURITY.md)。
最终的发布步骤、建议的存储库元数据和仅限所有者的
安全决策位于
[docs/github-publishing.md](docs/github-publishing.md) 中。
## 许可证
该项目基于 [MIT 许可证](LICENSE) 发布。
rg-netcore-capstone"] subgraph VNet["vnet-netcore-prod · 10.20.0.0/16"] Mgmt["snet-management
10.20.1.0/24
Reserved; no workload deployed"] subgraph Servers["snet-servers · 10.20.2.0/24 · nsg-servers"] DC["DC01 · 10.20.2.10
Windows Server 2025
AD DS · DNS · GPO · SMB"] Backup["Attached backup disk · E:
Windows Server Backup"] end subgraph Clients["snet-clients · 10.20.3.0/24 · nsg-clients"] Client["CLIENT01
Domain-joined Windows Server member
DNS: 10.20.2.10"] end end AzureMonitor["Azure platform metrics
High-CPU alert"] end Internet --> RG RG --> VNet Client -->|"DNS · Kerberos · LDAP · SMB · GPO"| DC DC --> Backup DC --> AzureMonitor Planned["Planned, not demonstrated
Bastion/VPN · second DC · Recovery Services Vault
Log Analytics/AMA · Entra integration · IaC"] Azure -. future .-> Planned ``` 带有状态的架构描述位于 [architecture/README.md](architecture/README.md) 中。原始的演示 图表作为清晰标记的历史参考保留,因为 它将几个计划中的服务绘制得好像已经实现一样。 ## 项目演示内容 ### Azure 网络分段 该实验室使用 `10.20.0.0/16` 虚拟网络,并将其拆分为管理、服务器和 客户端子网。服务器和客户端子网具有独立的网络安全 组。在实验期间,管理 RDP 被限制为受信任的公共地址。 ### Active Directory 和 DNS `DC01` 托管单域 `corp.netcore.local` 林和所有 FSMO 角色。 CLIENT01 使用 `10.20.2.10` 进行 DNS 解析,加入域,对域 用户进行身份验证,并接收组策略。 ### AGDLP 风格的访问控制 用户属于诸如 `GG_IT_Users` 之类的部门全局组。这些组 嵌套在诸如 `DL_IT_RW` 之类的资源组中,并且只有资源 组接收共享和 NTFS 权限: ``` User account → GG_
标签:Active Directory, AI合规, Azure 云平台, Plaso, PowerShell 自动化, Terraform 安全, Windows Server, 后端开发, 基础架构即代码, 系统运维