第 10 章 配置属性加密

目录服务器提供多种机制来保护对敏感数据的访问,如访问控制规则,以防止未授权用户读取条目或 TLS 中的某些条目或属性,以防止数据对不可信网络造成破坏和篡改。但是,如果服务器的数据库文件的副本应属于未经授权的人员的实践,则它们可能会从这些文件中提取敏感信息。由于数据库中的信息以纯文本形式存储,因此某些敏感信息(如政府标识号或密码)可能无法受到标准访问控制措施的保护。
对于高敏感信息,由于信息丢失的可能性可能会带来显著的安全风险。为了删除该安全风险,目录服务器允许加密其部分数据库。加密后,即使攻击者有服务器数据库文件的副本,数据也会安全。
数据库加密允许在数据库中加密属性。加密和加密密码都可以为每个后端配置每个属性。配置后,特定属性的每个实例(甚至索引数据)都会加密存储在该数据库中的每个条目。
属性加密的额外优点是,加密值只能发送到大于 1 的安全统计信息(SSF)的客户端。
注意
加密数据有一个例外:用作条目的 RDN 的任何值都不会在条目 DN 中加密。例如,如果 uid 属性是加密的,则该值会在条目中加密,但显示在 DN 中:
dn: uid=jsmith1234,ou=People,dc=example,dc=com
...
uid:: Sf04P9nJWGU1qiW9JJCGRg==
这将允许某人发现加密值。
条目 DN 中使用的任何属性无法有效地加密,因为它将始终显示在 DN 中。请注意,哪些属性用于构建 DN,并相应地设计属性加密模型。
索引的属性可能会被加密,属性加密与 eqpres 索引完全兼容。通常从属性值派生的索引文件的内容也会加密,以防止攻击者恢复部分或所有加密数据来分析索引。
由于服务器在查找加密属性的索引前重新加密所有索引密钥,因此对于使用加密索引的搜索,对服务器性能有一些影响,但其效果不足,它不再需要使用索引。

10.1. 加密密钥

要使用属性加密,必须为 TLS 配置服务器并启用 TLS,因为属性加密使用服务器的 TLS 加密密钥以及与 TLS 相同的 PIN 输入法。PIN 必须在服务器启动时手动输入,或者必须使用 PIN 文件。
随机生成的对称密钥用于加密和解密属性数据。每个配置的密码都使用单独的密钥。这些密钥使用服务器的 TLS 证书的公钥 嵌套,生成的嵌套密钥存储在服务器的配置文件中。属性加密的有效强度不超过用于嵌套的服务器 TLS 密钥的强度。如果没有访问服务器的私钥,无法从嵌套的副本恢复对称密钥。
警告
没有机制来恢复丢失的密钥。因此,安全地备份服务器的证书数据库非常重要。如果服务器证书丢失,则无法解密存储在其数据库中的任何加密数据。
警告
如果 TLS 证书即将过期且需要续订,请在续订前导出加密的后端实例。更新证书,然后重新导入导出的 LDIF 文件。