giselleevita/terraform-aws-iam-baseline

GitHub: giselleevita/terraform-aws-iam-baseline

一个专注最小权限原则的Terraform模块,用于创建仅限特定S3桶只读访问的IAM角色。

Stars: 1 | Forks: 0

# terraform-aws-iam-baseline ![Terraform](https://img.shields.io/badge/terraform-%3E%3D1.5-purple) ![AWS](https://img.shields.io/badge/AWS-IAM%20%7C%20S3-orange) ![License](https://img.shields.io/badge/license-MIT-green) 有关设计基本原理和限制,请参阅 [docs/CASE_STUDY.md](docs/CASE_STUDY.md)。 本仓库有意将范围限定于一个可审查的 IAM 模式:创建一个具有特定存储桶所需最小 S3 读取权限的可代入服务角色。它并不声称是一个完整的 AWS 账户基线。 ## 审阅者快速入门 要进行快速的技术审查: 1. 检查 `main.tf` 以验证 S3 访问权限是否仅限于一个存储桶 ARN 及其对象。 2. 检查 `variables.tf` 以查看模块输入和验证。 3. 通过现有的 CI 工作流运行 `terraform fmt -check`、`terraform validate`、`tflint` 和 `tfsec`。 4. 阅读 [docs/CASE_STUDY.md](docs/CASE_STUDY.md) 以了解设计基本原理和限制。 ## 创建内容 ``` flowchart TD Service[AWS service principal] --> Role[IAM role] Role --> Policy[S3 read-only policy] Policy --> Bucket[Specific S3 bucket] Policy --> Objects[Objects in that bucket] ``` | 控制 | 实现 | |---|---| | 存储桶范围访问 | `s3:ListBucket` 仅限于 `arn:aws:s3:::` | | 对象读取访问 | `s3:GetObject` 和 `s3:GetObjectVersion` 仅限于 `arn:aws:s3:::/*` | | 显式信任边界 | 只有已配置的 AWS 服务主体才能代入该角色 | | 输入验证 | 存储桶名称、角色名称和受信任主体必须非空 | | 可审查的策略 | IAM 策略文档由 Terraform 数据源生成 | ## 未实现功能 此模块目前未实现: - IAM 账户密码策略 - 对人工用户的 MFA 强制执行 - AWS Organizations SCP - CloudTrail 设置 - 区域锁定 - Access Analyzer 集成 - 用户或组生命周期管理 这些控制项是有用的账户基线功能,但超出了本模块当前实现的范围。 ## 用法 ``` module "s3_read_role" { source = "./" bucket_name = "my-audit-evidence-bucket" role_name = "audit-evidence-reader" trusted_service_principals = [ "ec2.amazonaws.com" ] tags = { Environment = "dev" Owner = "security" } } ``` ## 要求 - Terraform >= 1.5 - AWS provider >= 5.0 - 用于创建角色、策略和策略附加的 IAM 权限 ## 输出 | 输出 | 描述 | |---|---| | `policy_arn` | 生成的 S3 只读 IAM 策略的 ARN | | `role_name` | 附加了该策略的 IAM 角色的名称 | ## 后续改进 要将其转变为真正的 AWS IAM 基线,请添加: - 账户密码策略 - 针对交互式用户的 MFA 强制执行策略 - 用于 IAM、CloudTrail、Config 和 Security Hub 审查的只读审计角色 - 可选的区域限制策略/SCP 示例 - 针对策略内容的 Terraform 测试 - Access Analyzer 验证说明 ## 许可证 MIT
标签:AWS, DPI, EC2, ECS, IaC, IAM, S3, Terraform, Terraform模块, 只读权限, 存储桶策略, 安全合规, 最小权限原则, 权限基线, 漏洞探索, 网络代理, 角色授权, 身份与访问管理