MG-Teban/multi-cloud-identity-platform

GitHub: MG-Teban/multi-cloud-identity-platform

基于 FastAPI 构建的企业级多云 IAM 自动化平台,提供统一的身份管理接口、零信任安全模型及合规审计功能。

Stars: 0 | Forks: 0

# 多云身份自动化平台 ## 概述 该平台通过单一、安全的 API 自动化跨多个云提供商的身份与访问管理 (IAM) 操作。其设计旨在满足企业安全标准和合规性要求,包括 **ISO 27001**、**SOC 2** 和 **Australian Privacy Principles (APP)**。 该项目作为专业作品集构建,目标岗位为 **Cloud Security Engineer**、**IAM Engineer** 和 **Cybersecurity Analyst**。 ## 核心功能 - **多云支持** — 通过适配器模式 支持 Azure、AWS、Google - **Zero Trust 架构** — 每个请求都经过身份验证和授权,无一例外 - **RBAC** — 基于角色的访问控制(admin, service_desk, auditor) - **完整审计追踪** — 针对每个操作的结构化 JSON 日志(谁、在做什么、何时、从哪里) - **SIEM 集成** — Splunk HEC 和 Microsoft Sentinel - **ITSM 集成** — ServiceNow 工单生命周期管理 - **实时通知** — Slack 和 Microsoft Teams webhooks - **合规就绪** — 每个事件均标记 ISO 27001, SOC 2, APP ## 架构 ``` ┌─────────────────────────────────────────────────────────────────────┐ │ CLIENTS / CONSUMERS │ │ ServiceNow │ Slack / Teams │ Admin / CI-CD │ └──────────┬───────────────────┬──────────────────┬───────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ API GATEWAY (FastAPI) │ │ │ │ POST /identity/action GET /audit/logs GET /health │ │ │ │ ┌────────────────────────────────────────────────────────────┐ │ │ │ SECURITY MIDDLEWARE │ │ │ │ JWT Validation → RBAC Check → Audit Trail Init │ │ │ └────────────────────────────────────────────────────────────┘ │ └──────────────────────────────┬──────────────────────────────────────┘ │ ┌───────────────┼───────────────┐ ▼ ▼ ▼ ┌─────────────────┐ ┌───────────┐ ┌────────────────────┐ │ Identity Service│ │ Audit │ │ Notification │ │ (orchestrator) │ │ Service │ │ Service │ └────────┬────────┘ └─────┬─────┘ └────────────────────┘ │ │ ▼ ▼ ┌──────────────────┐ ┌──────────────────────────────────┐ │ PROVIDER LAYER │ │ STORAGE / SIEM │ │ Adapter Pattern │ │ │ │ │ │ audit_logs.jsonl (append-only) │ │ ┌────────────┐ │ │ → Splunk HEC │ │ │ Azure │ │ │ → Microsoft Sentinel │ │ └────────────┘ │ └──────────────────────────────────┘ │ ┌────────────┐ │ │ │ AWS │ │ │ └────────────┘ │ │ ┌────────────┐ │ │ │ Google │ │ │ └────────────┘ │ └──────────────────┘ ``` ### 设计模式 | 模式 | 位置 | 原因 | |---|---|---| | **Adapter** | `providers/` | 跨 Azure, AWS, Google 的统一接口 | | **Dependency Injection** | FastAPI `Depends()` | 可测试、解耦的安全层 | | **Repository** | `audit_service.py` | 审计事件的存储抽象 | | **Middleware Chain** | JWT → RBAC → Handler | 对每个请求执行 Zero Trust | ## 安全模型 ### 身份验证 - **OAuth2 / JWT Bearer** — 每个受保护的端点均必需 - 验证项:签名、有效期、签发者和必需的 claims - Token ID (`jti`) 会被记录以实现完全可追溯性 ### 授权 — RBAC 矩阵 | 操作 | `admin` | `service_desk` | `auditor` | |---|:---:|:---:|:---:| | `reset_password` | ✓ | ✓ | ✗ | | `unlock_user` | ✓ | ✓ | ✗ | | `disable_user` | ✓ | ✗ | ✗ | | `enable_user` | ✓ | ✗ | ✗ | | `view_audit_logs` | ✓ | ✗ | ✓ | ### 应用的 Zero Trust 原则 | 原则 | 实现方式 | |---|---| | 永不信任,始终验证 | 对 **每个** 请求验证 JWT | | 最小权限 | 针对每个操作和提供商的细粒度 RBAC | | 假设已被入侵 | 每个操作都被记录 — 无静默操作 | | 显式验证 | 捕获完整上下文:谁、在做什么、何时、从哪里 | ## 审计日志格式 每个操作都会生成一个不可变的 JSON 事件: ``` { "event_id": "f3a2b1c4-...", "timestamp": "2026-04-03T14:32:00Z", "actor": { "user": "jsmith@company.com", "role": "service_desk", "ip": "10.0.1.45", "jwt_jti": "token-id-for-correlation" }, "action": { "type": "unlock_user", "provider": "azure", "target_user": "mgarcia@company.com", "reason": "INC0012345 - Locked after 5 failed attempts", "ticket_id": "INC0012345" }, "result": { "status": "success", "message": "Account unlocked successfully.", "duration_ms": 342 }, "compliance_tags": ["ISO27001-A.9.4", "ISO27001-A.9.4.2", "SOC2-CC6.1", "SOC2-CC6.2", "APP-11"] } ``` ## 实际用例 | 场景 | 操作 | 触发源 | |---|---|---| | 多次登录失败后用户被锁定 | `unlock_user` | ServiceNow 工单 | | 检测到密码泄露 | `reset_password` | 安全事件响应 | | 员工离职 | `disable_user` | HR 系统 / IT 请求 | | 账户重新激活 | `enable_user` | 经理审批工作流 | ## API 参考 ### `POST /identity/action` 执行身份操作。需要具有相应角色的 JWT。 ``` curl -X POST http://localhost:8000/identity/action \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "provider": "azure", "action": "unlock_user", "target_user": "mgarcia@company.com", "reason": "INC0012345 - Locked account", "ticket_id": "INC0012345" }' ``` **响应:** ``` { "event_id": "f3a2b1c4-...", "success": true, "provider": "azure", "action": "unlock_user", "target_user": "mgarcia@company.com", "message": "Account unlocked successfully.", "timestamp": "2026-04-03T14:32:01Z" } ``` ### `GET /audit/logs` 查询审计日志,支持可选过滤器。需要 `admin` 或 `auditor` 角色。 ``` curl "http://localhost:8000/audit/logs?action=unlock_user&provider=azure&limit=20" \ -H "Authorization: Bearer " ``` ### `GET /health` 健康检查 — 无需身份验证。 ``` curl http://localhost:8000/health ``` ## 项目结构 ``` ├── app/ │ ├── api/routes/ # FastAPI endpoints │ │ ├── identity.py # POST /identity/action │ │ ├── audit.py # GET /audit/logs │ │ └── health.py # GET /health │ ├── providers/ # Adapter Pattern — multi-cloud │ │ ├── base.py # IdentityProvider interface │ │ ├── azure_provider.py # Microsoft Graph API │ │ ├── aws_provider.py # boto3 IAM + Cognito │ │ └── google_provider.py # Admin SDK │ ├── services/ # Business logic orchestration │ │ ├── identity_service.py │ │ ├── audit_service.py │ │ └── notification_service.py │ ├── security/ # Zero Trust layer │ │ ├── jwt_handler.py │ │ ├── rbac.py │ │ └── middleware.py │ ├── integrations/ # External systems │ │ ├── servicenow.py │ │ ├── splunk.py │ │ └── sentinel.py │ ├── models/ # Pydantic schemas + dataclasses │ └── utils/ # Config + structured logging ├── tests/ ├── main.py ├── Dockerfile ├── docker-compose.yml └── .env.example ``` ## 合规性覆盖 | 框架 | 涵盖的控制项 | |---|---| | **ISO 27001** | A.9.4 (Access Control), A.9.2.2, A.9.2.6, A.12.4.1 (Logging) | | **SOC 2** | CC6.1 (Logical Access), CC6.2, CC6.3, CC7.2 (Monitoring) | | **Australian Privacy Principles** | APP 11 (Security of personal information) | 该系统通过以下方式帮助证明合规性: - 对每个操作强制执行身份验证访问 - 为每个事件维护不可变的、结构化的审计追踪 - 将事件转发到 SIEM 以进行持续监控 - 为每个事件标记相关的控制参考 ## 开始使用 ### 前置条件 - Python 3.12+ - Docker (可选) - 至少一个云提供商的凭证 ### 本地设置 ``` # 1. Clone 仓库 git clone https://github.com/MG-Teban/multi-cloud-identity-platform.git cd multi-cloud-identity-platform # 2. 创建虚拟环境 python -m venv .venv source .venv/bin/activate # Linux/Mac # .venv\Scripts\activate # Windows # 3. 安装依赖 pip install -r requirements.txt # 4. 配置环境 cp .env.example .env # 编辑 .env 并填入你的凭证 # 5. 运行应用 uvicorn main:app --reload # API 文档位于: # http://localhost:8000/docs ``` ### Docker ``` # 构建并运行 docker-compose up --build # 运行测试 docker run --rm iam-platform pytest ``` ### 运行测试 ``` pytest -v ``` ## 云提供商设置 ### Azure Entra ID 1. 在 [Azure Portal → App registrations](https://entra.microsoft.com) 中注册一个应用程序 2. 添加 API 权限:`User.ReadWrite.All`, `Directory.ReadWrite.All` 3. 授予管理员同意 4. 创建客户端密钥 5. 在 `.env` 中设置 `AZURE_TENANT_ID`, `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET` ### AWS 1. 创建一个具有最小权限的 IAM 用户或角色 2. 所需策略:`iam:UpdateLoginProfile`, `cognito-idp:Admin*` 3. 在 `.env` 中设置 `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` 4. 生产环境:使用带有 STS AssumeRole 的 IAM Roles,而不是静态密钥 ### Google Workspace 1. 在 [Google Cloud Console](https://console.cloud.google.com) 中创建服务账号 2. 启用全域授权 3. 添加 OAuth scope:`https://www.googleapis.com/auth/admin.directory.user` 4. 下载服务账号 JSON 密钥 5. 在 `.env` 中设置 `GOOGLE_SERVICE_ACCOUNT_FILE` 和 `GOOGLE_ADMIN_EMAIL` ## 技术栈 | 层级 | 技术 | |---|---| | API 框架 | FastAPI + Pydantic v2 | | 身份验证 | OAuth2 / JWT (python-jose) | | Azure | Microsoft Graph API (httpx) | | AWS | boto3 (IAM + Cognito) | | Google | google-api-python-client (Admin SDK) | | 异步 HTTP | httpx | | 日志记录 | python-json-logger (结构化 JSON) | | 测试 | pytest + pytest-asyncio | | 容器化 | Docker + docker-compose | ## 许可证 MIT License — 详情见 [LICENSE](LICENSE)。 *构建此项目作为云安全与 IAM 工程作品集的一部分。*
标签:AMSI绕过, API安全, AWS, Azure, Cybersecurity, DevSecOps, DPI, Golang, Google Cloud, IAM, ISO 27001, ITSM集成, JSONLines, JSON输出, Microsoft Sentinel, Python, RBAC, ServiceNow, SIEM集成, Slack, SOC 2, Teams, Zero Trust, 上游代理, 人工智能安全, 企业安全, 合规性, 基于角色的访问控制, 多云管理, 威胁检测, 安全编程, 实时通知, 审计日志, 无后门, 权限管理, 构建工具, 模型越狱, 网络安全, 网络资产管理, 自动化平台, 请求拦截, 身份与访问管理, 逆向工具, 隐私保护, 零信任