冲击发电机
slapddgen的Python项目详细描述
扇耳光
- slapddgen
- 用法
- 修改模板
- 码头工人
- 建筑
- 跑步
- 生产
- 配置
cn=config.ldif
cn=module{0}.ldif,cn=config
olcdatabase={-1}frontend.ldif,cn=config
olcdatabase={0}config.ldif,cn=config
OLCDatabase={1}monitor.ldif,cn=config
olcdatabase={2}mdb.ldif,cn=config
olcoverlay={0}memberof.ldif,olcdatabase={2}mdb,cn=config
olcoverlay={1}refint.ldif,olcdatabase={2}mdb,cn=config
olcoverlay={2}ppolicy.ldif,olcdatabase={2}mdb,cn=config
olcoverlay={3}unique.ldif,olcdatabase={2}mdb,cn=config
cn=schema.ldif,cn=config
cn=*.ldif,cn=schema,cn=config
注意:此工具非常先进。对我有用,可能对你有用。
注意:如果
打开cn=schema
中的任何文件,因为这将破坏ldif格式。
slapddgen
生成一个可以加载到openldap中的slapd.d
用
slapd-f
指向服务器。这将启动服务器
对于联机配置,akaolc
,表示配置
它本身存储在目录服务器中,而不是slapd.conf
用法
此工具的输入包含在config.json
中,或其他
--指向配置文件
。有太多事情要做
使用环境变量或cli开关。把东西从
config.json
肯定会爆炸,不过对于模块来说,
acl、索引和唯一的空数组应该没问题。
一旦安装了slapddgen,就可以用 如果你知道你在做什么,你可以在
slapddgen generate--config_file=/path/to/config.json--output_dir=/path/to/write/config/to运行它
将更有帮助。修改模板
模板/slapd.d
以满足您的需要。如果您已经安装了pip
slapddgen会很烦人,因此在这种情况下,克隆存储库和
执行pip install-e.
码头工人
还有一个示例dockerfile
可用于打包
都在码头集装箱里。这对测试很有用
除此之外。
建筑
VERSION=$(git rev-parse --abbrev-ref HEAD) docker build --no-cache=true\ --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')\ --build-arg COMMIT=$(git rev-parse HEAD)\ --build-arg VERSION=${VERSION}\ -t ldap:${VERSION} .
在构建发行版时,请使用git describe--abbrev=0--tags
对于
版本
运行
docker run -it -p 3389:389 -p 6636:636 ldap
这将向主机公开容器中的端口389,即ldap://
url
在端口3389上(因此您不需要绑定到特权端口)并执行
端口636相同,ldaps://
您可以使用--entrypoint=/bin/sh
更改入口点。一旦你做到了
仍然可以通过运行
slapd-u ldap-g ldap-d 256
生产
在为生产目的运行它时,确保 配置和数据可以保存到磁盘。否则你会从 每次重新启动容器时,都会刷新和清空目录服务。
为此,您可能应该卷装入以下内容:
- 配置:
/etc/openldap
- 数据库:
/var/lib/openldap/openldap data
创建一个单独的用户,ldapd
,默认为55555
的uid。这个
是为了确保您可以正确映射主机用户和容器用户,这样您就不会
进入卷装载的权限问题。
要更改容器中ldapd
用户的uid,必须
重新生成并传入--build arg uid=<;number>;
配置
slapddgen为您生成一组配置,并假设 编辑布局:
- {{suffix}} --- {{baseOU}},{{suffix}} ----- ou=accounts,{{baseOU}},{{suffix}} ----- ou=groups,{{baseOU}},{{suffix}} ----- ou=policy,{{baseOU}},{{suffix}}
当然,您可以通过修改模板自行更改此设置。
生成的配置使用联机/动态配置,aka olc,aka
olcconfig
。因此,不需要谈论slapd.conf
在ldapmodify的帮助下应用ldif来配置openldap服务器
进一步,
生成的slapd.d
目录可用于启动OpenLDAP服务器
从零开始。以下部分假设您运行了slapddgen和
解释生成的配置中的一些内容。
cn=config.ldif
以下设置是与Alpine相关的默认设置:
olcConfigFile: /etc/openldap/slapd.conf olcConfigDir: /etc/openldap/slapd.d/ olcArgsFile: /run/openldap/slapd.args olcPidFile: /run/openldap/slapd.pid
值得注意的是:
olcPasswordCryptSaltFormat: $6$rounds=50000$%.16s
这使用了地下室的SHA512和50000发子弹(钥匙拉伸)。这与
olcdatabase={-1}frontend.ldif中的
olcpasswordhash
设置以及
olcppolicyhashcleartext
在olcoverlay={2}ppolicy.ldif,olcdatabase={2}mdb,cn=config中
cn=module{0}.ldif,cn=config
配置加载的模块。值得注意的是 前端数据库是一个特殊的伪数据库,包含设置
作为默认值应用于所有其他 两个有趣的条目是: 这里唯一感兴趣的是 与上一节一样, 这个很有趣,因为它定义了
DIT中的条目,以及其他类似ACL的条目。 感兴趣的: 与往常一样,还有许多 这里我们存储覆盖的成员的配置。成员
覆盖将虚拟属性 假设您有三个 感兴趣的设置是: 这将配置引用完整性覆盖。参照完整性
将负责更新对存储在
如果dn被重命名/移动,则返回属性。 注意: 密码策略覆盖允许配置特定的最小值
密码要求(如存储在 注意: 您可以在 唯一覆盖允许在
树的一部分(或整棵树)。尽管rdn总是被强制到
唯一(例如,不能有两个人具有相同的uid)
其他属性不是,最关键的是像 可以通过添加窗体的 例如,如果要强制实施unique 现在,约束将在
树,不是整体。 没有任何相关的东西可以在这里看到或改变。它只需要存在。一次
服务器已启动此项将自动更新
使用服务器的内部对象类和属性(主要是
包含服务器加载的架构文件。 更新这个是相当棘手的。"最简单"的方法是生成olcmodulepath
和
相对于olcmodulepatholcmoduleload
olcdatabase={-1}前端.ldif,cn=config
olcdatabase
s。olcMonitoring: FALSE
olcPasswordHash: {CRYPT}
olcmontioring
禁用所有数据库的监视覆盖。它将会是
为olcdatabase={2}mdb.ldif
显式启用。另一个确保我们
始终使用{crypt}
作为密码哈希机制。哪些设置是
应用于密码散列由olcpasswordcryptsaltformat
定义
olcdatabase={0}config.ldif,cn=config
olcaccess
条目,它定义了
允许实体读/写cn=config
olcdatabase={1}monitor.ldif,cn=config
olcaccess
是唯一有趣的部分。olcdatabase={2}mdb.ldif,cn=config
olcSuffix: dc=example,dc=com
olcRootDN: cn=Manager,dc=example,dc=com
olcRootPW: {CRYPT}super-long-hash
olcMonitoring: TRUE
olcDbMaxSize: 536870912
olcDbDirectory: /var/lib/openldap/openldap-data
olcDbIndex: objectClass eq
olcDbIndex: uid eq,sub
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq
olcDbIndex: member eq
olcDbIndex: memberof eq
olcsuffix
为所有条目定义默认后缀。olcrootdn
是
此数据库"根"用户的DN,并且可以修改任何内容,而不考虑ACL。
olcrootpw
是olcrootdn
的密码,由
slappasswd-h{crypt}'-c'$6$rounds=50000$%.16s'
olcmonitoring
启用对此数据库和olcdbdirectory的监视
包含存储此数据库的磁盘上的路径。
olcdbindex
条目定义openldap将为我们维护的索引
帮助加快搜索速度。olcdbmaxsize
定义将分配的内存映射的大小
对于数据库。它在运行时不能超过这个值
可以将其设置为更高的值,然后重新启动。值以字节为单位,
我们的默认值是半吉比特(GiB)。olcaccess
条目控制对
数据。olcoverlay={0}memberof.ldif,olcdatabase={2}mdb,cn=config
memberof
添加到DIT存储中的任何条目
这个dn是什么成员。groupofnames
引用成员中的用户
属性。然后,该用户的
memberof
属性将包含
这三个域名的域名系统。请注意,memberof
将只包含
直接/直接成员,而不是任何继承的成员(它将
不递归地展开成员属性。olcMemberOfDangling: error
olcMemberOfDanglingError: constraintViolation
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
olcmemberoftanging
指定在发生
修改将导致悬挂引用,返回
键入olcmemberofdangingerror
olcmemberofrefinit
指定使用引用完整性
覆盖(请参阅下一节)。olcmemberofgroupoc
指定监视的对象类
悬垂的参考。这通常只对gorups有用,我们使用
groupofnames
表示组。olcmemberofad
指定使用的属性
要在中存储组成员,即成员
和olcmmemberofmadd
指定存储关系的属性,memberof
olcoverlay={1}refint.ldif,olcdatabase={2}mdb,cn=config
olcRefintAttribute: owner
olcRefintAttribute: manager
olcRefintAttribute: memberOf
olcRefintAttribute: member
olcRefintAttribute: roleOccupant
olcRefintModifiersName: cn=Manager,dc=example,dc=com
olcrefintatattribute
s指定要强制执行的属性
的引用完整性。这只能是存储
一个杰出的名字。olcrefintmodifiersname
指定将存储在修饰符名称中的内容
由引用更新的任何项的操作属性
完整性覆盖。
olcoverlay={2}ppolicy.ldif,olcdatabase={2}mdb,cn=config
userpassword
属性)。VERSION=$(git rev-parse --abbrev-ref HEAD)
docker build --no-cache=true\
--build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')\
--build-arg COMMIT=$(git rev-parse HEAD)\
--build-arg VERSION=${VERSION}\
-t ldap:${VERSION} .
0
olcppolicyHashClearText
表示服务器将自动散列
使用olcpasswordhash以明文形式发送的任何密码
olcppolicydefault
在DIT中定义存储
可以设置其他设置的默认密码策略。条目
应该有objectClass:pwdpolicy
。其设置已记录在案
这里ou=策略中创建其他/不同的密码策略
树的一部分,并通过添加
pwdpolicysubentry将其附加到用户
属性,指向不同的策略。
olcppolicyUseLockout
指示服务器是否应返回
尝试时,无效凭据
(false
)提示绑定或accountlocked
(
true
)代替。此配置默认为false
能够使用此功能枚举帐户。
olcoverlay={3}唯一.ldif,olcdatabase={2}mdb,cn=config
uidnumber
,gidnumber
或家庭目录
olcuniqueuri
条目来创建约束:
LDAP://[基本DN]?[属性…]?范围[?过滤]
gidnumber
s,可以执行以下操作:
ldap:///?盖数?子< /代码>。不幸的是,这将强制执行
gidnumber
对posixAccount
和posixGroup
的约束,因此
能够创建posixAccount
并将gidNumber
设置为aposixGroup
s
gid,这是不可取的。而是这样做:VERSION=$(git rev-parse --abbrev-ref HEAD)
docker build --no-cache=true\
--build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')\
--build-arg COMMIT=$(git rev-parse HEAD)\
--build-arg VERSION=${VERSION}\
-t ldap:${VERSION} .
1
cn=schema.ldif,cn=config
olc
*对象类和属性。cn=*.ldif,cn=schema,cn=config
slapd.conf
使用模式的
include
语句,然后将其转储
使用slapdest-f/path/to/slapd.conf-f/path/to/slapd.d
推荐PyPI第三方库