对 AWS CDK 应用进行最佳实践、安全、成本优化及部署安全分析,覆盖构造模式、IAM 策略和 CloudFormation。
AWS CDK 分析器是一项面向实际任务的技能,主要用于分析 AWS CDK 应用, 用于最佳做法、安全弱点、 成本优化和部署安全;审查构造模式、 IAM 政策、 资源配置。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
对 AWS CDK 应用进行分析,识别最佳实践、安全漏洞、成本优化机会及部署安全性问题。审查 Construct 模式、IAM 策略、资源配置以及合成后的 CloudFormation 输出。适用于 CDK 代码评审、生产环境部署准备或现有基础设施审计等场景。
"分析我的 CDK 应用是否存在安全问题" "审查我的 CDK Stack 中的 IAM 策略" "检查我的 CDK 代码中是否存在成本优化机会" "审计 CDK Construct 是否符合最佳实践" "验证此次 CDK 更改的部署安全性"
解析 CDK 应用结构:
# 检测 CDK 版本与语言
cat package.json | python3 -c "
import json, sys
d = json.load(sys.stdin)
for key in ['aws-cdk-lib', 'aws-cdk', '@aws-cdk/core']:
ver = d.get('dependencies', {}).get(key) or d.get('devDependencies', {}).get(key)
if ver: print(f'CDK: {key}@{ver}')
"
# 查找所有 Stack 定义
grep -rn "extends Stack|new Stack|class.*Stack" lib/ bin/ src/ 2>/dev/null
# 查找所有 Construct 文件
find lib/ src/ -name "*.ts" -o -name "*.py" | head -30
IAM 策略分析:
* 类操作或资源)网络安全:
0.0.0.0/0 入站访问数据保护:
合规性:
Construct 模式:
代码质量:
部署安全性:
# 执行 synth 并检查输出 npx cdk synth --quiet 2>&1 # 检查资源配置漂移(drift) npx cdk diff 2>&1 # 验证 CloudFormation 模板中不包含敏感信息 grep -i "password|secret|key|token" cdk.out/*.template.json
## AWS CDK 分析 — MyApp(共 3 个 Stack)
### 🔴 严重问题(4 项)
1. **IAM 通配符权限** — lib/api-stack.ts:45
`PolicyStatement({ actions: ['s3:*'], resources: ['*'] })`
→ 请限制为具体 S3 存储桶 ARN 和必需的操作
2. **RDS 实例公开暴露** — lib/database-stack.ts:23
生产数据库设置 `publiclyAccessible: true`
→ 移至私有子网,通过跳板机(bastion)或 VPN 访问
3. **硬编码密钥** — lib/api-stack.ts:78
数据库密码写死在 CDK 代码中:`password: 'prod_db_pass123'`
→ 改用 `secretsmanager.Secret.fromSecretNameV2()`
4. **S3 存储桶缺失删除策略** — lib/storage-stack.ts:15
默认 DESTROY 策略将在 Stack 删除时清空全部数据
→ 添加 `removalPolicy: RemovalPolicy.RETAIN`
### 🟡 警告(6 项)
5. **Lambda 内存规格过大** — 分配 1024MB,平均使用仅 128MB
6. **NAT Gateway 成本偏高** — $32/月,可改用 VPC Endpoint($7/月)
7. **CloudWatch 日志无保留期限** — 默认永久保留($0.50/GB/月)
8. **缺失标签** — 3 个 Stack 未配置成本分摊标签
9. **误用 L1 Construct** — 在已有 s3.Bucket 的情况下使用 CfnBucket
10. **缺失自动扩缩容** — ECS Service 使用固定任务数
### 💰 成本优化建议
| 资源 | 当前方案 | 优化方案 | 月度节省 |
|----------|---------|-----------|-----------------|
| NAT Gateway | $32 | VPC Endpoint $7 | $25 |
| Lambda 内存 | 1024MB | 256MB | ~$8 |
| CloudWatch 日志保留 | 无限期 | 30 天 | ~$15 |
| RDS 实例 | db.r5.xlarge | db.r5.large | $180 |
| **总计** | | | **~$228/月** |
### ✅ 已遵循的良好实践
- Stack 合理分层(API、Database、Storage)
- VPC 配置了标准子网层级(公有/私有/隔离子网)
- CloudFront 分发集成了 WAF
- 非敏感配置使用 Parameter Store 管理
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章