Red Hat Training

A Red Hat training course is available for Red Hat Directory Server

19.9.2. アカウントアクティビティーとアカウントの有効期限

Account Policy プラグインを使用すると、以下を設定できます。
  • アカウントの有効期限: アカウントの作成後に一定時間無効になります。
  • アカウントの非アクティブ化: 最後にログインに成功してから一定時間が経過すると、アカウントが無効になります。これにより、未使用のアカウントを自動的に無効にできます。
無効にされたアカウントはログインできなくなります。
Account Policy プラグインを設定するには、以下を実行します。
  1. アカウントポリシープラグインを有効にします。
    # 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
  2. 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
  3. プラグイン設定エントリーを作成します。
    • アカウントポリシーで CoS またはロールを使用するには、alwaysRecordLogin の値を yes に設定します。これは、acctPolicySubentry 属性がない場合でも、すべてのエントリーにログイン時間が記録されることを意味します。
    • アカウントポリシー評価に使用するプライマリー属性を stateAttrName の値として設定します。アカウントの停止状態の場合は、lastLoginTime 属性を使用します。単純なアカウントの有効期限の場合は、createTimestamp 属性を使用します。
    • altStateAttrName にセカンダリー属性を設定できます。これは、stateAttrName で定義されたプライマリー属性が存在しない場合にチェックできます。属性を指定していない場合は、デフォルト値の createTimestamp が使用されます。
      警告
      プライマリー属性の値が lastLoginTimealtStateAttrNamecreateTimestamp に設定されていると、既存の環境のユーザーは、アカウントに 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
  4. サーバーを再起動して、新しいプラグイン設定を読み込みます。
    # systemctl start dirsrv.target
  5. アカウントポリシーを定義します。
    # 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: extensibleObject
    objectClass: accountpolicy
    accountInactivityLimit: 2592000
    cn: Account Inactivation Policy
  6. サービステンプレートエントリーのクラスを作成します。
    # 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 つのエントリーに複数のポリシーを適用することができます。
  7. サービス定義エントリーのクラスを作成します。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