mcpField
C
cloud-security

cloud-security

github.com/alirezarezvani安全28.9k646 次安装2 天前更新
代码仓库

关于 cloud-security

cloud-security 是用于云安全态势评估的技能,面向审查云配置和基础设施代码的安全人员。它通过脚本检查 IAM 权限升级、存储公开访问及网络暴露,并提供修复建议。

主要功能

  1. 01检查 IAM 权限升级路径
  2. 02评估 S3 公开访问与加密
  3. 03识别安全组网络暴露
  4. 04审查基础设施代码配置
  5. 05输出风险等级与修复建议

适用场景

  1. 01部署前检查云资源配置
  2. 02排查过度授权的 IAM 策略
  3. 03发现公开的 S3 存储桶
  4. 04在 CI/CD 中拦截高危配置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alirezarezvani/claude-skills --skill cloud-security

安装后在 Claude Code 中输入/cloud-security确认已加载。

附带文件references/cspm-checks.mdscripts/cloud_posture_check.py

详细介绍

云安全

云安全态势评估 Skill,用于检测 IAM 权限提升、公共存储暴露、网络配置风险以及基础设施即代码(IaC)错误配置。这不是针对活跃云入侵的事件响应(参见 incident-response),也不是应用漏洞扫描(参见 security-pen-testing),而是通过系统化的云配置分析来防止被利用。


目录


概述

本 Skill 的作用

本 Skill 提供**云安全态势管理(CSPM)**的方法论和工具,用于系统化检查云配置中可能形成可被利用攻击面的错误配置。它涵盖 IAM 权限提升路径、存储公共暴露、网络过度授权以及基础设施代码安全。

与其他安全 Skill 的区别
Skill关注点方式
cloud-security(本 Skill)云配置风险预防性——在被利用前进行评估
incident-response活跃云事件响应性——对已确认的云入侵进行分诊
threat-detection行为异常主动性——在云日志中搜寻攻击者活动
security-pen-testing应用漏洞进攻性——主动利用已发现的弱点
前提条件

需要能够读取 JSON 格式的 IAM 策略文档、S3 存储桶配置和安全组规则。若要进行持续监控,可与云服务商 API 集成(AWS Config、Azure Policy、GCP Security Command Center)。


云态势检查工具

cloud_posture_check.py 工具执行三类检查:iam(权限提升)、s3(公共访问)和 sg(网络暴露)。它会根据配置文件结构自动识别检查类型,也可通过显式的 --check 参数指定。

# Analyze an IAM policy for privilege escalation paths
python3 scripts/cloud_posture_check.py policy.json --check iam --json

# Assess S3 bucket configuration for public access
python3 scripts/cloud_posture_check.py bucket_config.json --check s3 --json

# Check security group rules for open admin ports
python3 scripts/cloud_posture_check.py sg.json --check sg --json

# Run all checks with internet-facing severity bump
python3 scripts/cloud_posture_check.py config.json --check all \
  --provider aws --severity-modifier internet-facing --json

# Regulated data context (bumps severity by one level for all findings)
python3 scripts/cloud_posture_check.py config.json --check all \
  --severity-modifier regulated-data --json

# Pipe IAM policy from AWS CLI
aws iam get-policy-version --policy-arn arn:aws:iam::123456789012:policy/MyPolicy \
  --version-id v1 | jq '.PolicyVersion.Document' | \
  python3 scripts/cloud_posture_check.py - --check iam --json
退出码
退出码含义所需操作
0无高危/严重发现无需操作
1高危发现24 小时内修复
2严重发现立即修复——如存在活跃入侵,升级至 incident-response

IAM 策略分析

IAM 分析可检测权限提升路径、过度授权、公共主体暴露以及数据外泄风险。

权限提升模式
模式严重程度关键操作组合MITRE
Lambda PassRole 提权严重iam:PassRole + lambda:CreateFunctionT1078.004
EC2 实例配置文件滥用严重iam:PassRole + ec2:RunInstancesT1078.004
CloudFormation PassRole严重iam:PassRole + cloudformation:CreateStackT1078.004
自我附加策略提权严重iam:AttachUserPolicy + sts:GetCallerIdentityT1484.001
内联策略自我提权严重iam:PutUserPolicy + sts:GetCallerIdentityT1484.001
策略版本后门严重iam:CreatePolicyVersion + iam:ListPoliciesT1484.001
凭证窃取高iam:CreateAccessKey + iam:ListUsersT1098.001
组成员提权高iam:AddUserToGroup + iam:ListGroupsT1098
密码重置攻击高iam:UpdateLoginProfile + iam:ListUsersT1098
服务级通配符高iam:* 或 s3:* 或 ec2:*T1078.004
IAM 发现严重程度指南
发现类型条件严重程度
完全管理员通配符Action=* Resource=*严重
公开主体Principal: '*'严重
危险操作组合两个操作构成的提权路径严重
单个提权操作作用于通配符资源高
数据外泄操作对 * 执行 s3:GetObject、secretsmanager:GetSecretValue高
服务通配符service:* 操作高
对指定资源的数据操作范围适当低/无问题
最小权限建议

对于每个严重或高风险发现,该工具会输出一个 least_privilege_suggestion 字段,其中包含具体的整改指导:

  • 将 Action: * 替换为所需操作的明确列表
  • 将 Resource: * 替换为具体的 ARN 模式
  • 使用 AWS Access Analyzer 识别实际使用的权限
  • 将危险的操作组合拆分到具有不同信任策略的独立角色中

S3 暴露评估

S3 评估检查四个维度:公共访问阻止配置、存储桶 ACL、存储桶策略主体暴露情况以及默认加密。

S3 配置检查矩阵
检查项发现条件严重程度
公共访问阻止四个标志中任一缺失或为 false高
存储桶 ACLpublic-read-write严重
存储桶 ACLpublic-read 或 authenticated-read高
存储桶策略 Principal允许(Allow)且 "Principal": "*"严重
默认加密不存在 ServerSideEncryptionConfiguration高
默认加密SSEAlgorithm 非标准中
未配置 PublicAccessBlockConfiguration状态未知中
推荐的 S3 基线配置
{
  "PublicAccessBlockConfiguration": {
    "BlockPublicAcls": true,
    "BlockPublicPolicy": true,
    "IgnorePublicAcls": true,
    "RestrictPublicBuckets": true
  },
  "ServerSideEncryptionConfiguration": {
    "Rules": [{
      "ApplyServerSideEncryptionByDefault": {
        "SSEAlgorithm": "aws:kms",
        "KMSMasterKeyID": "arn:aws:kms:region:account:key/key-id"
      },
      "BucketKeyEnabled": true
    }]
  },
  "ACL": "private"
}

四项公共访问阻止设置都必须在存储桶级别和 AWS 账户级别启用。若两者未同时强制执行,账户级设置可能会被存储桶级设置覆盖。


安全组分析

安全组分析会标记入站规则中暴露管理端口、数据库端口,或向互联网 CIDR(0.0.0.0/0、::/0)开放所有流量的情况。

关键端口暴露规则
端口服务发现严重程度整改建议
22SSH严重限制为 VPN CIDR,或使用 AWS Systems Manager Session Manager
3389RDP严重限制为 VPN CIDR,或使用 AWS Fleet Manager
0–65535(全部)所有流量严重删除该规则;仅添加必需的特定端口
高风险数据库端口规则
端口服务发现严重程度整改建议
1433MSSQL高仅允许来自应用层安全组的访问,并将其迁移至私有子网
3306MySQL高仅允许来自应用层安全组的访问,并将其迁移至私有子网
5432PostgreSQL高仅允许来自应用层安全组的访问,并将其迁移至私有子网
27017MongoDB高仅允许来自应用层安全组的访问,并将其迁移至私有子网
6379Redis高仅允许来自应用层安全组的访问,并将其迁移至私有子网
9200Elasticsearch高仅允许来自应用层安全组的访问,并将其迁移至私有子网
严重程度修饰符

当被评估的资源可被互联网直接访问时(如负载均衡器、API 网关、公网 EC2),使用 --severity-modifier internet-facing。当资源处理受 PCI、HIPAA 或 GDPR 监管的数据时,使用 --severity-modifier regulated-data。两个修饰符都会将每个发现的严重程度提升一个级别。


IaC 安全审查

基础设施即代码(IaC)审查会在部署之前、定义阶段就发现配置问题。

IaC 检查矩阵
工具检查类型运行时机
Terraform资源级检查(aws_s3_bucket_acl、aws_security_group、aws_iam_policy_document)规划前、应用前、PR 门禁
CloudFormation模板属性验证(PublicAccessBlockConfiguration、SecurityGroupIngress)模板检查、部署门禁
Kubernetes 清单容器特权、网络策略、密钥暴露PR 门禁、准入控制器
Helm charts同 KubernetesPR 门禁
Terraform IAM 策略示例:存在风险 vs. 合规
# BAD: Will generate critical findings
resource "aws_iam_policy" "bad_policy" {
  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [{
      Effect   = "Allow"
      Action   = "*"
      Resource = "*"
    }]
  })
}

# GOOD: Least privilege
resource "aws_iam_policy" "good_policy" {
  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [{
      Effect   = "Allow"
      Action   = ["s3:GetObject", "s3:PutObject"]
      Resource = "arn:aws:s3:::my-specific-bucket/*"
    }]
  })
}

完整 CSPM 检查参考:references/cspm-checks.md


云服务商覆盖矩阵

检查类型AWSAzureGCP
IAM 权限提升完整(IAM 策略、信任策略、ESCALATION_COMBOS)部分(RBAC 分配、服务主体风险)部分(IAM 绑定、工作负载身份)
存储公开访问完整(S3 存储桶策略、ACL、公开访问阻止)部分(Blob SAS 令牌、容器访问级别)部分(GCS 存储桶 IAM、统一存储桶级访问)
网络暴露完整(安全组、NACL、端口级分析)部分(NSG 规则、入站端口分析)部分(防火墙规则、VPC 防火墙)
IaC 扫描完整(Terraform、CloudFormation)部分(ARM 模板、Bicep)部分(Deployment Manager)

工作流

工作流 1:快速态势检查(20 分钟)

适用于新配置的资源或部署前审查:

# 1. Export IAM policy document
aws iam get-policy-version --policy-arn ARN --version-id v1 | \
  jq '.PolicyVersion.Document' > policy.json
python3 scripts/cloud_posture_check.py policy.json --check iam --json

# 2. Check S3 bucket configuration
aws s3api get-bucket-acl --bucket my-bucket > acl.json
aws s3api get-public-access-block --bucket my-bucket >> bucket.json
python3 scripts/cloud_posture_check.py bucket.json --check s3 --json

# 3. Review security groups for open admin ports
aws ec2 describe-security-groups --group-ids sg-123456 | \
  jq '.SecurityGroups[0]' > sg.json
python3 scripts/cloud_posture_check.py sg.json --check sg --json

决策:退出码 2 表示阻止部署并进行整改。退出码 1 表示在 24 小时内安排整改。

工作流 2:完整云安全评估(多日)

第 1 天 — IAM 与身份:

  1. 导出附加到生产角色的所有 IAM 策略
  2. 对每个策略运行 cloud_posture_check.py --check iam
  3. 梳理发现的所有权限提升路径
  4. 识别权限过大的服务账户和角色
  5. 审查跨账户信任策略

第 2 天 — 存储与网络:

  1. 枚举所有 S3 存储桶并导出配置
  2. 对数据存储桶运行 cloud_posture_check.py --check s3 --severity-modifier regulated-data
  3. 导出所有 VPC 的安全组配置
  4. 对面向互联网的资源运行 cloud_posture_check.py --check sg
  5. 审查 NACL 规则中的网络分段缺口

第 3 天 — IaC 与持续集成:

  1. 审查版本控制中的 Terraform/CloudFormation 模板
  2. 检查 CI/CD 流水线中的 IaC 安全门禁
  3. 对照 references/cspm-checks.md 验证发现的问题
  4. 按优先级排序(严重 → 高 → 中)制定整改计划
工作流 3:CI/CD 安全门禁

将态势检查集成到部署流水线中,防止配置错误的资源进入生产环境:

# Validate IaC before terraform apply
terraform show -json plan.json | \
  jq '[.resource_changes[].change.after | select(. != null)]' > resources.json
python3 scripts/cloud_posture_check.py resources.json --check all --json
if [ $? -eq 2 ]; then
  echo "Critical cloud security findings — blocking deployment"
  exit 1
fi

# Validate existing S3 bucket before modifying
aws s3api get-bucket-policy --bucket "${BUCKET}" | jq '.Policy | fromjson' | \
  python3 scripts/cloud_posture_check.py - --check s3 \
  --severity-modifier regulated-data --json

反模式

  1. 在未检查提权组合的情况下进行 IAM 分析 — 单独看高风险操作可能显得风险较低。危险在于组合:iam:PassRole 本身并不严重,但 iam:PassRole + lambda:CreateFunction 是已确认的权限提升路径。务必分析完整语句,而不是孤立地看单个操作。
  2. 只启用存储桶级别的公共访问阻止 — AWS S3 同时提供账户级和存储桶级的公共访问阻止设置,存储桶级设置可以覆盖账户级设置。两者都必须配置。如果任何存储桶存在显式覆盖,仅配置账户级阻止是不够的。
  3. 对于公开资源,未将 --severity-modifier internet-facing 视为必选项 — 面向互联网的资源暴露程度远高于内部资源。面向互联网的基础设施上的高危发现应视为严重。对于 DMZ、负载均衡器和 API 网关配置,务必应用 --severity-modifier internet-facing。
  4. 只检查管理员策略 — 权限提升路径经常源于非管理员策略,这些策略组合起来后看似无害的权限。所有附加到生产身份的策略都必须检查,而不仅仅是那些明显具有高级访问权限的策略。
  5. 未进行根因分析就修复发现的问题 — 在不了解权限授予原因的情况下移除危险权限,最终会被重新添加。在移除每项高风险权限之前,应记录其业务理由,以防止权限被悄然重新引入。
  6. 忽视服务账户的权限过度配置 — 服务账户在开发期间常常被过度配置,且在投入生产后从未被精简。生产环境中的每个服务账户都必须依据 AWS Access Analyzer 或同等工具进行审计,以识别并移除未使用的权限。
  7. 未对受监管数据工作负载应用严重性修饰符 — 通用 S3 存储桶中的一个高危发现,与包含 PHI 或持卡人数据的存储桶中的同一发现,性质并不相同。在评估受监管数据环境中的资源时,务必使用 --severity-modifier regulated-data。

交叉引用

Skill关系
incident-response严重发现(公开的 S3、已确认正在活跃的权限提升)可能会触发事件分类
threat-detection云安全态势发现会生成狩猎目标——权限过度配置的角色很可能成为横向移动的目的地
red-team红队演练专门测试态势评估中发现的云配置错误的可利用性
security-pen-testing云安全态势发现会纳入渗透测试评估的基础设施安全部分

评论

支持 Markdown