第 5 章 配置基于时间的帐户锁定策略
您可以使用 Account Policy 插件配置不同的基于时间的锁定策略,例如:
5.1. 在最后成功登录后自动禁用帐户一定时间
按照以下步骤配置基于时间的锁定策略,该策略会在 dc=example,dc=com
条目下的用户中激活,且不能为超过 21 天登录。
此帐户不活动功能,例如,如果员工留有公司,并且管理员忘记删除帐户,而目录服务器在一定时间后激活帐户。
流程
启用帐户策略插件:
#
dsconf -D "cn=Directory Manager" ldap://server.example.com plugin account-policy enable
配置插件配置条目:
#
dsconf -D "cn=Directory Manager" ldap://server.example.com plugin account-policy config-entry set "cn=config,cn=Account Policy Plugin,cn=plugins,cn=config" --always-record-login yes --state-attr lastLoginTime --alt-state-attr 1.1 --spec-attr acctPolicySubentry --limit-attr accountInactivityLimit
这个命令使用以下选项:
-
--always-record-login yes
:启用登录时间的日志记录。这需要使用带帐户策略的类服务(CoS)或角色,即使它没有设置acctPolicySubentry
属性。 -
--state-attr lastLoginTime
:配置帐户策略插件会在用户的lastLoginTime
属性中存储最后一次登录时间。 -
--Alt-state-attr 1.1
:禁用使用替代属性来检查主属性是否不存在。默认情况下,Directory 服务器使用createTimestamp
属性作为替代方案。但是,这会导致如果其帐户没有设置lastLoginTime
属性并且createTimestamp
比配置的不活跃周期更旧,Directory 服务器会自动记录现有用户。禁用 alternative 属性会导致 Directory 服务器在下次登录时自动将lastLoginTime
属性添加到用户条目中。 -
--spec-attr acctPolicySubentry
: Configures Directory Server 应用策略到设置了acctPolicySubentry
属性的条目。您可以在 CoS 条目中配置此属性。 -
--limit-attr accountInactivityLimit
: Configures that theaccountInactivityLimit
属性 in inivation policy entry store the inactive time.
-
重启实例:
#
dsctl instance_name restart
创建激活策略条目的帐户:
#
ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x
dn: cn=Account Inactivation Policy,dc=example,dc=com objectClass: top objectClass: ldapsubentry objectClass: extensibleObject objectClass: accountpolicy accountInactivityLimit: 1814400 cn: Account Inactivation PolicyaccountInactivityLimit
属性中的值配置在最后一次登录后,目录服务器处于激活的1814400
秒(21 天)。创建 CoS 模板条目:
#
ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x
dn: cn=TemplateCoS,dc=example,dc=com objectClass: top objectClass: ldapsubentry objectClass: extensibleObject objectClass: cosTemplate acctPolicySubentry: cn=Account Inactivation Policy,dc=example,dc=com此模板条目引用帐户正在激活策略。
创建 CoS 定义条目:
#
ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x
dn: cn=DefinitionCoS,dc=example,dc=com objectClass: top objectClass: ldapsubentry objectclass: cosSuperDefinition objectclass: cosPointerDefinition cosTemplateDn: cn=TemplateCoS,dc=example,dc=com cosAttribute: acctPolicySubentry default operational-default此定义条目引用 CoS 模板条目,并导致
acctPolicySubentry
属性出现在每个用户条目中,值设为cn=Account Inactivation Policy,dc=example,dc=com
。
验证
将用户的
lastLoginTime
属性设置为早于您配置的不活跃时间的值:#
ldapmodify -H ldap://server.example.com -x -D "cn=Directory Manager" -W
dn: uid=example,ou=People,dc=example,dc=com changetype: modify replace: lastLoginTime lastLoginTime: 20210101000000Z尝试以这个用户身份连接到该目录:
#
ldapsearch -H ldap://server.example.com -x -D "uid=example,ou=People,dc=example,dc=com" -W -b "dc=example,dc=com"
ldap_bind: Constraint violation (19) additional info: Account inactivity limit exceeded. Contact system administrator to reset.如果目录服务器拒绝访问并返回这个错误,则帐户不活跃工作。
其他资源