seyifalode-cmd/azure-cloud-security-lab
GitHub: seyifalode-cmd/azure-cloud-security-lab
这是一个在Azure真实环境中完成的云安全实验项目,展示了企业级安全控制(如身份管理、威胁检测和自动化警报)的实施与验证。
Stars: 1 | Forks: 0
# Azure 云安全实验
**分析师:** Oluwaseyi Michael Falode — 网络安全工程师 | 云安全架构师
**平台:** Microsoft Azure(实时环境 — 个人订阅)
**日期:** 2026年5月15日
**已完成实验:** 7 / 7
## 概述
本项目展示了在 Microsoft Azure 中动手实施云安全控制的过程。所有 7 个实验均在真实的 Azure 实时环境中完成——非沙盒或模拟器。每个实验都涵盖了与企业云安全角色相关的关键安全领域,包括身份管理、秘密管理、威胁检测、安全态势管理、网络安全和自动化警报。
| 领域 | 技术 |
|--------|-------------|
| 身份与访问 | Microsoft Entra ID · RBAC · IAM |
| 安全监控 | Microsoft Sentinel (SIEM) · KQL 检测查询 |
| 安全态势 | Microsoft Defender for Cloud · CSPM |
| 基础设施 | Azure 虚拟网络 · 网络安全组 |
| 秘密管理 | Azure Key Vault |
| 警报 | Azure Monitor · 操作组 |
## 实验总结
| 实验 | 标题 | 状态 |
|-----|-------|--------|
| 1 | Microsoft Entra ID — 用户配置与角色分配 | ✅ 完成 |
| 2 | RBAC 与安全组管理 | ✅ 完成 |
| 3 | Azure Key Vault — 秘密管理与访问控制 | ✅ 完成 |
| 4 | Microsoft Defender for Cloud — 安全态势管理 | ✅ 完成 |
| 5 | Microsoft Sentinel — SIEM 配置与 KQL 检测查询 | ✅ 完成 |
| 6 | 虚拟网络与网络安全组规则 | ✅ 完成 |
| 7 | Azure Monitor — 基于 KQL 的安全警报 | ✅ 完成 |
## 实验 1 — Microsoft Entra ID:用户配置与角色分配
**目标:** 演示企业 IAM 中的用户加入流程 — 创建一个具有符合其工作职能的最小权限访问权限的新用户身份。
**构建内容:**
- 在 Azure 租户中创建了用户 John Smith(安全分析师),并设置了 UPN
- 分配了 **Security Reader** 角色 — 对安全信息的只读访问权限,无法修改配置
- 填充了身份属性:部门(信息安全)、职位、用户类型(成员)
- 强制首次登录时更改密码作为基本安全控制
**安全原则:** 最小权限 — 安全分析师需要读取警报和报告,而不是管理配置。Security Reader 角色仅授予所需的最低权限。
## 实验 2 — RBAC 与安全组管理
**目标:** 使用安全组实现规模化基于角色的访问控制。
**构建内容:**
- 创建了 `Security-Team` 安全组(纯访问控制,非 Microsoft 365 组)
- 将 John Smith 添加为 Security-Team 的直接成员
- 组类型:具有分配成员资格的安全组 — 手动、可审计的控制
**安全原则:** 规模化 RBAC — 当新分析师加入时,只需将其添加到 Security-Team,即可立即继承所有适当的访问权限。当其离职时,一次移除操作即可撤销所有权限。
## 实验 3 — Azure Key Vault:秘密管理与访问控制
**目标:** 部署 Azure Key Vault 以集中管理秘密 — 消除硬编码凭据并强制执行职责分离。
**构建内容:**
- 在加拿大中部部署了 `SecurityLabVault-Seyi` Key Vault(满足数据驻留要求)
- 配置了软删除(90 天)— 在受监管行业中为强制性设置
- 存储了 `db-connection-password` 秘密 — 模拟安全的数据库凭据管理
- 通过 RBAC 分配了 **Key Vault Secrets Officer** 角色 — 与资源所有权分离的显式数据平面访问权限
**安全原则:** 职责分离 — 拥有 Key Vault 的所有者**不会**自动获得其中秘密的访问权限。云管理员管理存储库而无需查看密码。开发人员读取秘密而无需管理存储库基础设施。
## 实验 4 — Microsoft Defender for Cloud:安全态势管理
**目标:** 配置并浏览 Microsoft Defender for Cloud — Azure 内置的 CSPM 工具。
**探索内容:**
- 安全态势仪表板 — 安全评分、关键建议、攻击路径
- 建议面板 — 按严重性优先排序的安全改进列表
- 安全警报 — 环境中的活动威胁检测
- 法规遵从性 — 针对 PCI-DSS、ISO 27001、NIST、SOC 2 的框架映射
- 工作负载保护 — 跨虚拟机、容器、数据库、Key Vault 的每项服务覆盖
**业务相关性:** 法规遵从性仪表板为审计师提供持续的合规态势证据 — 用实时自动控制验证取代了手动电子表格评估。
## 实验 5 — Microsoft Sentinel:SIEM 配置与 KQL 检测查询
**目标:** 部署 Microsoft Sentinel 作为云原生 SIEM,连接数据源,并编写识别真实世界攻击模式的 KQL 检测查询。
**构建内容:**
- 在加拿大中部部署了 `SentinelLab-Workspace` Log Analytics 工作区
- 连接了 **7 个 Microsoft 安全数据连接器**:Defender XDR、Defender for Identity、Defender for Endpoint、Microsoft 365、Microsoft Entra ID 等
- 编写并执行了 3 个 KQL 检测查询
**KQL 检测查询:**
```
// Query 1 — Sign-In Activity Monitor
SigninLogs
| where TimeGenerated > ago(24h)
| project TimeGenerated, UserPrincipalName, IPAddress, Location, ResultType
| limit 50
```
```
// Query 2 — Brute Force Attack Detection
SigninLogs
| where TimeGenerated > ago(1h)
| where ResultType != "0"
| summarize FailedAttempts = count() by UserPrincipalName, IPAddress
| where FailedAttempts > 5
| order by FailedAttempts desc
```
```
// Query 3 — Unauthorized User Creation Detection
AuditLogs
| where OperationName == "Add user"
| where TimeGenerated > ago(5m)
```
## 实验 6 — 虚拟网络与网络安全组规则
**目标:** 使用 Azure VNet 和 NSG 设计并实施网络分段。
**构建内容:**
- 在 SecurityLab-RG 内的加拿大中部创建了 `SecurityLab-VNet` NSG
- 添加了自定义入站规则 `Allow-HTTPS-Inbound` — 端口 443,TCP,优先级 100
**NSG 规则:**
| 优先级 | 规则 | 端口 | 操作 | 目的 |
|----------|------|------|--------|---------|
| 100 | Allow-HTTPS-Inbound(自定义) | 443 | 允许 | 来自互联网的 HTTPS Web 流量 |
| 65000 | AllowVnetInBound | 任意 | 允许 | 内部 VNet 通信 |
| 65001 | AllowAzureLoadBalancerInBound | 任意 | 允许 | 负载均衡器健康检查 |
| 65500 | DenyAllInBound | 任意 | 拒绝 | 阻止所有其他入站流量 |
**安全原则:** 默认拒绝所有架构 — 除非明确允许,否则所有流量都被阻止。
## 实验 7 — Azure Monitor:基于 KQL 的安全警报
**目标:** 使用 Azure Monitor 和 KQL 构建自动化安全警报 — 将检测规则从被动日志审查转化为主动自动化威胁通知。
**构建内容:**
- 创建了警报规则 `Detect-New-User-Creation`,目标为 `SentinelLab-Workspace`
- KQL 条件:检测过去 5 分钟内 AuditLogs 中的任何 `Add user` 操作
- 警报逻辑:当结果计数 > 0 时触发 — 对未经授权的用户创建零容忍
- 评估频率:每 5 分钟一次 — 接近实时检测
- 创建了操作组 `SecurityAlerts-AG`,配置了电子邮件 + 短信通知
- 警报严重性:2 — 警告
**实时测试 — 警报成功触发:**
在 Entra ID 中创建测试用户(Jane Doe)→ 5 分钟内,KQL 查询检测到 `Add user` 审计事件 → 阈值被触发 → `SecurityAlerts-AG` 被触发 → 发送电子邮件和短信通知。整个检测管道端到端得到验证。
## 应用的关键安全原则
| 原则 | 应用 |
|-----------|------------|
| **最小权限** | 每个用户和服务仅获得所需的最低访问权限 |
| **纵深防御** | 多层安全防护:身份、网络、数据、监控 |
| **职责分离** | 资源管理与数据访问分离(Key Vault) |
| **零信任** | 永不信任,始终验证 — 通过条件访问和 RBAC 应用 |
| **主动检测** | 自动化 KQL 警报而非被动日志审查 |
| **数据驻留** | 所有资源部署在加拿大中部以满足合规要求 |
## 技术栈
`Microsoft Azure` `Microsoft Entra ID` `Azure RBAC` `Azure Key Vault` `Microsoft Defender for Cloud` `Microsoft Sentinel` `KQL` `Azure Virtual Network` `Network Security Groups` `Azure Monitor` `Log Analytics` `CSPM` `SIEM`
## 关于本项目
这是一个在实时 Azure 环境中使用个人订阅完成的、动手操作的 Azure 云安全实验。它展示了在企业安全控制领域(身份、网络、数据和监控)的实际应用 — 这是云安全工程师、安全架构师和 SOC 角色所需的核心能力。
标签:AMSI绕过, Azure Monitor, Azure安全, CSPM, Defender for Cloud, Entra ID, hands-on安全, IAM, Key Vault, KQL, Microsoft Azure, Microsoft Sentinel, NSG, RBAC, TinkerPop, VNet, 云安全实验室, 云安全态势管理, 企业云安全, 信息收集自动化, 前端应用, 基于角色的访问控制, 威胁检测, 子域枚举, 安全信息和事件管理, 安全实验, 安全控制, 安全组管理, 实操安全, 数据隔离, 检测查询, 用户配置, 监控, 秘密管理, 网络安全性, 网络安全组, 虚拟网络, 角色分配, 警报系统, 身份与访问管理