stuvusIT.slapd-config

slapd-config

此角色用于配置整个 OpenLDAP 服务器的 OLC。
需要您已创建 OLC 并已运行 slapd。
请查看 slapd-base 以完成此任务。

slapd-config 将直接在 cn=config 中创建全局的 slapd 配置,并加载如果没有编译为静态后端的全局模块(如 mdb)。
随后,监控后端和 MDB 将被创建和配置。
MDB 支持指定覆盖层。

要求

需要一个基于 dpkg 或 pacman 的 Linux 发行版。

角色变量

以下是一些角色全局变量:

名称 默认值/必需 描述
slapd_enable_monitor true 加载监控模块(如需要)并配置监控数据库。
slapd_modules_path /usr/lib/ldap 动态模块的路径,如果需要加载但不以静态后端编译的后端。
slapd_additional_modules 如果没有编译在内,还需加载这些模块(除了 MDB 和监控)。
slapd_olc_rootdn_password :heavy_check_mark: 访问 OLC 的密码。此密码不会自动导出 slapd-base
slapd_monitor_rootdn_password :heavy_check_mark: 监控数据库的 rootdn 密码,将自动进行哈希处理。
slapd_mdb_rootdn_password :heavy_check_mark: MDB 数据库的 rootdn 密码,将自动进行哈希处理。
slapd_schemas 要加载的模式文件路径的数组。
slapd_global_config 见说明 每一个全局 slapd 配置选项。下文每个选项的描述。
slapd_olc_config 见说明 OLC 数据库的每一个全局配置值。
slapd_monitor_config 见说明 监控数据库的每一个全局配置值。
slapd_mdb_config :heavy_check_mark: MDB 数据库的每一个全局配置值。
slapd_mdb_overlays 见说明 MDB 的每个模块。见示例以获得示例。

slapd-base 变量

如果本剧本的前一个步骤中没有运行 slapd-base,您需要设置这些变量。
所有变量都是必需的。

名称 默认值/必需 描述
slapd_run_dir :heavy_check_mark: args 文件、pid 文件和 ldapi 套接字的运行目录
slapd_ldapi_socket :heavy_check_mark: 用于本地 slapd 管理的 ldapi unix 套接字
slapd_mdb_dir :heavy_check_mark: MDB 所在的目录
slapd_olc_dir :heavy_check_mark: OLC 的 LDIF 文件所在的路径
slapd_olc_rootdn :heavy_check_mark: OLC 的 RootDN

全局配置选项

全球 slapd OLC 配置分为不同的部分。

一般配置
名称 默认值/必需 描述
olcConfigFile 要加载的配置文件的路径。被 OLC 取代。
olcConfigDir {{slapd_olc_dir}} OLC 数据库文件的路径。
olcArgsFile {{slapd_run_dir}}/slapd.args slapd 将把其参数写入此文件。
olcPidFile {{slapd_run_dir}}/slapd.pid slapd 将把其 PID 写入此文件。
olcGentleHUP FALSE 当为 TRUE 时,slapd 不会在 SIGHUP 上杀死现有连接,而是会等待它们终止。
olcServerID 0 此服务器的 ID。仅在多主复制时需要。
安全相关配置
名称 默认值/必需 描述
olcAllows 一组允许的特性。
olcDisallows 一组不允许的特性。
olcRequires bind 一组需要的条件。
olcRestrict 一组受限的操作。
olcSecurity ssf=1 simple_bind=128 指定一组需要的安全强度因素。
olcAuthIDRewrite 用于将简单用户名转换为用于身份验证的 LDAP DN。
olcAuthzRegexp 用于将简单用户名转换为用于身份验证的 LDAP DN。可以多次指定,并要求重新启动服务器以生效。
olcAuthzPolicy none 用于代理授权的规则。
olcLocalSSF 300 LDAPI 连接的假定 SSF。
olcPasswordHash {SSHA} 用于密码更改扩展修改的一种或多种哈希算法。
olcPasswordCryptSaltFormat %s 使用 crypt() 哈希密码时的盐格式。
TLS 配置
名称 默认值/必需 描述
olcTLSCertificateFile slapd 的公钥文件。
olcTLSCertificateKeyFile slapd 的私钥。
olcTLSRandFile 当 urandom 不可用时从中获取随机位的文件。
olcTLSDHParamFile 包含用于 Diffie-Hellman 瞬态密钥交换的质数的文件。
olcTLSCipherSuite 要使用的 TLS 密码套件。
olcTLSProtocolMin 要求的最小 TLS 版本。默认为可能的最高级别。
olcTLSCACertificateFile 含有所有受信任证书授权的文件路径。
olcTLSCACertificatePath 含有所有受信任证书授权的文件目录路径。
olcTLSCRLCheck none 在连接时是否应检查 CA 的 CRL。
olcTLSVerifyClient never 何时验证客户身份。
日志配置
名称 默认值/必需 描述
olcLogLevel stats 每个子系统的日志级别配置。
olcLogFile 要记录的文件。 slapd 将始终记录到 stderr。
olcPluginLogFile 记录 slapi 插件输出的文件。
olcReplogFile replog 文件,可由 slurpd 读取。
线程配置
名称 默认值/必需 描述
olcConcurrency 操作系统的线程提示。在 Linux 下不使用。
olcListenerThreads 1 监听连接的线程数量。1 对于最多 16 核心是足够的。
olcThreads 16 请求处理的 CPU 线程数量。
olcToolThreads 1 在工具模式下运行时的 CPU 线程数量。应不超过系统中的核心数量。
超时和限制
名称 默认值/必需 描述
olcIdleTimeout 0 客户端在无动作的情况下,可以在断开连接前等待的秒数。
olcWriteTimeout 0 客户端在存在未完成写入的情况下,可以在断开连接前等待的秒数。
olcTimeLimit 3600 slapd 在回答请求时的最大时间(秒)。允许使用 unlimited 值。
olcSizeLimit 500 从搜索中返回的最大条目数。
连接
名称 默认值/必需 描述
olcConnMaxPending 50 匿名会话中待处理请求的最大数量。
olcConnMaxPendingAuth 1000 身份验证会话中待处理请求的最大数量。
olcTCPBuffer TCP 缓冲区的大小。操作系统可能会自动调整此值。
olcSockbufMaxIncoming 262143 匿名会话的 LDAP PDU 的最大大小。
olcSockbufMaxIncomingAuth 4194303 身份验证会话的 LDAP PDU 的最大大小。
SASL
名称 默认值/必需 描述
olcSaslHost 用于 SASL 处理的完全限定域名。
olcSaslRealm SASL 处理中使用的 SASL 领域。
olcSaslSecProps 指定 Cyrus SASL 安全属性。
olcSaslAuxprops 用于身份验证查找的额外属性插件。
索引
名称 默认值/必需 描述
olcIndexSubstrIfMinLen 2 子初始和子最终索引的最小长度。
olcIndexSubstrIfMaxLen 4 子初始和子最终索引的最大长度。
olcIndexSubstrAnyLen 4 子任意索引的长度。属性长于此长度的在段中处理。
olcIndexSubstrAnyStep 2 子任意查找中使用的步幅。这是处理过滤器字符串段的偏移量。
olcIndexIntLen 4 有序整数索引的键长度。
其他
名称 默认值/必需 描述
olcAttributeOptions x-hidden lang- 标记属性选项或选项标记/范围前缀。
olcReferral 当 slapd 找不到本地数据库时返回的参考 URL。
olcReverseLookup FALSE 启用客户端名称未验证的反向查找。
olcRootDSE 包含根 DSE 的用户定义属性的 LDIF 文件名称。
olcReadOnly FALSE 将整个服务器设置为只读模式。警告:一旦设置为 true,此值不能更改,除非修改磁盘上的数据库文件并重新启动 slapd!
olcLdapSyntaxes 我真不知道这个属性为什么在这里。网络上没有文档可以解释。

数据库配置值

这些值适用于每个数据库(OLC、监控和 MDB)。
此部分给出了所有值的概述。
每个数据库的默认值如下所示。
MDB 数据库还有一些仅在此数据库上支持的附加属性。

一般
名称 必需 描述
olcSuffix :heavy_check_mark: 将传递给数据库后端的查询的 DN 后缀。对于 OLC 和监控并不是必需的。
olcReadOnly :heavy_check_mark: 将此数据库置于只读模式。无法进行任何修改。
olcHidden :heavy_multiplication_x: 不回答对该数据库的任何查询。slapd 将否认该数据库的存在。
olcLastMod :heavy_check_mark: slapd 是否将自动维护 modfiersNamemodifyTimestampcreatorsNamecreateTimestampentryCSNentryUUID
olcSubordinate :heavy_multiplication_x: 此数据库是否是另一个数据库的下属。
安全
名称 必需 描述
olcSecurity :heavy_multiplication_x: 指定一组需要的安全强度因素。
olcRootDN :heavy_check_mark: 此数据库的 RootDN 的名称。
olcRootPW :heavy_check_mark: 此数据库的 RootDN 的哈希密码。
olcRequires :heavy_multiplication_x: 一组条件要求。
olcRestrict :heavy_multiplication_x: 一系列受限的操作。
olcAddContentAcl :heavy_check_mark: 是否在对被添加条目的内容执行 ACL 检查。
olcAccess :heavy_check_mark: 此数据库的 ACL 规则数组。
超时和限制
名称 必需 描述
olcTimeLimit :heavy_multiplication_x: slapd 在回答请求时将花费的最大时间(秒)。允许使用 unlimited 值。
olcSizeLimit :heavy_multiplication_x: 从搜索返回的最大条目数。
olcLimits :heavy_multiplication_x: 基于操作发起者或基本 DN 的时间和大小限制。
Syncrepl
名称 必需 描述
olcSyncrepl :heavy_multiplication_x: Syncrepl 主要配置。
olcUpdateDN :heavy_multiplication_x: 允许更新副本的 DN。应当不是 rootDN。
olcSyncUseSubentry :heavy_multiplication_x: 将 syncrepl contextCSN 存储在子条目中,而不是在上下文条目中。
olcUpdateRef :heavy_multiplication_x: 当 slapd 被要求修改 replicated 数据库时要返回的参考。
olcMirrorMode :heavy_multiplication_x: 将此数据库放入镜像模式。
slurpd
名称 必需 描述
olcReplica :heavy_multiplication_x:
olcReplicaArgsFile :heavy_multiplication_x:
olcReplicaPidFile :heavy_multiplication_x:
olcReplicationInterval :heavy_multiplication_x:
olcReplogFile :heavy_multiplication_x:
其他
名称 必需 描述
olcSchemaDN :heavy_multiplication_x: 条目所需的子模式子条目的 DN。
olcMaxDerefDepth :heavy_multiplication_x: 允许跟随的别名的最大数量。
olcPlugin :heavy_multiplication_x: 加载 slapi 插件。
olcMonitoring :heavy_multiplication_x: 为此数据库收集监测数据。
olcExtraAttrs :heavy_multiplication_x: 指定即使在未搜索时也需返回的属性。
MDB 设置

这些设置仅适用于 MDB 数据库!

名称 必需 默认值 描述
olcDbDirectory :heavy_check_mark: {{slapd_mdb_dir}} 数据库在磁盘上的目录路径。
olcDbNoSync :heavy_multiplication_x: TRUE 接收数据后不立即同步。
olcDbCheckpoint :heavy_multiplication_x: 8192 15 何时(KB/分钟)将数据库刷新到磁盘。
olcDbMaxReaders :heavy_multiplication_x: 可同时访问数据库的线程的最大数量。
olcDbMaxSize :heavy_multiplication_x: 数据库的最大字节大小。
olcDbMode :heavy_multiplication_x: 0600 数据库文件的文件模式。
olcDbSearchStack :heavy_multiplication_x: 16 搜索过滤器评估期间的堆栈深度。
olcDbRtxnSize :heavy_multiplication_x: 在一次读取事务中处理的项数。
olcDbIndex :heavy_multiplication_x: 在此数据库上创建的索引。

每个数据库的默认值

名称 前端默认 OLC 默认 监控默认 MDB 默认
olcSuffix :exclamation:
olcReadOnly FALSE FALSE
olcHidden FALSE
olcLastMod TRUE TRUE
olcSubordinate
olcSecurity
olcRootDN {{slapd_olc_rootdn}} cn=root,cn=monitor cn=root,{{olcSuffix}}
olcRootPW [哈希密码] [哈希密码] [哈希密码]
olcRequires
olcRestrict
olcAddContentAcl TRUE TRUE
olcAccess 'to * by * read' 'to * by * none' 'to * by * none' 'to * by * none'
olcTimeLimit
olcSizeLimit
olcLimits
olcSyncrepl
olcUpdateDN
olcSyncUseSubentry FALSE FALSE
olcUpdateRef
olcMirrorMode FALSE
olcReplica
olcReplicaArgsFile
olcReplicaPidFile
olcReplicationInterval
olcReplogFile
olcSchemaDN cn=Subschema
olcMaxDerefDepth 15 15
olcPlugin
olcMonitoring FALSE FALSE
olcExtraAttrs

依赖关系

必须安装 schema2ldif

示例剧本

- hosts: ldap
  roles:
  - slapd-config
    slapd_modules_path: /usr/lib/openldap
    slapd_olc_rootdn_password: water
    slapd_mdb_rootdn_password: water
    slapd_monitor_rootdn_password: water
    slapd_additional_modules: [ 'memberof' ]
    slapd_mdb_config:
      olcSuffix: "dc=example,dc=com"
    slapd_mdb_overlays:
      memberof:
        olcOverlay: memberof
        objectClass: olcMemberOf
        olcMemberOfDangling: ignore

许可证

此作品遵循 Creative Commons Attribution-ShareAlike 4.0 International License 许可。

作者信息

关于项目

Configure an entire slapd with the OLC

安装
ansible-galaxy install stuvusIT.slapd-config
许可证
other
下载
7.4k
拥有者
stuvus IT Team - Studierendenvertretung Universität Stuttgart