fremahabankroh/aws-iam-s3-security-project
GitHub: fremahabankroh/aws-iam-s3-security-project
一个面向蓝队的 AWS 云安全实操项目,通过 IAM 用户管理与 S3 自定义策略的系统化测试,展示最小权限访问控制的完整落地过程。
Stars: 0 | Forks: 0
# aws-iam-s3-security-project
云安全项目:AWS IAM 用户创建、自定义 S3 存储桶策略和权限测试。为蓝队作品集而构建。
# AWS IAM + S3 云安全项目
## 项目概述
一个实操云安全项目,演示如何使用 IAM 控制
对 AWS S3 的访问。旨在模拟云安全和蓝队工程师在
真实场景中做出的访问控制决策。
## 展示技能
- AWS Identity and Access Management (IAM)
- 最小权限原则
- JSON 策略编写与测试
- 云存储安全 (S3)
- 访问控制验证与文档记录
## 架构

## 构建步骤 — 逐步说明
### 步骤 1 — 创建 IAM 用户
创建了仅具有控制台访问权限的 `s3-project-user`。
创建时未附加任何权限(零信任起点)。
### 为 s3-project-user 创建访问密钥
CLI 是理想的选择
访问密钥已使用描述进行标记,注明了其用途和范围——这是一种真实的凭证管理实践,有助于安全地进行密钥轮换和审计追踪。
### 未启用 MFA
在生产环境中,所有 IAM 用户都应强制启用 MFA。在本项目中,为了简化测试而故意禁用了 MFA,但通过 IAM 策略条件强制启用 MFA 将是下一步的加固措施
在安装 AWS CLI 之后,使用 `aws sts get-caller-identity` 验证了 CLI 身份——确认已正确配置为最小权限的 IAM 用户进行编程访问,而非 root 账户。
### 步骤 2 — 创建 S3 存储桶
存储桶:`my-iam-project-fremzbankshunt` | 区域:eu-north-1
已屏蔽公共访问。上传了两个测试文件。
### 存储桶版本控制
默认启用了服务端加密 (SSE-S3),确保所有对象在静态时自动加密。这满足了核心的数据保护控制要求,而无需额外的密钥管理开销。版本控制至关重要。
### 步骤 3 — 编写自定义 IAM 策略
完整文档请参见 policy/s3-access-policy.json。
关键决策:
- 允许:ListBucket, GetObject, PutObject, DeleteObject
- 拒绝:DeleteBucket, PutBucketPolicy, PutBucketAcl
### 步骤 4 — 测试权限
| 操作 | 预期 | 结果 |
|--------|----------|--------|
| 列出存储桶内容 | 允许 | ✅ 通过 |
| 下载文件 | 允许 | ✅ 通过 |
| 上传文件 | 允许 | ✅ 通过 |
| 删除文件 | 允许 | ✅ 通过 |
| 删除存储桶 | 拒绝 | ✅ 通过 |
| 更改存储桶策略 | 拒绝 | ✅ 通过 |
在测试期间,尝试通过 CLI 以 s3-project-user 身份删除存储桶的操作被显式拒绝策略所阻止——即使使用了 `--force` 标志。删除操作只能通过管理员控制台进行,这表明显式拒绝是绝对的,受限制的用户无法通过编程方式覆盖。
## 掌握的关键概念
### 最小权限原则
仅授予所需的最低权限...
### IAM 策略结构
每个策略语句都包含 Effect、Action 和 Resource...
## 下一步计划
- 在 IAM 策略中添加强制 MFA
- 设置 AWS CloudTrail 以记录所有 S3 API 调用
- 用 IAM 角色替换 IAM 用户访问密钥...
## 使用的工具
AWS IAM · AWS S3 · AWS Console · JSON
⚠️ 本仓库未存储任何凭证、访问密钥或敏感数据。标签:AWS, AWS CLI, DPI, GitHub Advanced Security, Homebrew安装, IAM, JSONLines, JSON策略, MFA, S3, Streamlit, 云存储安全, 代码分析, 凭证管理, 安全加固, 安全合规, 最小权限原则, 权限测试, 网络代理, 网络安全, 网络扫描, 访问控制, 身份与访问管理, 防御策略, 隐私保护, 零信任