Cloudsplaining:一款针对AWS IAM的安全审计与评估工具
字数 1382 2025-08-15 21:31:40

Cloudsplaining AWS IAM安全审计工具详细教学文档

一、工具概述

Cloudsplaining是一款针对AWS IAM(Identity and Access Management)的安全审计与评估工具,主要用于:

  • 识别AWS IAM策略中最小权限原则的违规情况
  • 生成以威胁等级优先的HTML格式分析报告
  • 扫描整个AWS账号或单个策略文件
  • 识别无资源限制的IAM活动
  • 标记高风险IAM策略并帮助制定缓解方案

二、主要功能

1. 风险识别能力

Cloudsplaining能够识别以下四类主要风险:

数据提取风险

  • s3:GetObject
  • ssm:GetParameter
  • secretsmanager:GetSecretValue

基础设施修改风险

  • 无限制的修改权限

资源暴露风险

  • 可能导致资源被公开访问的权限

权限提升风险

  • 可能导致权限升级的权限组合

2. 特殊角色识别

能够识别AWS计算服务(EC2、ECS、EKS或Lambda)定义的IAM角色,这些角色可能比用户定义的角色带来更大的安全风险。

典型攻击场景示例
如果攻击者获得执行ssm:SendCommand的权限,且存在安装了SSM代理的特权EC2实例,攻击者就能获取这些EC2实例的特殊权限。

三、安装方法

1. 通过Homebrew安装

brew tap salesforce/cloudsplaining https://github.com/salesforce/cloudsplaining
brew install cloudsplaining

2. 通过pip安装

pip3 install --user cloudsplaining

安装完成后,可通过cloudsplaining --help验证安装是否成功。

四、使用教程

1. 扫描整个AWS账号

1.1 下载账号授权数据

需要具备iam:GetAccountAuthorizationDetails权限。

基本命令:

cloudsplaining download

使用特定AWS配置文件:

cloudsplaining download --profile myprofile

此命令会在当前目录生成包含账户授权细节的JSON文件。

1.2 扫描授权数据

cloudsplaining scan --input default.json

使用排除文件减少误报:

cloudsplaining scan --input default.json --exclusions-file exclusions.yml

2. 扫描单个策略文件

cloudsplaining scan-policy-file --input examples/policies/explicit-actions.json

带排除文件的扫描:

cloudsplaining scan-policy-file --input examples/policies/wildcards.json --exclusions-file examples/example-exclusions.yml

3. 输出示例

扫描结果会显示发现的问题,例如:

Issue found: Data Exfiltration
Actions: s3:GetObject

Issue found: Resource Exposure
Actions: ecr:DeleteRepositoryPolicy, ecr:SetRepositoryPolicy, s3:BypassGovernanceRetention...

Issue found: Unrestricted Infrastructure Modification
Actions: ecr:BatchDeleteImage, ecr:CompleteLayerUpload...

五、典型IAM策略问题示例

问题策略示例

允许IAM主体在任何S3 bucket上执行s3:PutObject

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": "*"
    }
  ]
}

正确做法

应根据资源ARN进行访问限制:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::specific-bucket/*"
    }
  ]
}

六、高级功能

1. 自定义排除文件

可以创建YAML格式的排除文件来过滤误报,示例exclusions.yml

exclude-actions:
  - "s3:GetObject"  # 排除特定的数据提取动作
  - "ssm:SendCommand"  # 排除特定的命令执行动作

exclude-resources:
  - "arn:aws:s3:::logs/*"  # 排除特定的资源

2. 报告生成

默认会生成HTML格式的报告,包含:

  • 执行摘要(Executive Summary)
  • 按风险等级分类的详细发现
  • 建议的修复措施

七、使用场景

  1. 大规模AWS环境审计:当有数百个AWS账户,每个账户中有几十个策略时,快速识别需要修复的策略。

  2. 渗透测试准备:帮助红队识别可能的权限提升路径。

  3. 合规性检查:验证IAM策略是否符合最小权限原则。

  4. 持续安全监控:集成到CI/CD流程中,确保新部署的IAM策略符合安全标准。

八、项目资源

九、注意事项

  1. 确保执行扫描的IAM角色具有必要的权限(iam:GetAccountAuthorizationDetails)。

  2. 对于生产环境,建议先在测试环境中验证扫描结果。

  3. 定期更新工具以获取最新的安全检测规则。

  4. 生成的报告可能包含敏感信息,应妥善保管。

  5. 对于大型AWS组织,可能需要分批扫描以避免API限制。

Cloudsplaining AWS IAM安全审计工具详细教学文档 一、工具概述 Cloudsplaining是一款针对AWS IAM(Identity and Access Management)的安全审计与评估工具,主要用于: 识别AWS IAM策略中最小权限原则的违规情况 生成以威胁等级优先的HTML格式分析报告 扫描整个AWS账号或单个策略文件 识别无资源限制的IAM活动 标记高风险IAM策略并帮助制定缓解方案 二、主要功能 1. 风险识别能力 Cloudsplaining能够识别以下四类主要风险: 数据提取风险 : s3:GetObject ssm:GetParameter secretsmanager:GetSecretValue 基础设施修改风险 : 无限制的修改权限 资源暴露风险 : 可能导致资源被公开访问的权限 权限提升风险 : 可能导致权限升级的权限组合 2. 特殊角色识别 能够识别AWS计算服务(EC2、ECS、EKS或Lambda)定义的IAM角色,这些角色可能比用户定义的角色带来更大的安全风险。 典型攻击场景示例 : 如果攻击者获得执行 ssm:SendCommand 的权限,且存在安装了SSM代理的特权EC2实例,攻击者就能获取这些EC2实例的特殊权限。 三、安装方法 1. 通过Homebrew安装 2. 通过pip安装 安装完成后,可通过 cloudsplaining --help 验证安装是否成功。 四、使用教程 1. 扫描整个AWS账号 1.1 下载账号授权数据 需要具备 iam:GetAccountAuthorizationDetails 权限。 基本命令: 使用特定AWS配置文件: 此命令会在当前目录生成包含账户授权细节的JSON文件。 1.2 扫描授权数据 使用排除文件减少误报: 2. 扫描单个策略文件 带排除文件的扫描: 3. 输出示例 扫描结果会显示发现的问题,例如: 五、典型IAM策略问题示例 问题策略示例 允许IAM主体在任何S3 bucket上执行 s3:PutObject : 正确做法 应根据资源ARN进行访问限制: 六、高级功能 1. 自定义排除文件 可以创建YAML格式的排除文件来过滤误报,示例 exclusions.yml : 2. 报告生成 默认会生成HTML格式的报告,包含: 执行摘要(Executive Summary) 按风险等级分类的详细发现 建议的修复措施 七、使用场景 大规模AWS环境审计 :当有数百个AWS账户,每个账户中有几十个策略时,快速识别需要修复的策略。 渗透测试准备 :帮助红队识别可能的权限提升路径。 合规性检查 :验证IAM策略是否符合最小权限原则。 持续安全监控 :集成到CI/CD流程中,确保新部署的IAM策略符合安全标准。 八、项目资源 GitHub仓库: Cloudsplaining 样本报告: 示例报告 九、注意事项 确保执行扫描的IAM角色具有必要的权限( iam:GetAccountAuthorizationDetails )。 对于生产环境,建议先在测试环境中验证扫描结果。 定期更新工具以获取最新的安全检测规则。 生成的报告可能包含敏感信息,应妥善保管。 对于大型AWS组织,可能需要分批扫描以避免API限制。