Jbrong/wildmark

GitHub: Jbrong/wildmark

一个以安全优先设计的全栈公园发现应用,作为 AWS 云安全架构最佳实践的生产级参考实现。

Stars: 0 | Forks: 0

# 🏕️ Wildmark ![Wildmark Logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1e0cc0c9ed105501.png) Wildmark 是一个全栈 Web 应用程序,用于发现美国州立和国家公园、探索附近的活动,并阅读其他露营者的社区评论和提示。由一位独立开发者构建并拥有,作为一个用于实际生产的 AWS 作品集项目。 **在线演示:** [wildmark.dev](https://wildmark.dev) ## 🗺️ 功能介绍 - **搜索与浏览** 按州或地区搜索和浏览州立及国家公园 - **公园详情页** — 设施、费用、开放时间、步道及附近活动 - **用户账户** — 注册、登录、收藏喜欢的公园 - **社区评论** — 为公园留下提示和评论 - **周边探索** — 在可配置的半径范围内探索活动、城镇和兴趣点 ## 🏛️ 系统架构 Wildmark 构建于 AWS 之上,采用安全优先的三层架构。所有应用和数据库层都是私有的——只有负载均衡器对外公开。 ``` User → Route 53 → CloudFront → WAF → ALB (public subnet) ↓ ECS Fargate (private subnet) ↓ RDS PostgreSQL (DB subnet — private) ``` ![架构图](https://raw.githubusercontent.com/Jbrong/wildmark/master/docs/architecture/system-overview.png) ### 基础设施亮点 | 层 | 服务 | 备注 | |---|---|---| | DNS | Route 53 | wildmark.dev 的托管区域 | | CDN | CloudFront + S3 | 静态 React 前端,全球边缘分发 | | 安全 | WAF + Shield | OWASP Top 10 规则,DDoS 防护 | | 负载均衡 | ALB | 仅限 HTTPS,HTTP → HTTPS 重定向 | | 计算 | ECS Fargate | Serverless 容器,无需管理 EC2 | | 数据库 | RDS PostgreSQL | 多可用区,私有子网,从不公开访问 | | 认证 | Cognito | 托管用户池,无需自行编写认证逻辑 | | 密钥 | SSM Parameter Store | 绝无任何硬编码凭证 | | 加密 | KMS | 静态和传输中的数据均已加密 | | 监控 | CloudWatch + CloudTrail | 从第一天起即具备完整的审计日志 | | IaC | Terraform | 100% 基础设施即代码,模块化设计 | ### VPC 设计 - **CIDR:** 跨 2 个可用区的 `10.0.0.0/16` - **公有子网:** 仅限 ALB - **私有子网:** ECS Fargate 任务 - **数据库子网:** RDS — 无互联网路由,隔离层 - **NAT Gateway:** 为私有子网提供仅限出站的互联网访问 - **VPC Flow Logs:** 已启用 — 所有流量均记录到 CloudWatch ## 🛠️ 技术栈 | 层 | 技术 | |---|---| | 前端 | React | | 后端 | Python / FastAPI | | 数据库 | PostgreSQL (RDS) | | 基础设施 | Terraform | | 容器 | Docker / ECS Fargate | | CI/CD | GitHub Actions | | 云平台 | AWS (us-east-1) | ## 🔒 安全设计 在 Wildmark 中,安全是首要考虑的因素,而非事后补救。本项目是云安全架构师路线的作品集项目,因此每一个设计决策都记录了背后的理由。 - **应用或数据库层零公共暴露** — ALB 是唯一的公共入口 - **IAM 最小权限** — 每个服务都拥有具有最低权限的独立角色,无通配符 - **无硬编码凭证** — 所有密钥存储在 SSM Parameter Store 中,并在运行时注入 - **全方位加密** — 通过 KMS 加密 RDS 和 S3 的静态数据,通过 ACM/TLS 加密所有传输中的数据 - **WAF 规则** — 覆盖所有入站流量的 OWASP Top 10 规则 - **从第一天起启用 CloudTrail** — 完整的管理和数据事件审计日志 - **使用 Cognito 进行认证** — 无自定义认证实现,支持 MFA - **VPC Flow Logs** — 记录网络流量以进行异常检测 ## 📁 项目结构 ``` wildmark/ ├── frontend/ # React app ├── backend/ # FastAPI (Python) app ├── infrastructure/ # Terraform — all AWS resources │ └── modules/ # vpc, ecs, rds, alb, cloudfront, waf, iam, cognito, monitoring ├── docs/ │ ├── architecture/ # Diagrams │ ├── adr/ # Architecture Decision Records │ └── writeup.md # Portfolio case study ├── .github/workflows/ # CI/CD — deploy frontend, backend, terraform plan ├── docker-compose.yml # Local dev environment └── README.md ``` ## 🚀 本地运行 ### 前置条件 - Docker + Docker Compose - Node.js 18+ - Python 3.11+ - AWS CLI (已配置) ### 设置 ``` git clone https://github.com/[your-handle]/wildmark.git cd wildmark cp .env.example .env # Fill in local dev values docker-compose up --build # Starts frontend, backend, and local Postgres ``` - 前端:http://localhost:3000 - 后端 API:http://localhost:8000 - API 文档:http://localhost:8000/docs ## ⚙️ 部署 基础设施完全由 Terraform 管理。在推送到 `main` 分支时,CI/CD 通过 GitHub Actions 运行。 ``` cd infrastructure/environments/prod terraform init terraform plan terraform apply ``` GitHub Actions 工作流: - `frontend-deploy.yml` — 构建 React → 上传至 S3 → 使 CloudFront 缓存失效 - `backend-deploy.yml` — 构建 Docker → 推送至 ECR → 更新 ECS 服务 - `terraform-plan.yml` — 在所有 Pull Request 上运行 `terraform plan` ## 📊 数据来源 - **国家公园管理局 API** — [nps.gov/developer](https://www.nps.gov/subjects/developer/api-documentation.htm) — 免费,无需认证,涵盖所有美国国家公园 - 社区数据(评论、收藏)存储在 RDS PostgreSQL 中 ## 🗺️ 路线图 - [x] 域名注册 (wildmark.dev) - [x] 架构设计 - [x] 仓库脚手架搭建 - [ ] 第一阶段 — VPC、RDS、ECS、ALB、CloudFront 基础设施 - [ ] 第二阶段 — 核心产品(公园搜索、认证、评论) - [ ] 第三阶段 — 安全加固(WAF、KMS、CloudTrail 警报) - [ ] 第四阶段 — Terraform IaC、架构文档说明、作品集完善 ## 👤 关于 由 Jordan Brong 构建 — 拥有 7-10 年经验的 DevOps 工程师,目前正在进修云安全架构师方向。 - 认证:AWS Cloud Practitioner ✅ | SAA-C03 (进行中) | SCS-C02 (待考) - [LinkedIn](https://linkedin.com/in/[your-handle]) ## 📄 许可证 MIT — 详见 [LICENSE](LICENSE)
标签:Amazon Cognito, AWS, CDN, CISA项目, CloudFront, Docker容器, DPI, ECS Fargate, PostgreSQL, React, Syscalls, WAF, 三 tier 架构, 全栈Web应用, 后端开发, 国家公园, 安全架构, 州立公园, 户外旅游, 攻击面发现, 数据库设计, 旅游景点推荐, 旅行攻略, 无服务器计算, 测试用例, 用户认证, 社区评论, 请求拦截, 路线规划, 逆向工具