关于在Active Directory中存储任意键值对的技术咨询
嘿,我来帮你捋清楚关于Active Directory里存自定义键值对的这几个问题:
Active Directory中存储任意键值对的标准位置
AD里确实有几个标准的地方用来存自定义键值对,不用折腾修改架构:
- 首先是预留扩展属性:AD默认给用户、计算机等对象预留了
extensionAttribute1到extensionAttribute15共15个字符串属性,就是专门为存储自定义键值对设计的标准用法,无需改动任何架构。 - 其次是通用文本属性:比如
info属性,这是一个多用途的长文本属性,也可用于存储键值对甚至简单的结构化数据。 - 如果需要更定制化的方案,也可以扩展AD架构新增专属属性,但这种方式成本高、操作复杂,临时存储数据完全没必要采用。
少量数据能否临时用作数据存储
完全可以!如果只是存储数十条而非数千条数据,临时把AD当作数据存储是没问题的:
- AD本身就支持这类元数据存储,几十条数据对AD的性能几乎没有影响,不会给域控带来额外负担。
- 不过要注意,这只能作为临时方案——AD的核心定位是身份与权限管理,并非通用数据存储系统。长期存储数据的话,还是建议使用专门的数据库或存储服务,毕竟AD的备份、权限模型都是围绕身份场景设计的,无法适配通用数据存储的需求。
字符编码、可用字符限制及JSON值支持
针对这几点,具体情况如下:
- 字符编码:AD内部采用UTF-16LE(Unicode的一种实现)编码,只要是Unicode支持的字符(包括多语言字符)都可以存储,无需担心编码兼容性问题。
- 可用字符与长度限制:不同属性有不同的规则:
- 像
extensionAttribute*这类预留属性,字符串类型的上限一般为256个字符; info属性的容量更大,通常支持存储约1024个字符(具体取决于AD版本与配置);- 建议避免存储控制字符(如换行、制表符等),虽然部分场景下可以存入,但读取时可能引发解析异常,必要时可先对这类字符进行转义处理。
- 像
- JSON字符串支持:当然可以!只要JSON字符串的长度不超过对应属性的字符上限,直接将完整的JSON字符串存入属性即可。很多管理员都会采用这种方式存储小型结构化数据,读取时只需将字符串解析为JSON对象即可使用。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

