19.9.2. アカウントアクティビティーとアカウントの有効期限
Account Policy
プラグインを使用すると、以下を設定できます。
- アカウントの有効期限: アカウントの作成後に一定時間無効になります。
- アカウントの非アクティブ化: 最後にログインに成功してから一定時間が経過すると、アカウントが無効になります。これにより、未使用のアカウントを自動的に無効にできます。
無効にされたアカウントはログインできなくなります。
Account Policy
プラグインを設定するには、以下を実行します。
- アカウントポリシープラグインを有効にします。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: cn=Account Policy Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
- nsslapd-pluginarg0 属性を、プラグイン設定エントリーを参照するように設定します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: cn=Account Policy Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginarg0 nsslapd-pluginarg0: cn=config,cn=Account Policy Plugin,cn=plugins,cn=config
- プラグイン設定エントリーを作成します。
- アカウントポリシーで CoS またはロールを使用するには、
alwaysRecordLogin
の値をyes
に設定します。これは、acctPolicySubentry
属性がない場合でも、すべてのエントリーにログイン時間が記録されることを意味します。 - アカウントポリシー評価に使用するプライマリー属性を
stateAttrName
の値として設定します。アカウントの停止状態の場合は、lastLoginTime
属性を使用します。単純なアカウントの有効期限の場合は、createTimestamp
属性を使用します。 altStateAttrName
にセカンダリー属性を設定できます。これは、stateAttrName
で定義されたプライマリー属性が存在しない場合にチェックできます。属性を指定していない場合は、デフォルト値のcreateTimestamp
が使用されます。警告プライマリー属性の値がlastLoginTime
とaltStateAttrName
でcreateTimestamp
に設定されていると、既存の環境のユーザーは、アカウントにlastLoginTime
属性がなく、設定した非アクティブ期間よりもcreateTimestamp
が古い場合に、既存の環境のユーザーは自動的にロックされます。この状況に対処するには、代替属性を1.1
に設定します。これは、代替として属性を使用しないことを明示します。lastLoginTime
属性は、ユーザーが次回ログインした後に自動的に作成されます。- アカウントポリシーを適用するエントリーを表示するのに使用する属性を設定します (
acctPolicySubentry
)。 - 実際のタイムアウト期間の設定に使用されるアカウントポリシーの属性を秒単位で設定します (
accountInactivityLimit
)。
# ldapmodify
-a
-D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: cn=config,cn=Account Policy Plugin,cn=plugins,cn=config objectClass: top objectClass: extensibleObject cn: config alwaysRecordLogin: yes stateAttrName: lastLoginTime altStateAttrName: 1.1 specattrname: acctPolicySubentry limitattrname: accountInactivityLimit - サーバーを再起動して、新しいプラグイン設定を読み込みます。
# systemctl start dirsrv.target
- アカウントポリシーを定義します。
# ldapmodify
-a
-D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: cn=Account Inactivation Policy,dc=example,dc=com objectClass: top objectClass: ldapsubentry objectClass: extensibleObjectobjectClass: accountpolicy
accountInactivityLimit: 2592000
cn: Account Inactivation Policy - サービステンプレートエントリーのクラスを作成します。
# ldapmodify
-a
-D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: cn=TempltCoS,dc=example,dc=com objectClass: top objectClass: ldapsubentry objectClass: extensibleObject objectClass: cosTemplate acctPolicySubentry: cn=Account Inactivation Policy,dc=example,dc=comアカウントポリシーは、CoS を使用する代わりに、ユーザーエントリーで直接定義できます。しかし、CoS を使用することで、複数のエントリーに対して確実にアカウントポリシーを適用および更新することができ、1 つのエントリーに複数のポリシーを適用することができます。 - サービス定義エントリーのクラスを作成します。CoS の管理エントリーは、アカウントポリシーの属性
acctPolicySubentry
です。この例では、CoS をディレクトリーツリー全体に適用します。# ldapmodify
-a
-D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: cn=DefnCoS,dc=example,dc=com objectClass: top objectClass: ldapsubentry objectclass: cosSuperDefinition objectclass: cosPointerDefinition cosTemplateDn: cn=TempltCoS,dc=example,dc=com cosAttribute: acctPolicySubentry default operational-default