首页
/ Cartography项目实战教程:使用Neo4j进行云资产安全分析

Cartography项目实战教程:使用Neo4j进行云资产安全分析

2025-07-09 07:01:17作者:蔡怀权

前言

Cartography是一款强大的云基础设施资产图谱工具,能够将复杂的云环境资源关系可视化。本教程将带您深入了解如何使用Cartography进行云资产的安全分析,特别关注AWS环境中的常见安全场景。

环境准备

在开始之前,请确保您已经完成了Cartography的安装和数据同步。完成后,您可以通过访问本地7474端口来使用Neo4j的Web界面。

基础查询示例

1. 查询所有AWS账户中的RDS实例

MATCH (aws:AWSAccount)-[r:RESOURCE]->(rds:RDSInstance)
return *

这个查询会返回所有AWS账户与其关联的RDS实例之间的关系。在结果可视化界面中,您可以看到清晰的节点连接图。

2. 查询未加密的RDS实例

MATCH (a:AWSAccount)-[:RESOURCE]->(rds:RDSInstance{storage_encrypted:false})
RETURN a.name, rds.id

此查询使用了属性过滤,只返回storage_encrypted属性为false的RDS实例,帮助您快速识别潜在的安全风险。

可视化界面自定义技巧

在Neo4j的可视化界面中,您可以轻松自定义节点显示方式:

  1. 点击节点类型图标(如"AWSAccount")选择节点类型
  2. 在底部出现的菜单中调整颜色、大小和标签显示
  3. 对于表格形式的结果,可以点击列头进行排序

高级安全分析

1. 识别暴露在互联网的EC2实例

MATCH (instance:EC2Instance{exposed_internet: true})
RETURN instance.instanceid, instance.publicdnsname

Cartography通过数据增强添加了exposed_internet字段,帮助您快速识别可能面临外部威胁的实例。

2. 查找允许匿名访问的S3存储桶

MATCH (s:S3Bucket)
WHERE s.anonymous_access = true
RETURN s

同样,anonymous_access是Cartography添加的增强字段,用于标记可能不安全的访问权限配置。

数据聚合分析

统计各AWS账户中未加密的RDS实例数量

MATCH (a:AWSAccount)-[:RESOURCE]->(rds:RDSInstance)
WHERE rds.storage_encrypted = false
RETURN a.name as AWSAccount, count(rds) as UnencryptedInstances

这种聚合查询可以帮助您从宏观角度了解各账户的安全状况。

探索数据关系

1. 发现与DNS记录相关的所有节点类型

match (d:DNSRecord)--(n)
return distinct labels(n);

2. 查看特定类型节点的所有属性

match (n:S3Bucket) return properties(n) limit 1;

这些探索性查询可以帮助您更好地理解数据模型,为构建更复杂的查询打下基础。

Cartography的数据增强功能

Cartography通过分析作业为节点添加了多个安全相关的自定义属性:

  1. exposed_internet - 标记资源是否暴露在互联网

    • 适用于ELB、ALB、EC2实例和ElasticSearch域
    • 判断逻辑包括安全组规则、负载均衡器配置等
  2. anonymous_access - 标记资源是否允许匿名访问

    • 主要应用于S3存储桶
    • 分析ACL策略中的特殊权限组

扩展分析能力

Cartography支持通过分析作业进行扩展,您可以:

  1. 添加自定义属性和关系
  2. 实现更复杂的权限映射分析
  3. 创建针对特定场景的安全检查

实用小技巧:永久链接书签

您可以创建一个浏览器书签,快速生成当前查询的永久链接,方便团队协作和知识共享。

总结

通过本教程,您已经学会了使用Cartography进行云资产安全分析的基本方法。从简单的资源查询到复杂的安全状况分析,Cartography提供了强大的工具来帮助您理解和保护云环境。建议您结合实际环境,尝试构建更多有针对性的查询,充分发挥图谱分析的优势。