尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
AD-control-paths源代码解析:AceFilter插件如何实现Active Directory权限过滤逻辑
AD-control-paths源代码解析AceFilter插件如何实现Active Directory权限过滤逻辑【免费下载链接】AD-control-pathsActive Directory Control Paths auditing and graphing tools项目地址: https://gitcode.com/gh_mirrors/ad/AD-control-pathsAD-control-paths是一款强大的Active Directory Control Paths审计和图形化工具而AceFilter插件作为其核心组件承担着Active Directory权限过滤的关键功能。本文将深入解析AceFilter插件的工作原理帮助新手和普通用户理解其如何实现复杂的权限过滤逻辑。AceFilter插件的核心架构与工作流程AceFilter插件采用模块化设计主要由三大类插件组成导入器importers、过滤器filters和写入器writers。这种架构使得权限过滤过程高度灵活且可扩展。图AD-control-paths数据处理流程展示了AceFilter在整个数据处理链中的位置和作用从上图可以看出AceFilter在数据处理流程中处于关键位置负责接收导入器传来的ACEAccess Control Entries数据经过过滤处理后再由写入器输出结果。导入器Importers数据输入的第一道关卡导入器的主要功能是从不同来源导入Active Directory数据包括ACE列表、对象列表和架构信息。在AceFilter中导入器的实现位于Dump/Src/AceFilter/AceFilterPlugins/Importers/目录下目前支持LdapDump、Loopback和Sysvol三种导入方式。以LdapDump导入器为例其源代码文件为Dump/Src/AceFilter/AceFilterPlugins/Importers/LdapDump/LdapDump.c。导入器需要实现一系列接口函数如GetNextAce、GetNextObject和GetNextSchema用于获取不同类型的数据。在主程序中通过解析命令行参数--importers来指定要加载的导入器。代码会遍历所有加载的导入器为ACE、对象和架构数据分别选择合适的导入器for (i 0; i options.plugins.numberOfImporters; i) { if (importerAce PLUGIN_MAX_IMPORTERS options.plugins.importers[i].functions.GetNextAce) { LOG(Info, SUB_LOG(_T(Using %s to import ACE)), PLUGIN_GET_NAME(options.plugins.importers[i])); importerAce i; } // 类似地选择对象和架构导入器 }过滤器Filters权限过滤的核心逻辑过滤器是AceFilter实现权限过滤的核心部分位于Dump/Src/AceFilter/AceFilterPlugins/Filters/目录下。目前提供了多种过滤器如AceMask、AceType、AdmSdHolder、ControlAd等覆盖了不同的过滤需求。每个过滤器都需要实现FilterAce函数该函数接收一个ACE对象并返回一个布尔值表示该ACE是否通过过滤。例如AceType过滤器可以筛选特定类型的ACE如ACCESS_ALLOWED而Inherited过滤器可以排除继承的权限。在主程序的处理循环中会依次应用所有加载的过滤器for (i 0; i options.plugins.numberOfFilters; i) { filterRet options.plugins.filters[i].functions.FilterAce(gc_PluginApiTable, ace); passedFilters options.plugins.filters[i].inverted ? !filterRet : filterRet; if (!passedFilters) { LOG(All, _T(Ace %u was filtered by %s), aceCount, PLUGIN_GET_NAME(options.plugins.filters[i])); break; } }值得注意的是AceFilter支持过滤器的反转功能通过--invert-filters参数可以将指定过滤器的结果取反。这为复杂的过滤需求提供了更大的灵活性。写入器Writers过滤结果的输出写入器负责将通过过滤的ACE数据以特定格式输出位于Dump/Src/AceFilter/AceFilterPlugins/Writers/目录下。目前支持FullyResolved、Loopback、MasterMailboxRelation和MasterSlaveRelation等写入器。当ACE通过所有过滤器后主程序会调用所有加载的写入器的WriteAce函数将ACE数据输出if (passedFilters) { keptAceCount; LOG(All, _T(Ace %u passed all filters), aceCount); for (i 0; i options.plugins.numberOfWriters; i) { options.plugins.writers[i].functions.WriteAce(gc_PluginApiTable, ace); } }缓存机制提升过滤效率的关键为了提高过滤效率AceFilter实现了完善的缓存机制包括对象缓存和架构缓存。这些缓存在处理大量ACE数据时能够显著提升性能。对象缓存的构建过程如下static void ConstructObjectCache(_In_ PPLUGIN_IMPORTER importer) { IMPORTED_OBJECT obj { 0 }; DWORD objCount 0; importer-functions.ResetReading(gc_PluginApiTable, ImporterObject); while (importer-functions.GetNextObject(gc_PluginApiTable, obj)) { obj.computed.number objCount; CacheInsertObject(obj); importer-functions.FreeObject(gc_PluginApiTable, obj); } CacheActivateObjectCache(); }类似地架构缓存也会在需要时构建。这些缓存使得过滤器在处理ACE时能够快速查找相关对象和架构信息避免了重复的计算和查询。实际应用如何使用AceFilter进行权限过滤使用AceFilter进行权限过滤非常简单只需在命令行中指定导入器、过滤器和写入器即可。例如以下命令将使用LdapDump导入器应用AceType和Inherited过滤器并通过FullyResolved写入器输出结果git clone https://gitcode.com/gh_mirrors/ad/AD-control-paths cd AD-control-paths AceFilter --importersLdapDump --filtersAceType,Inherited --writersFullyResolved -- typeACCESS_ALLOWED这个命令将筛选出所有非继承的ACCESS_ALLOWED类型的ACE并以完全解析的格式输出。总结AceFilter插件的价值与扩展AceFilter插件通过模块化的设计实现了灵活而强大的Active Directory权限过滤功能。其核心价值在于模块化架构导入器、过滤器和写入器的分离使得功能扩展变得简单。灵活的过滤逻辑支持多种过滤条件和过滤器反转满足复杂的权限审计需求。高效的缓存机制对象缓存和架构缓存显著提升了处理大量数据时的性能。对于开发者而言可以通过在相应目录下添加新的插件来扩展AceFilter的功能。例如要添加一个新的过滤器只需在Dump/Src/AceFilter/AceFilterPlugins/Filters/目录下创建新的过滤器实现并确保其导出FilterAce函数。AceFilter插件为AD-control-paths项目提供了强大的权限过滤能力是Active Directory安全审计的重要工具。通过本文的解析希望能帮助读者更好地理解其工作原理和使用方法。【免费下载链接】AD-control-pathsActive Directory Control Paths auditing and graphing tools项目地址: https://gitcode.com/gh_mirrors/ad/AD-control-paths创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

DeepMEL论文解读:跨物种增强子逻辑分析的深度学习方法

DeepMEL论文解读:跨物种增强子逻辑分析的深度学习方法

DeepMEL论文解读:跨物种增强子逻辑分析的深度学习方法 【免费下载链接】deepmel 项目地址: https://ai.gitcode.com/hf_mirrors/multimolecule/deepmel DeepMEL是一种创新的混合卷积/循环神经网络,能够直接从500 bp DNA序列中预测24种黑色素瘤染…

📅 2026/10/7 15:37:27
zyplayer-doc 2.5.9文档管理系统核心功能与安全实践

zyplayer-doc 2.5.9文档管理系统核心功能与安全实践

1. 项目概述:zyplayer-doc 2.5.9核心功能解析zyplayer-doc作为一款开源的文档管理系统,在2.5.9版本中带来了三个关键性改进:文档访问密码保护、编辑器导航增强以及登录日志的精细化展示。这些功能升级直击企业文档管理中的三大痛点——安全管…

📅 2026/9/12 3:23:12
黑色素瘤研究新工具:DeepMEL如何助力单细胞ATAC-seq数据分析

黑色素瘤研究新工具:DeepMEL如何助力单细胞ATAC-seq数据分析

黑色素瘤研究新工具:DeepMEL如何助力单细胞ATAC-seq数据分析 【免费下载链接】deepmel 项目地址: https://ai.gitcode.com/hf_mirrors/multimolecule/deepmel DeepMEL是一款专为黑色素瘤研究设计的深度学习工具,能够直接从500 bp DNA序列中预测2…

📅 2026/10/8 10:01:53
MORE NEWS

更多资讯

📰

Java项目中DML与数据迁移SQL的规范化管理实践

1. 问题背景与核心矛盾 在Java开发项目中,DML.sql文件通常被用作开发阶段新增数据的存储容器。这个文件会在上线时被带到生产环境执行,用于同步开发环境与生产环境的数据差异。然而在实际操作中,经常出现团队成员将数据迁移SQL也提交到同一个…

📰

AI辅助测试用例生成:提升效率与覆盖率

1. 项目概述:AI测试用例生成效率革命 去年在负责一个电商后台系统迭代时,我遇到了测试用例编写的瓶颈——新上线的优惠券模块涉及12种业务场景,按照传统方式编写测试用例需要3人天的工作量。直到尝试用Cursor的Skill功能,才真正体…

📰

Matlab自抗扰ADRC与PID控制源码对比:ESO扰动估计与参数整定实战

简介:这份资源是围绕Matlab平台整理的自抗扰控制器(ADRC)与PID控制源码合集,面向自动化、电子信息工程、数学等专业的学生及控制算法初学者,可用于课程设计、期末大作业或毕业设计中的算法验证与对比研究。包内共36个文…

📰

Cursor AI生成测试用例的实战技巧与效能提升

1. 项目概述:Cursor与AI生成测试用例的实战价值在软件测试领域,编写高质量的测试用例往往需要耗费大量时间。传统手工编写方式不仅效率低下,还容易遗漏边界条件。Cursor这款AI编程工具近期推出的Skill功能,通过自然语言交互就能快…

📰

Python爬虫实战:Requests+Xpath爬取新闻并Flask+Echarts可视化

简介:这份资源是一套基于Python、Flask与Echarts构建的观察者新闻网爬虫项目源码,面向具备一定Python基础、希望学习网络爬虫与数据可视化开发的进阶学习者。项目通过Requests发送请求,结合etree解析HTML并利用Xpath精准定位新闻信息&#xf…

📰

营销技能全景拆解:从用户洞察到数据闭环的实战方法论

干了十几年市场,看过无数简历上写着"精通营销"的人,也带过不少真正靠营销技能撑起增长的项目。说实话,营销这个行当门槛很低,低到谁都能发两条内容、投一笔预算;但天花板又极高,高到大多数团队卡…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬