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](https://static.pigsec.cn/wp-content/uploads/repos/cas/3c/3ce7b6ce9ca4f490eae6b9e821dc6b9147b9bb23efece29887ff60b6b83f0dfe.png) *AWS Management Console — 实验环境的起点。* ![EC2 实例](https://static.pigsec.cn/wp-content/uploads/repos/cas/51/51d760b4692bb77675ca14ba69044b855210dda610e3c0d9301ba5aae69f35d0.png) *两台已添加标签的 EC2 实例:BuddyLab-audit 和 BuddyLab-sales。* ![账户别名](https://static.pigsec.cn/wp-content/uploads/repos/cas/e2/e2193534624227b25a484c1ae4a72e44a1d9fee7cbf16d5be7e8ae3391422c08.png) *显示自定义账户别名和资源摘要的 IAM 仪表板。* ![已创建的用户组](https://static.pigsec.cn/wp-content/uploads/repos/cas/5c/5c0729e7c14f6186094dd92009eaa9467de6fbb8985fcadd218a574b38ac5653.png) *为作用域策略分配而创建的 buddylab-audit-group。* ![IAM 策略](https://static.pigsec.cn/wp-content/uploads/repos/cas/a0/a0c2b7084eedae017064b6108b43f685e324fe160f852cea234f239966e938b3.png) *BuddyLabAuditEnviPolicy — 对 audit 环境的 EC2 标签/启动-停止操作的显式拒绝。* ![已创建的用户](https://static.pigsec.cn/wp-content/uploads/repos/cas/b1/b1239a2cb6586bc780f8a1fcb74ccf18f2f06839c914aab17447695404bdb782.png) *配置了各自控制台凭证的三个 IAM 用户。* ![停止操作被拒绝](https://static.pigsec.cn/wp-content/uploads/repos/cas/16/16013a493b046fbda47364c274518f42dded067295eea8064240546e75390ab6.png) *策略正确拒绝了在 audit 实例上尝试的停止操作。* ![IAM 访问被拒绝 — 账户级调用](https://static.pigsec.cn/wp-content/uploads/repos/cas/e9/e945dc6190f5548cc33a5495ec3241ece924bd20bfbdba9ab564a4738d77ef0d.png) *确认受限用户也缺乏账户级的 IAM 可见性(ListGroups、GetAccountSummary、ListMFADevices、ListAccessKeys、ListAccountAliases)。* ## 关键结论 本项目展示了在云环境中最低权限原则的实际应用:通过资源标签而非广泛的服务来严格限定策略范围,并通过直接的负面和正面测试验证控制措施,而不是假设意图与配置相符。账户级的拒绝访问结果是附带的,但也印证了策略边界比其编写的单一用例更为严格 —— 这是在生产环境中审查 IAM 策略时的一个有益习惯。
标签:AWS, DPI, EC2, Homebrew安装, IaC, IAM, 权限控制, 系统加固