2.6. 時間ベースのアカウントロックアウトポリシーの設定
アカウントポリシープラグインを使用して、次のようなさまざまな時間ベースのロックアウトポリシーを設定できます。
2.6.1. 最後に成功したログインで一定時間アカウントを自動的に無効にする リンクのコピーリンクがクリップボードにコピーされました!
この手順に従って、21 日を超えてもログインしない dc=example,dc=com エントリーの下のユーザーを非アクティブ化する時間ベースのロックアウトポリシーを設定します。
このアカウント非アクティブ機能は、たとえば、従業員が会社を辞め、管理者がアカウントの削除を忘れた場合に、Directory Server が一定時間後にアカウントを非アクティブ化することを保証します。
手順
アカウントポリシープラグインを有効にします。
# dsconf <instance_name> plugin account-policy enableプラグイン設定エントリーを設定します。
# dsconf <instance_name> 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: ログイン時間のログを有効にします。これは、acctPolicySubentry属性が設定されていない場合でも、サービスクラス (CoS) またはアカウントポリシーを持つロールを使用するために必要です。 -
--state-attr lastLoginTime: アカウントポリシープラグインがユーザーのlastLoginTime属性に最終ログイン時刻を保存するように設定します。 -
--alt-state-attr 1.1: 代替属性を使用してプライマリー属性が存在しないかどうかをチェックすることを無効にします。デフォルトでは、Directory Server は代わりにcreateTimestamp属性を使用します。ただし、これにより、アカウントにlastLoginTime属性が設定されておらず、createTimestampが設定された非アクティブ期間よりも古い場合、Directory Server は既存のユーザーを自動的にログアウトします。代替属性を無効にすると、Directory Server は、ユーザーが次回ログインするときに、lastLoginTime属性をユーザーエントリーに自動的に追加します。 -
--spec-attr acctPolicySubentry:acctPolicySubentry属性が設定されているエントリーにポリシーを適用するように Directory Server を設定します。この属性は、CoS エントリーで設定します。 -
--limit-attr accountInactivityLimit: アカウント非アクティブ化ポリシーエントリーのaccountInactivityLimit属性が非アクティブ時間を保存するように設定します。
-
インスタンスを再起動します。
# 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属性の値は、Directory Server が最後のログインから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.Directory Server がアクセスを拒否してこのエラーを返した場合、アカウントの非アクティブが機能します。
2.6.2. アカウントを作成してから一定時間、アカウントを自動的に無効にする リンクのコピーリンクがクリップボードにコピーされました!
次の手順に従って、dc=example,dc=com エントリーのアカウントが管理者が作成してから 60 日後に期限切れになるように設定します。
たとえば、アカウントの有効期限機能を使用して、外部ワーカーのアカウントが作成されてから一定時間ロックされるようにします。
手順
アカウントポリシープラグインを有効にします。
# dsconf <instance_name> plugin account-policy enableプラグイン設定エントリーを設定します。
# dsconf <instance_name> plugin account-policy config-entry set "cn=config,cn=Account Policy Plugin,cn=plugins,cn=config" --always-record-login yes --state-attr createTimestamp --alt-state-attr 1.1 --spec-attr acctPolicySubentry --limit-attr accountInactivityLimitコマンドは、以下のオプションを使用します。
-
--always-record-login yes: ログイン時間のログを有効にします。これは、acctPolicySubentry属性が設定されていない場合でも、サービスクラス (CoS) またはアカウントポリシーを持つロールを使用するために必要です。 -
--state-attr createTimestamp: アカウントポリシープラグインがcreateTimestamp属性の値を使用して、アカウントの有効期限が切れているかどうかを計算するように設定します。 -
--alt-state-attr 1.1: 代替属性を使用してプライマリー属性が存在しないかどうかをチェックすることを無効にします。 -
--spec-attr acctPolicySubentry:acctPolicySubentry属性が設定されているエントリーにポリシーを適用するように Directory Server を設定します。この属性は、CoS エントリーで設定します。 -
--limit-attr accountInactivityLimit: アカウントの有効期限ポリシーエントリーのaccountInactivityLimit属性に最大有効期間が格納されるように設定します。
-
インスタンスを再起動します。
# dsctl <instance_name> restartアカウントの有効期限ポリシーエントリーを作成します。
# ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x dn: cn=Account Expiration Policy,dc=example,dc=com objectClass: top objectClass: ldapsubentry objectClass: extensibleObject objectClass: accountpolicy accountInactivityLimit: 5184000 cn: Account Expiration PolicyaccountInactivityLimit属性の値は、アカウントが作成されてから5184000秒 (60 日) 後に期限切れになるように設定します。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 Expiration 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 Expiration Policy,dc=example,dc=comに設定されます。
検証
createTimestamp属性が 60 日以上前の値に設定されているdc=example,dc=comエントリーに格納されているユーザーとして、ディレクトリーに接続してみてください。# ldapsearch -H ldap://server.example.com -x -D "uid=example,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.Directory Server がアクセスを拒否してこのエラーを返した場合、アカウントの有効期限が機能します。
2.6.3. パスワードの有効期限が切れてから一定時間アカウントを自動的に無効にする リンクのコピーリンクがクリップボードにコピーされました!
この手順に従って、28 日を超えてパスワードを変更しない dc=example,dc=com エントリーの下のユーザーを非アクティブ化する時間ベースのロックアウトポリシーを設定します。
前提条件
-
ユーザーは、エントリーに
passwordExpirationTime属性を設定する必要があります。
手順
パスワードの有効期限機能を有効にします。
# dsconf <instance_name> config replace passwordExp=onアカウントポリシープラグインを有効にします。
# dsconf <instance_name> plugin account-policy enableプラグイン設定エントリーを設定します。
# dsconf <instance_name> plugin account-policy config-entry set "cn=config,cn=Account Policy Plugin,cn=plugins,cn=config" --always-record-login yes --always-record-login-attr lastLoginTime --state-attr non_existent_attribute --alt-state-attr passwordExpirationTime --spec-attr acctPolicySubentry --limit-attr accountInactivityLimitコマンドは、以下のオプションを使用します。
-
--always-record-login yes: ログイン時間のログを有効にします。これは、acctPolicySubentry属性が設定されていない場合でも、サービスクラス (CoS) またはアカウントポリシーを持つロールを使用するために必要です。 -
--always-record-login-attr lastLoginTime: アカウントポリシープラグインがユーザーのlastLoginTime属性に最終ログイン時刻を保存するように設定します。 -
--state-attr non_existent_attribute: アカウントポリシーの評価に使用されるプライマリー時間属性を、存在しないダミー属性名に設定します。 -
--alt-state-attr `passwordExpirationTime: チェックする代替属性としてpasswordExpirationTime属性を使用するようにプラグインを設定します。 -
--spec-attr acctPolicySubentry:acctPolicySubentry属性が設定されているエントリーにポリシーを適用するように Directory Server を設定します。この属性は、CoS エントリーで設定します。 -
--limit-attr accountInactivityLimit: アカウントポリシーエントリーのaccountInactivityLimit属性に、最後にパスワードを変更した後にアカウントが非アクティブ化された時刻を保存するように設定します。
-
インスタンスを再起動します。
# 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: 2419200 cn: Account Inactivation PolicyaccountInactivityLimit属性の値は、パスワードが変更されてから2419200秒 (28 日) 後に Directory Server がアカウントを非アクティブ化するように設定します。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が設定されます。
検証
ユーザーの
passwordExpirationTime属性を、設定した非アクティブ時間よりも古い値に設定します。# ldapmodify -H ldap://server.example.com -x -D "cn=Directory Manager" -W dn: uid=example,ou=People,dc=example,dc=com changetype: modify replace: passwordExpirationTime passwordExpirationTime: 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.Directory Server がアクセスを拒否してこのエラーを返した場合、アカウントの非アクティブが機能します。
2.6.4. アカウントのステータス (アクティブかどうか) とパスワードの有効期限の両方でアカウントを自動的に無効にする リンクのコピーリンクがクリップボードにコピーされました!
checkAllStateAttrs 設定を使用してユーザーの認証時に、アカウントのステータス (アクティブかどうか)、またパスワードの有効期限の両方を適用できます。デフォルトでは、プラグイン設定エントリーに checkAllStateAttrs が存在しない場合、またはこのパラメーターを no に設定した場合、プラグインは状態属性 lastLoginTime をチェックします。属性がエントリーに存在しない場合には、プラグインは別の状態属性をチェックします。
プラグインが passwordExpirationtime 属性に基づいて有効期限を処理するようにする場合は、メインの状態属性を存在しない属性に設定し、別の状態属性を passwordExpirationtime に設定できます。このパラメーターを有効にすると、主な状態属性をチェックし、アカウントに問題がある場合は、別の状態属性を確認します。
これは、passwordExpirationtime がアクティブではない期間の制限を超えると、アカウントポリシープラグインがアカウントを完全に無効にするという点で、パスワードポリシーのパスワード有効期限とは異なります。パスワードポリシーの有効期限が切れても、ユーザーは引き続きログインしてパスワードを変更できます。アカウントポリシープラグインはユーザーの操作を完全にブロックするため、管理者はアカウントをリセットする必要があります。
手順
プラグイン設定エントリーを作成し、設定を有効にします。
# dsconf <instance_name> 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 --check-all-state-attrs yesサーバーを再起動して、新しいプラグイン設定を読み込みます。
# dsctl <instance_name> restart警告checkAllStateAttrs設定は、別の state 属性がpasswordExpiratontimeに設定されている場合にのみ機能するように設計されています。これをcreateTimestampに設定すると、予想外の結果が発生し、エントリーがロックアウトされる可能性があります。