swasthikunder/aws-shared-responsibility-risk-mapping
GitHub: swasthikunder/aws-shared-responsibility-risk-mapping
一个基于 Python 和 AWS CLI 的轻量级云安全审计项目,用于自动检测 AWS 环境中的配置错误并生成结构化报告,帮助用户理解和实践 AWS 共担责任模型中的安全最佳实践。
Stars: 0 | Forks: 1
# 🔐 AWS 共担责任风险映射





## 📌 项目概述
本项目通过以下方式模拟真实的 AWS 安全审计:
- 扫描 IAM、S3、EC2、EBS 和 CloudTrail 配置
- 检测配置错误和安全风险
- 生成结构化的 JSON 报告
- 应用修复措施并验证安全环境
这是一个实用的 AWS 安全项目,旨在通过自动化审计和安全最佳实践,检测、修复并验证真实世界中的云配置错误。
## ⚙️ 技术栈
- Python (boto3)
- AWS CLI
- IAM, S3, EC2, EBS, CloudTrail
- Terraform (用于基础设施基线 - 可选)
- JSON 报告
## 🚀 功能特性
- 🔐 IAM 安全检查 (MFA、访问风险)
- 🪣 S3 存储桶安全分析
- 🌍 多区域风险检测
- 💾 EBS 加密验证
- 📊 基于 JSON 的审计报告
- ⚡ 基于 CLI 的自动化
### 目标受众
- ☁️ 云安全初学者
- 🔧 DevSecOps 工程师
- 🎓 指导实习生的导师
- 📖 任何学习 AWS 安全基础知识的人
## 仓库结构
```
aws-shared-responsibility-risk-mapping/
├── README.md # Project overview and guide
├── LICENSE # MIT License
├── requirements.txt # Python dependencies
├── .github/
│ └── ISSUE_TEMPLATE/
│ ├── bug_report.md # Bug report template
│ └── feature_request.md # Feature request template
├── docs/
│ ├── shared-responsibility-model.md # AWS Shared Responsibility deep dive
│ ├── risk-categories.md # Risk categories and severity
│ └── mitigation-strategies.md # Best practices and mitigations
├── risk-assessment/
│ ├── risk-assessment-template.md # Template for running risk reviews
│ └── checklist.md # AWS security checklist
├── scripts/
│ ├── security-audit.py # Main AWS security audit script
│ └── s3-bucket-checker.py # S3 bucket security assessment
├── screenshots/
│ ├── 01-before-audit-critical.png
│ ├── 02-iam-user-no-mfa.png
│ ├── 03-s3-checker-output.png
│ ├── 04-s3-json-report.png
│ ├── 05-ebs-encryption-multi-region.png
│ ├── 06-audit-json-report.png
│ └── 07-after-audit-clean.png
└── templates/
└── secure-ec2-terraform/
├── main.tf # Terraform config
├── variables.tf # Input variables
└── outputs.tf # Terraform outputs
```
## 🔴 步骤 1:初始安全审计(发现的问题)
# AWS Secret Access Key:
# Default region: us-east-1
# Output format: json
```
### 4. Terraform 安装
**macOS (Homebrew):**
```
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
```
**Linux (APT):**
```
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | \
sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt-get update && sudo apt-get install terraform
```
**验证:**
```
terraform version
```
## AWS 安全使用(避免产生费用)
| 资源 | 潜在费用 | 缓解措施 |
|----------|---------------|------------|
| NAT Gateway | ~$0.045/小时 + $0.045/GB | 不需要时移除;使用 VPC Endpoints |
| EC2 Instances | 免费套餐: 每月 750 小时 t2.micro | 使用 t2.micro;空闲时停止/终止 |
| Data Transfer | ~$0.09/GB (传出至 Internet) | 将流量保持在同一可用区内 |
| EBS Volumes | 免费: 30 GB SSD | 删除未挂载的卷 |
| CloudWatch Logs | 超出免费套餐后 ~$0.50/GB | 使用较短的保留期 (测试时保留 7 天) |
```
# 应用前始终预览
terraform plan
# 完成后销毁所有资源
terraform destroy
# 预览销毁
terraform plan -destroy
```
## 使用方法:脚本
### 脚本 1:`security-audit.py`
审计您的 AWS 账户,检查 Security Groups、S3 Buckets、IAM Users 和 CloudTrail 中的常见配置错误。
```
# 基本用法(使用默认 AWS profile 和 us-east-1)
python scripts/security-audit.py
# 指定 region 和 profile
python scripts/security-audit.py --region us-west-2 --profile my-profile
# 扫描多个 regions
python scripts/security-audit.py --region us-east-1 --region us-west-2
```
**预期输出:**
```
🔍 Checking Security Groups in us-east-1...
🔍 Checking S3 Buckets...
🔍 Checking IAM Users...
🔍 Checking CloudTrail...
🔍 Checking EBS Encryption in us-east-1...
🔍 Checking IMDSv2 Enforcement in us-east-1...
⚠️ Audit Complete! Found 3 issues.
🔴 Critical: 1
🟠 High: 1
🟡 Medium: 1
[🟠 HIGH] sg-0abc12345 (my-web-sg)
Category: Networking
Issue: Security group allows 0.0.0.0/0 on port 22 (SSH)
Fix: Restrict SSH access to specific IP ranges or use AWS SSM Session Manager
Report saved to: security_audit_20260430_123456.json
```
### 脚本 2:`s3-bucket-checker.py`
详细的 S3 安全扫描器,用于检查公共访问、加密、版本控制、日志记录和 HTTPS 强制执行情况。
```
python scripts/s3-bucket-checker.py
```
**预期输出:**
```
🔍 Scanning all S3 buckets...
⚠️ my-app-bucket
✗ Public access not fully blocked
✗ Default encryption not enabled
✅ my-secure-bucket (0 issues)
📊 Summary:
Total buckets: 2
Fully secure: 1
Need attention: 1
💾 Detailed report saved to s3_security_report.json
```
## 使用方法:Terraform
```
cd templates/secure-ec2-terraform
# 初始化并下载 providers
terraform init
# 预览更改
terraform plan
# 应用更改(创建资源)
terraform apply
# 重要提示:完成后进行 Destroy 以避免产生费用
terraform destroy
```
**创建的资源:**
- ✅ 具有公有/私有子网和 Internet Gateway 的 VPC
- ✅ Security Groups (ALB: 允许来自 0.0.0.0/0 的 HTTPS 流量;EC2: 仅允许来自 ALB 的 HTTP 流量)
- ✅ EC2 Instance (Amazon Linux 2,私有子网,强制使用 IMDSv2)
- ✅ IAM Role (用于 Session Manager 的 AmazonSSMManagedInstanceCore)
- ✅ 加密的根 EBS 卷
- ✅ CloudWatch Log Groups (30 天保留期)
- ✅ VPC Flow Logs
- ⚠️ NAT Gateway (可选 — 会产生费用,免费套餐测试时请移除)
## 🛡️ 已实施的安全最佳实践
- 强制 S3 仅使用 HTTPS 访问
- 启用 CloudTrail 日志记录
- 默认启用 EBS 加密
- 强制执行 IAM MFA
- 结构化审计报告
## 📌 未来改进
- 添加 AWS Config 集成
- 自动化修复脚本
- 可视化仪表板
- CI/CD 安全检查
## 👥 贡献者
- Swasthi Kunder — 项目负责人
- Sakshat S — 贡献者
## 许可证
本项目基于 MIT 许可证授权 — 详见 [LICENSE](LICENSE) 文件。
Before Audit
审计发现: - 未启用 CloudTrail (CRITICAL) - IAM 用户未配置 MFA - 未启用 EBS 加密 ## 🔐 步骤 2:IAM 配置错误(无 MFA)
IAM Misconfiguration
### 风险: - 未启用 MFA 的控制台访问 - 账户接管风险极高 ### 修复措施: - 启用 MFA - 强制执行 IAM 策略 ## 🪣 步骤 3:S3 存储桶安全检查
S3 Checker
### 问题: - 未启用 MFA Delete ## 📊 步骤 4:S3 JSON 报告
S3 Report
### 功能特性: - 结构化的存储桶级别发现 - 自动化报告 ## 🌍 步骤 5:多区域风险检测
EBS Issue
### 洞察: - ap-south-1 区域的 EBS 加密已禁用 - 不同区域的安全态势存在差异 ### 修复措施: ``` aws ec2 enable-ebs-encryption-by-default --region ap-south-1 ``` ## 📄 步骤 6:完整审计 JSON 报告
Audit Report
### 包含内容: - 严重级别 (CRITICAL / HIGH / MEDIUM) - 资源详情 - 修复建议 ## ✅ 步骤 7:最终安全状态
After Audit
✔ 所有问题已解决 ✔ 实现了安全的 AWS 配置 ✔ 通过重新审计完成验证 ## 🏗️ Terraform 基础设施(可选) 包含了 Terraform 配置,用于使用以下 AWS 服务配置安全的 IAM 监控基线: - CloudTrail - AWS Config - CloudWatch 这些配置展示了**基础设施级安全自动化**,可用于为 IAM 活动建立持续监控。 ⚠️ **注意:** Terraform 默认不执行。基础设施部署是可选的,在应用之前应使用 `terraform plan` 进行审查,因为它可能会创建产生费用的 AWS 资源。 ## 🧠 主要收获 - MFA 在 IAM 安全中的重要性 - S3 存储桶加固技术 - 用于日志记录和监控的 CloudTrail - 多区域安全注意事项 - 使用 Python 自动化云审计 - 使用 Terraform 进行基础设施安全防护 ## 设置与先决条件 ### 1. AWS 账户与免费套餐 您需要一个 AWS 账户。新账户将获得: - 约 200 美元的额度 - 12 个月的免费套餐 (每月 750 小时的 t2.micro Linux) ### 2. 本地环境 **需要 Python 3.8+:** ``` # 检查 Python 版本 python3 --version # Clone 仓库 git clone https://github.com/swasthikunder/aws-shared-responsibility-risk-mapping.git cd aws-shared-responsibility-risk-mapping # 创建并激活虚拟环境(推荐) python3 -m venv .venv source .venv/bin/activate # Linux/macOS # .venv\Scripts\activate # Windows # 安装所需 packages pip install -r requirements.txt ``` ### 3. AWS CLI 配置 ``` aws configure # 输入: # AWS Access Key ID:标签:AWS, AWS CLI, boto3, CloudTrail, DevSecOps, DPI, EBS, EBS加密, EC2, ECS, IaC, IAM, JSON报告, MFA验证, Python, S3, StruQ, Terraform, 上游代理, 云基础设施, 云计算, 共享责任模型, 多区域检测, 安全基线, 安全最佳实践, 对称加密, 开源安全工具, 教学环境, 无后门, 漏洞探索, 自动化审计, 规则引擎, 足迹分析, 逆向工具, 逆向工程平台, 配置核查, 风险映射