Bode-N-Ayansina/03-AWS-deployment
GitHub: Bode-N-Ayansina/03-AWS-deployment
通过基于资源标签的自定义 IAM 策略实现 AWS EC2 实例的最低权限访问控制,并以正面和负面测试验证权限边界的有效性。
Stars: 0 | Forks: 0
# AWS Cloud Console 部署与 IAM 加固
在 AWS 中配置和加固云控制台访问,围绕针对两台 EC2 实例测试的最低权限 IAM 策略构建。
## 目标
在 AWS Identity and Access Management (IAM) 中实施最低权限访问控制:创建一个自定义策略,明确拒绝在敏感的 "audit" 实例上执行 EC2 启动/停止操作,同时允许在 "sales" 实例上执行这些操作,然后验证该策略在直接测试下是否有效。
## 环境与工具
- **AWS Free Tier** — IAM, EC2
- 两台 t3.micro EC2 实例:`BuddyLab-audit` 和 `BuddyLab-sales`
- IAM 用户、组和客户管理的 JSON 策略
- 账户别名设置为易于记忆的登录 URL (`buddylabusers`),方便团队登录
## 方法论
1. **标签策略** — 为每台 EC2 实例添加了描述性标签,以便进行策略定位:
| 实例 | 标签键 | 标签值 |
|---|---|---|
| BuddyLab-audit | Environment | Audit |
| BuddyLab-sales | Environment | Sales |
2. **自定义 IAM 策略** — 编写了一个 JSON 策略 (`BuddyLabAuditEnviPolicy`),对作用于 audit 实例的 `ec2:StopInstances` / `ec2:StartInstances` 设置了显式 `Deny`,同时保留 sales 实例不受限制。
3. **账户别名** — 将默认的数字账户 URL 替换为易于记忆的别名 (`buddylabusers`),简化 IAM 用户的登录过程。
4. **用户与组** — 创建了一个 IAM 用户组 (`buddylab-audit-group`),附加了自定义策略,并添加了需要受控 EC2 访问权限的各个 IAM 用户(`buddylab-Audit-user-Bode`, `buddylab-Audit-user-bj`, `buddylab-sales-user-Teslim`)。
5. **登录路径** — 验证了 IAM 用户可以使用新的别名 URL 通过 AWS Management Console 进行身份验证。
6. **策略测试** — 以受限的 IAM 用户身份登录,并针对两个实例直接测试了该策略。
## 发现 / 结果
| 测试操作 | 预期结果 | 实际结果 |
|---|---|---|
| 停止 audit 实例 | 拒绝 | 显示拒绝访问错误 |
| 停止 sales 实例 | 允许 | 实例成功停止 |
| 启动 audit 实例 | 拒绝 | 显示拒绝访问错误 |
| 启动 sales 实例 | 允许 | 实例成功启动 |
此外,确认了 audit 用户也缺乏更广泛的账户级可见性 —— `iam:ListGroups`、`iam:GetAccountSummary`、`iam:ListMFADevices`、`iam:ListAccessKeys` 和 `iam:ListAccountAliases` 均正确返回了拒绝访问,证实了最低权限边界不仅限于其设计旨在限制的 EC2 操作。

*AWS Management Console — 实验环境的起点。*

*两台已添加标签的 EC2 实例:BuddyLab-audit 和 BuddyLab-sales。*

*显示自定义账户别名和资源摘要的 IAM 仪表板。*

*为作用域策略分配而创建的 buddylab-audit-group。*

*BuddyLabAuditEnviPolicy — 对 audit 环境的 EC2 标签/启动-停止操作的显式拒绝。*

*配置了各自控制台凭证的三个 IAM 用户。*

*策略正确拒绝了在 audit 实例上尝试的停止操作。*

*确认受限用户也缺乏账户级的 IAM 可见性(ListGroups、GetAccountSummary、ListMFADevices、ListAccessKeys、ListAccountAliases)。*
## 关键结论
本项目展示了在云环境中最低权限原则的实际应用:通过资源标签而非广泛的服务来严格限定策略范围,并通过直接的负面和正面测试验证控制措施,而不是假设意图与配置相符。账户级的拒绝访问结果是附带的,但也印证了策略边界比其编写的单一用例更为严格 —— 这是在生产环境中审查 IAM 策略时的一个有益习惯。
标签:AWS, DPI, EC2, Homebrew安装, IaC, IAM, 权限控制, 系统加固