ezequieldlv/mysstic-cloud-iac
GitHub: ezequieldlv/mysstic-cloud-iac
该项目用 Terraform 在 AWS 上自动化交付多可用区零信任云基础设施,涵盖网络隔离、动态密钥、左移安全审计和无服务器告警。
Stars: 0 | Forks: 0
# ☁️ MyssTic Warden: 云基础设施 (IaC)







本仓库包含 **MyssTic Warden** 云环境的基础设施即代码 和配置管理供给,作为 AWS 骨干和生产环境。
## 🏗️ 架构与安全 (Tier-3 零信任与左移安全)
基础设施经过严格的模块化设计(网络、计算、数据库、监控、DNS),并从零开始构建,具备严格的网络边界、动态密钥和自动化安全门控:
* **左移安全与 OIDC:** CI/CD 流水线通过 **OpenID Connect (OIDC)** 对 AWS 进行身份验证,消除了静态凭证。每次推送在部署前都会经过 **Trufflehog**(密钥扫描)和 **Checkov**(IaC 合规性)的审计。
* **网络 (Multi-AZ):** 自定义 VPC (`10.0.0.0/16`) 划分为公共 DMZ (`10.0.1.0/24`) 和完全隔离的私有子网 (`10.0.2.0/24`, `10.0.3.0/24`)。DNS 通过 Amazon Route 53 进行原生管理。
* **计算与配置管理:** 运行在 ARM64 Graviton 实例 (t4g.micro) 上的 Debian Linux。配置完全通过 **Ansible 企业级角色** (Docker, Traefik, Apps) 自动化。
* **零信任 VPN 与部署:** EC2 不会向互联网暴露 SSH (端口 22)。GitHub Actions runner 使用临时的 AuthKey 动态加入 **Tailscale** 私有网络,并通过内部 Tailnet 安全地执行 Ansible playbook。
* **持久化:** Amazon RDS (PostgreSQL 16) 独家部署在私有区域。
* **零信任安全组:** 默认拒绝入站流量。EC2 仅允许 HTTP/HTTPS。RDS 数据库拒绝基于 IP 的连接,通过 EC2 的安全组身份进行加密身份验证。
* **动态密钥:** 密码和 token 绝不硬编码或在本地存储。Terraform 在运行时从 **AWS Secrets Manager** 动态提取密钥。
* **事件驱动的可观测性:** 自动化的混沌/故障检测。**Amazon CloudWatch** 监控 EC2 指标并触发 **Amazon SNS** 主题。**AWS Lambda** 函数将实时关键警报推送到 Telegram 机器人。
* **状态管理:** Terraform 状态 (`.tfstate`) 通过使用 **Amazon S3** (AES-256 加密) 和 **DynamoDB** 进行并发状态锁定的 **Remote Backend** 进行严格管理。
* **GitOps 拉取自动化:** EC2 实例被授予 IAM 实例配置文件,以便在没有静态密钥的情况下安全地向 ECR 进行身份验证。本地的 Watchtower agent 自主轮询注册表,并为应用程序容器编排零停机的滚动更新。
## 🗺️ 云拓扑
```
graph TD
classDef aws fill:#FF9900,stroke:#fff,stroke-width:2px,color:#000,font-weight:bold
classDef tf fill:#5835CC,stroke:#fff,stroke-width:2px,color:#fff,font-weight:bold
classDef cicd fill:#1a1b26,stroke:#e0af68,stroke-width:2px,color:#c0caf5
classDef net fill:#292e42,stroke:#7aa2f7,stroke-width:2px,color:#c0caf5
classDef compute fill:#16161e,stroke:#9ece6a,stroke-width:2px,color:#c0caf5
classDef db fill:#336791,stroke:#fff,stroke-width:2px,color:#fff,font-weight:bold
classDef sec fill:#cc2222,stroke:#fff,stroke-width:2px,color:#fff,font-weight:bold
classDef serverless fill:#D18B00,stroke:#fff,stroke-width:2px,color:#fff,font-weight:bold
GitHub((🐙 GitHub Actions)):::cicd -->|1. OIDC Auth| IAM[AWS IAM Role]:::sec
GitHub -->|2. Shift-Left| SecGates[Trufflehog & Checkov]:::sec
SecGates -->|3. CD Pipeline| TF[🟪 Terraform CLI]:::tf
SecGates -->|4. Push App| ECR[(🐳 AWS ECR)]:::aws
subgraph "Terraform Remote Backend"
TF -.->|State Lock Mutex| Dynamo[(⚡ DynamoDB Table)]:::aws
TF -.->|State Read/Write| S3[(🪣 S3 Bucket Encrypted)]:::aws
end
TF -->|Provisions via API| VPC[☁️ AWS Custom VPC 10.0.0.0/16]:::net
TF -->|Grants IAM Auth| EC2
subgraph "AWS us-east-2 Ohio"
Route53((🌐 Route 53)):::aws --> IGW
VPC --> IGW[🚪 Internet Gateway]:::net
subgraph "Public Zone (DMZ)"
IGW --> PubSub[🌐 Public Subnet 10.0.1.0/24]:::net
PubSub --> EC2[🖥️ t4g.micro Graviton + Watchtower]:::compute
PubSub --> SG1[🛡️ SG: HTTP/HTTPS]:::net
end
subgraph "Private Zone (The Vault)"
EC2 -->|Port 5432 / SG Auth| RDS[(🐘 RDS PostgreSQL)]:::db
SG2[🛡️ SG: EC2 Identity Only]:::net -.-> RDS
end
end
EC2 -.->|Autonomously Pulls| ECR
Lambda -->|API POST| Telegram((📱 Telegram Bot)):::cicd
```
## 🛠️ 技术栈
* **供给:** Terraform (HashiCorp) - 模块化架构
* **配置管理:** Ansible (角色结构)
* **云提供商:** AWS (us-east-2)
* **数据库:** Amazon RDS (PostgreSQL)
* **Serverless:** AWS Lambda, Amazon SNS, CloudWatch
* **安全:** AWS Secrets Manager, IAM OIDC, Tailscale VPN, Checkov, Trufflehog
* **状态后端:** AWS S3 + DynamoDB
* **CI/CD:** GitHub Actions
* **操作系统:** Debian Linux
## 🚀 部署工作流 (持续部署)
本仓库强制执行严格的 GitOps 工作流。不推荐使用本地变量手动执行 `terraform apply`。
1. **安全门控:** 任何推送/PR 都会触发 Trufflehog(密钥扫描)和 Checkov(IaC 静态分析)。
2. **零信任身份验证:** 流水线通过 OpenID Connect (OIDC) 安全地向 AWS 进行身份验证,并担任临时的 IAM 角色。
3. **不可变供给:** Terraform 初始化远程后端,从 AWS Secrets Manager 中在内存中获取动态密钥,并应用基础设施更改。
4. **配置交付:** 供给完成后,GitHub Runner 使用临时的 AuthKey 加入私有 Tailnet,并通过 SSH 安全地执行 Ansible playbook,而无需暴露端口 22。
*由 MyssTic Warden 云运营团队维护。*
标签:Ansible, AWS, DPI, ECS, GitOps, Terraform, 测试用例, 漏洞利用检测, 系统提示词, 请求拦截, 零信任网络