markthedev12/aws-secure-s3-lab

GitHub: markthedev12/aws-secure-s3-lab

一个演示 AWS S3 安全最佳实践的手动实验项目,通过 IAM 最小权限、加密、访问日志和 CloudTrail 等控制手段,帮助学习者掌握云存储安全加固的核心技能。

Stars: 0 | Forks: 0

# AWS Secure S3 实验 **演示技能:** IAM 最小权限、S3 加密、访问日志、CloudTrail、存储桶策略加固 ## 概述 本实验演示了如何遵循 AWS 安全最佳实践来架构和保护 Amazon S3 环境。重点是通过 IAM 应用最小权限原则,启用静态加密,以及通过访问日志和 CloudTrail 建立完整的审计跟踪。 本项目反映了医疗保健、金融服务和受监管行业中常见的现实世界云安全需求。 ## 架构 ``` ┌─────────────────────────────────────────────────────┐ │ IAM Layer │ │ ┌──────────────────────────────────────────────┐ │ │ │ IAM Policy (Least Privilege) │ │ │ │ • s3:GetObject, s3:PutObject only │ │ │ │ • Scoped to specific bucket ARN │ │ │ │ • Denies s3:DeleteObject explicitly │ │ │ └──────────────────┬───────────────────────────┘ │ └─────────────────────┼───────────────────────────────┘ │ ┌───────────▼────────────┐ │ Primary S3 Bucket │ │ • SSE-S3 Encryption │ │ • Block Public Access │ │ • Versioning Enabled │ │ • HTTPS-only Policy │ └───────────┬────────────┘ │ Access Logs ┌───────────▼────────────┐ │ Logging S3 Bucket │ │ • Stores access logs │ │ • Separate IAM policy │ └────────────────────────┘ │ ┌───────────▼────────────┐ │ CloudTrail │ │ • API call logging │ │ • Immutable log trail │ └────────────────────────┘ ``` ## 实施的安全控制 ### 1. IAM 最小权限策略 **原因:** 向任何用户或角色授予 `s3:*` 都违反了最小权限原则,并且是云安全漏洞中最常见的一种错误配置。此策略仅授予所需的最低权限。 **决策细节:** - 明确限定在单一的存储桶 ARN 范围内(而不是 `*`) - 即使未授予权限,也明确拒绝 `s3:DeleteObject` —— 纵深防御 - 不包含 `s3:ListAllMyBuckets` —— 用户无法枚举账户中的其他存储桶 ### 2. 服务端加密 (SSE-S3) **原因:** 默认加密所有静态对象。在本实验中选择 SSE-S3 而不是 SSE-KMS,是因为它不需要额外的 KMS 密钥管理成本,适合非受监管的工作负载。在 HIPAA 或 PCI-DSS 环境中,需要使用带有客户托管密钥 (CMK) 和密钥轮换的 SSE-KMS。 ### 3. 阻止公共访问(所有四项设置) **原因:** 即使有私有的存储桶策略,配置不当的 ACL 也可能意外暴露对象。启用所有四项“阻止公共访问”设置提供了一个强制覆盖,无论对象级别的 ACL 设置如何,都能阻止任何公开暴露。 ### 4. S3 访问日志 **原因:** 记录对存储桶发出的每一个请求(请求者、IP、操作、时间戳)。存储在专用的日志存储桶中,以防止日志篡改。这满足了 ISO 27001、SOC 2 和 HIPAA 中的审计跟踪要求。 ### 5. 仅限 HTTPS 的存储桶策略 **原因:** 拒绝任何通过 HTTP(未加密)发出的请求。这可以防止针对传输中数据的中间人攻击 —— 这是 HIPAA 安全规则 §164.312(e)(1) 所要求的。 ### 6. CloudTrail 集成 ## 本仓库中的文件 | 文件 | 描述 | |------|-------------| | `README.md` | 项目概述和安全原理 | | `iam-policy.json` | 包含内联注释的最小权限 IAM 策略 | | `steps.md` | 包含 CLI 命令的完整实验指南 | | `screenshot/` | 证明各项配置的控制台截图 | ## 关键要点 - 具有私有 ACL 但未启用“阻止公共访问”的存储桶仍然可能被公开 —— 始终启用所有四项 BPA 设置 - SSE-S3 与 SSE-KMS 的选择是由合规要求和成本驱动的架构决策 - 访问日志和 CloudTrail 服务于不同的目的,两者都是实现完全可审计性所必需的 - IAM 中的显式拒绝始终优先于允许 —— 对于像删除这样的关键操作应使用显式拒绝 ## 作者 Mark Schwinn | [LinkedIn](https://www.linkedin.com/in/mark-schwinn-994625362/) | CompTIA Security+ | AWS SAA (进行中)
标签:AWS, CloudTrail, DevSecOps, DPI, EC2, ECS, HTTPS强制, IaC, IAM, JSONLines, ProjectDiscovery, S3, S3访问日志, SSE加密, Streamlit, Terraform, 上游代理, 人工智能安全, 公共访问拦截, 医疗安全, 合规性, 存储安全, 安全可观测性, 安全基线, 安全实验, 安全架构, 审计追踪, 教学环境, 数据保护, 数据加密, 最小权限原则, 版本控制, 网络安全实验, 访问控制, 金融安全, 零信任