Sun Java System Directory Server Enterprise Edition 6.3 관리 설명서

특수 비밀번호 정책 관리

특수 비밀번호 정책은 pwdPolicy(5dsoc) 항목에 정의됩니다. 정책은 디렉토리 트리 내의 임의의 위치(일반적으로 정책이 제어하는 계정으로 복제되는 하위 트리 내)에 정의될 수 있습니다. 정책은 cn= policy name,subtree 형태의 DN이 있습니다.

비밀번호 정책을 정의한 후 원하는 사용자 항목에서 pwdPolicySubentry(5dsat) 속성을 설정하여 비밀번호 정책을 할당합니다.

이 절은 다음 내용으로 구성되어 있습니다.

적용되는 비밀번호 정책

디렉토리 서버에서는 여러 비밀번호 정책을 구성할 수 있습니다. 이 절에서는 기본 비밀번호 정책과 특수 비밀번호 정책에 대해 설명합니다. 또한 지정된 계정에 여러 비밀번호 정책을 적용할 수 있는 경우 적용되는 정책에 대해 설명합니다.

디렉토리 서버 인스턴스를 처음 만들면 해당 인스턴스에 기본 비밀번호 정책이 적용됩니다. 기본 비밀번호 정책은 cn=PasswordPolicy,cn=config 구성 항목에 설명되어 있습니다. 기본 비밀번호 정책은 디렉토리 관리자를 제외한 디렉토리 내의 모든 계정에 적용됩니다.

모든 디렉토리 서버 비밀번호 정책과 마찬가지로 cn=PasswordPolicy,cn=config에는 pwdPolicy(5dsoc) 객체 클래스 및 sunPwdPolicy(5dsoc) 객체 클래스가 있습니다.


주 –

디렉토리 서버 인스턴스를 만들면 비밀번호 정책 속성이 이전 버전으로부터 업그레이드할 수 있도록 Directory Server 5 호환 모드 그대로 유지됩니다. 또한 Directory Server 5 호환 모드에서 디렉토리 서버는 passwordPolicy(5dsoc) 객체 클래스가 있는 비밀번호 정책 항목을 처리합니다.

업그레이드가 완료되면 Sun Java System Directory Server Enterprise Edition 6.3 Migration Guide에 설명된 것처럼 정식 모드에서 새 비밀번호 정책을 사용합니다. 관리 모드는 디렉토리 응용 프로그램에 투명하게 처리됩니다.

이 장에서는 새 비밀번호 정책 기능을 사용하는 비밀번호 정책 구성에 대해 설명합니다.


기본 비밀번호 정책을 변경하여 기본 설정을 무시할 수 있습니다. dsconf(1M) 명령을 사용하여 기본 비밀번호 정책에 대한 서버 등록 정보를 설정할 수 있습니다. 해당 서버 등록 정보의 이름은 일반적으로 pwd- 접두어로 시작합니다. 해당 등록 정보의 설정을 변경하면 인스턴스에 대한 기본 비밀번호 정책이 무시됩니다. 그러나 복제를 수행해도 복제본에 대한 변경 사항이 복사되지는 않습니다. 기본 비밀번호 정책에 대한 변경 사항은 디렉토리 데이터가 아닌 인스턴스 구성의 일부입니다.

기본 비밀번호 정책 구성 이외에 특수 비밀번호 정책을 구성할 수도 있습니다. 특수 비밀번호 정책은 디렉토리 트리의 항목에 정의됩니다. 특수 비밀번호 정책 항목은 기본 비밀번호 정책과 동일한 객체 클래스인 pwdPolicy(5dsoc)가 있으므로 정책 속성은 동일합니다. 특수 비밀번호 정책은 일반 디렉토리 항목이므로 정책 항목은 일반 디렉토리 항목과 동일한 방법으로 복제됩니다.

사용자 항목은 pwdPolicySubentry(5dsat) 작동 가능 속성 값을 통해 특수 비밀번호 정책을 참조합니다. 사용자 항목에서 참조하는 특수 비밀번호 정책은 인스턴스에 대한 기본 비밀번호 정책을 무시합니다. 사용자는 다양한 배포에서 사용자 역할을 할당합니다. pwdPolicySubentry 값을 설정하여 서비스 클래스(CoS)를 통해 사용자 계정에 적용되는 비밀번호 정책을 결정하도록 역할을 구성할 수 있습니다. 특정 역할에서 설정된 비밀번호 정책을 무시하려면 해당 사용자 항목에서 pwdPolicySubentry 값을 직접 변경합니다.

이 절을 요약하면 처음에는 기본 비밀번호 정책이 적용됩니다. 기본 비밀번호 정책을 변경하여 기본값을 무시할 수 있습니다. 그런 다음 특수 비밀번호 정책 항목을 만들어 기본 비밀번호 정책을 무시할 수 있습니다. 역할 및 CoS를 사용하여 비밀번호 정책을 할당할 경우 개별 항목에 대한 비밀번호 정책을 지정함으로써 CoS에서 할당된 정책을 무시할 수 있습니다.

Procedure비밀번호 정책을 만드는 방법

다른 디렉토리 항목의 경우와 동일한 방법으로 특수 비밀번호 정책을 만들고 수정합니다. 텍스트 편집기를 사용하여 LDIF에 비밀번호 정책 항목을 쓰는 절차는 다음과 같습니다. 그런 다음 ldapmodify 명령을 -a 옵션과 함께 사용하여 디렉토리에 비밀번호 정책 항목을 추가합니다.

DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

시작하기 전에

별도로 명시하지 않는 한 여기에 표시된 데이터 예는 Example.ldif에서 가져온 것입니다.

  1. 만들려는 정책에 해당하는 비밀번호 정책 워크시트를 완료하십시오.

    샘플은 비밀번호 정책 정의 워크시트를 참조하십시오.

  2. 워크시트를 기반으로 LDIF에 비밀번호 정책 항목을 작성합니다.

    예를 들어 다음 정책 항목은 하위 트리 루트가 dc=example,dc=com인 Example.com의 임시 직원에 대한 비밀번호 정책을 지정합니다.

    dn: cn=TempPolicy,dc=example,dc=com
    objectClass: top
    objectClass: pwdPolicy
    objectClass: sunPwdPolicy
    objectClass: LDAPsubentry
    cn: TempPolicy
    pwdAttribute: userPassword
    pwdCheckQuality: 2
    pwdLockout: TRUE
    pwdLockoutDuration: 300
    pwdMaxFailure: 3
    pwdMustChange: TRUE

    기본 비밀번호 정책 설정 이외에 여기에 표시된 정책은 추가 동작을 지정합니다. 비밀번호 품질 검사가 시행됩니다. 연속 세 번의 바인드 실패 후 5분(300초) 동안 계정을 잠급니다. 비밀번호를 재설정하고 나면 비밀번호를 변경해야 합니다. 정책을 사용자 계정에 할당하면 여기에 명시적으로 지정된 설정은 기본 비밀번호 정책을 무시합니다.

  3. 디렉토리에 비밀번호 정책 항목을 추가합니다.

    예를 들어 다음 명령은 dc=example,dc=com 아래에 Example.com의 임시 직원에 대한 비밀번호 정책을 추가합니다. 비밀번호 정책이 pwp.ldif라는 파일로 저장되었습니다.


    $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f pwp.ldif
    Enter bind password: 
    adding new entry cn=TempPolicy,dc=example,dc=com
    
    $ ldapsearch -D uid=kvaughan,ou=people,dc=example,dc=com -w --b dc=example,dc=com \
    "(&(objectclass=ldapsubentry)(cn=temppolicy))"
    Enter bind password:
    version: 1
    dn: cn=TempPolicy,dc=example,dc=com
    objectClass: top
    objectClass: pwdPolicy
    objectClass: LDAPsubentry
    cn: TempPolicy
    pwdCheckQuality: 2
    pwdLockout: TRUE
    pwdLockoutDuration: 300
    pwdMaxFailure: 3
    pwdMustChange: TRUE
    $

    Example.ldif에 표시된 것처럼 kvaughandc=example,dc=com 항목 수정 액세스 권한이 있는 Human Resources 관리자입니다. Example.ldif에 표시된 것처럼 Vaughan의 바인드 비밀번호는 bribery입니다.

참조

정의된 정책이 적용되는 사용자 계정을 정의하려면 개인 계정에 비밀번호 정책을 할당하는 방법 또는 역할 및 CoS를 사용하여 비밀번호 정책을 할당하는 방법을 참조하십시오.

Procedure개인 계정에 비밀번호 정책을 할당하는 방법

이 절차에서는 단일 사용자 계정에 기존 비밀번호 정책을 할당합니다.


주 –

이 절차를 완료하려면 할당할 특수 비밀번호 정책이 있어야 합니다. 비밀번호 정책을 만드는 방법을 참조하십시오.


DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

별도로 명시하지 않는 한 여기에 표시된 데이터 예는 Example.ldif에서 가져온 것입니다.

  1. 사용자 항목의 pwdPolicySubentry 속성 값에 비밀번호 정책 DN을 추가합니다.

    예를 들어 다음 명령은 비밀번호 정책을 만드는 방법에 정의된 비밀번호 정책을 DN이 uid=dmiller,ou=people,dc=example,dc=com인 David Miller의 항목에 할당합니다.


    $ cat pwp.ldif 
    dn: uid=dmiller,ou=people,dc=example,dc=com
    changetype: modify
    add: pwdPolicySubentry
    pwdPolicySubentry: cn=TempPolicy,dc=example,dc=com
    
    $ ldapmodify -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f pwp.ldif 
    Enter bind password: 
    modifying entry uid=dmiller,ou=people,dc=example,dc=com
    
    $ ldapsearch -D uid=kvaughan,ou=people,dc=example,dc=com -w - -b dc=example,dc=com \
    "(uid=dmiller)" pwdPolicySubentry
    Enter bind password:
    version: 1
    dn: uid=dmiller, ou=People, dc=example,dc=com
    pwdPolicySubentry: cn=TempPolicy,dc=example,dc=com
    $

    Example.ldif에 표시된 것처럼 kvaughandc=example,dc=com 항목 수정 액세스 권한이 있는 Human Resources 관리자입니다. Example.ldif에 표시된 것처럼 Vaughan의 바인드 비밀번호는 bribery입니다.

Procedure역할 및 CoS를 사용하여 비밀번호 정책을 할당하는 방법

이 절차에서는 역할 및 서비스 클래스(CoS)를 적용하여 기존의 특수 비밀번호 정책을 사용자 집합에 할당합니다. 역할 및 CoS에 대한 자세한 내용은 10 장, 디렉토리 서버 그룹, 역할 및 CoS를 참조하십시오.


주 –

이 절차를 완료하려면 할당할 특수 비밀번호 정책이 있어야 합니다. 비밀번호 정책을 만드는 방법을 참조하십시오.


DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

별도로 명시하지 않는 한 여기에 표시된 데이터 예는 Example.ldif에서 가져온 것입니다.

  1. 비밀번호 정책을 적용할 항목에 대한 역할을 만듭니다.

    예를 들어 다음 명령은 Example.com의 임시 직원에 대한 필터링된 역할을 만듭니다.


    $ cat tmp.ldif
    dn: cn=TempFilter,ou=people,dc=example,dc=com
    objectclass: top
    objectclass: LDAPsubentry
    objectclass: nsRoleDefinition
    objectclass: nsComplexRoleDefinition
    objectclass: nsFilteredRoleDefinition
    cn: TempFilter
    nsRoleFilter: (&(objectclass=person)(status=contractor))
    description: filtered role for temporary employees
    
    $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f tmp.ldif
    Enter bind password: 
    modifying entry cn=TempFilter,ou=people,dc=example,dc=com
    
    $

    Example.ldif에 표시된 것처럼 kvaughandc=example,dc=com 항목 수정 액세스 권한이 있는 Human Resources 관리자입니다. Example.ldif에 표시된 것처럼 Vaughan의 바인드 비밀번호는 bribery입니다.

  2. 비밀번호 정책 항목의 DN을 생성할 서비스 클래스를 만듭니다.

    DN은 사용자가 만든 역할이 있는 사용자의 pwdPolicySubentry 속성 값입니다.

    예를 들어 다음 명령은 Example.com의 임시 직원에 대한 필터링된 역할을 만듭니다. 다음 명령은 cn=TempPolicy,dc=example,dc=com을 역할이 있는 사용자에게 할당합니다.


    $ cat cos.ldif
    dn: cn=PolTempl,dc=example,dc=com
    objectclass: top
    objectclass: nsContainer
    
    dn: cn="cn=TempFilter,ou=people,dc=example,dc=com",
     cn=PolTempl,dc=example,dc=com
    objectclass: top
    objectclass: extensibleObject
    objectclass: LDAPsubentry
    objectclass: costemplate
    cosPriority: 1
    pwdPolicySubentry: cn=TempPolicy,dc=example,dc=com
    
    dn: cn=PolCoS,dc=example,dc=com
    objectclass: top
    objectclass: LDAPsubentry
    objectclass: cosSuperDefinition
    objectclass: cosClassicDefinition
    cosTemplateDN: cn=PolTempl,dc=example,dc=com
    cosSpecifier: nsRole
    cosAttribute: pwdPolicySubentry operational
    
    $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f cos.ldif
    Enter bind password: 
    modifying entry cn=TempFilter,ou=people,dc=example,dc=com
    
    $

    상태가 contractor인 사용자는 이제 cn=TempPolicy,dc=example,dc=com 비밀번호 정책에 적용됩니다.

Procedure첫 번째 로그인 비밀번호 정책을 설정하는 방법

대부분의 배포에서 새 계정에 적용할 비밀번호 정책은 설정된 계정에 적용할 비밀번호 정책과 다릅니다. 이 절에서는 첫 번째 로그인 비밀번호 정책에 대해 설명합니다. 이 정책은 사용자에게 새로 만든 계정을 3일 동안 사용하여 계정이 잠기기 전에 새 비밀번호를 설정할 수 있도록 허용합니다. 이 정책은 비밀번호를 재설정한 사용자의 경우와 동일하게 적용됩니다.

DSCC를 사용하여 이 작업을 수행할 수 없습니다. 이 절차에 설명된 것처럼 명령줄을 사용하십시오.

  1. 새로 만든 계정에 대해 특수 비밀번호 정책을 만듭니다.

    예를 들어 만료 시간을 3일(259,200초)로 설정하는 비밀번호 정책 항목을 추가합니다. 또한 이 비밀번호 정책에서는 pwdMustChange(5dsat)TRUE로 설정되어 있습니다. 즉, 사용자가 처음 바인드할 때 비밀번호를 변경해야 합니다.


    $ cat firstLogin.ldif
    dn: cn=First Login,dc=example,dc=com
    objectClass: top
    objectClass: LDAPsubentry
    objectClass: pwdPolicy
    objectClass: sunPwdPolicy
    cn: First Login
    passwordStorageScheme: SSHA
    pwdAttribute: userPassword
    pwdInHistory: 0
    pwdExpireWarning: 86400
    pwdLockout: TRUE
    pwdMinLength: 6
    pwdMaxFailure: 3
    pwdMaxAge: 259200
    pwdFailureCountInterval: 600
    pwdAllowUserChange: TRUE
    pwdLockoutDuration: 3600
    pwdMinAge: 0
    pwdCheckQuality: 2
    pwdMustChange: TRUE
    
    $ ldapmodify -a -D cn=admin,cn=Administrators,cn=config -w - -f firstLogin.ldif
    Enter bind password: 
    adding new entry cn=First Login,dc=example,dc=com
    
    $
  2. 새로 만든 모든 계정을 포함하는 역할을 만듭니다.

    이 역할을 만들 때 새로 만든 계정을 설정된 계정과 구분하는 몇 가지 방법을 설정합니다.

    1. 새 계정의 pwdReset(5dsat) 속성을 TRUE로 설정합니다.

      비밀번호 관리자와 같은 다른 사용자가 사용자의 비밀번호를 변경하면 pwdResetTRUE로 설정됩니다.

    2. 새 계정을 식별하는 역할을 만듭니다.

      예를 들어 다음 명령은 비밀번호를 재설정한 계정에 대한 역할을 만듭니다.


      $ cat newRole.ldif 
      dn: cn=First Login Role,ou=people,dc=example,dc=com
      objectclass: top
      objectclass: LDAPsubentry
      objectclass: nsRoleDefinition
      objectclass: nsComplexRoleDefinition
      objectclass: nsFilteredRoleDefinition
      cn: First Login Role
      nsRoleFilter: (pwdReset=TRUE)
      description: Role to assign password policy for new and reset accounts
      
      $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f newRole.ldif
      Enter bind password: 
      adding new entry cn=First Login Role,ou=people,dc=example,dc=com
      
      $ 
  3. 서비스 클래스를 사용하여 새로 만든 계정에 대한 비밀번호 정책을 할당합니다.


    $ cat newCoS.ldif 
    dn: cn=First Login Template,dc=example,dc=com
    objectClass: top
    objectClass: nsContainer
    
    dn: cn="cn=First Login Role,ou=people,dc=example,dc=com",
     cn=First Login Template,dc=example,dc=com
    objectClass: top
    objectClass: extensibleObject
    objectClass: LDAPSubEntry
    objectClass: CoSTemplate
    cosPriority: 1
    pwdPolicySubentry: cn=First Login,dc=example,dc=com
    
    dn: cn=First Login CoS,dc=example,dc=com
    objectClass: top
    objectClass: LDAPSubEntry
    objectClass: CoSSuperDefinition
    objectClass: CoSClassicDefinition
    cosTemplateDN: cn=First Login Template,dc=example,dc=com
    cosSpecifier: nsRole
    cosAttribute: pwdPolicySubentry operational
    
    $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -f newCoS.ldif
    Enter bind password: 
    adding new entry cn=First Login Template,dc=example,dc=com
    
    adding new entry cn="cn=First Login Role,ou=people,dc=example,dc=com",
     cn=First Login Template,dc=example,dc=com
    
    adding new entry cn=First Login CoS,dc=example,dc=com
    
    $

예 8–1 비밀번호 정책 할당 검사

추가한 역할에 맞는 새 사용자를 추가합니다. 사용자를 추가하여 새 비밀번호 정책이 새 사용자에게는 적용되고 기존 사용자에게는 적용되지 않는지를 확인합니다.


$ cat quentin.ldif
dn: uid=qcubbins,ou=People,dc=example,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
uid: qcubbins
givenName: Quentin
sn: Cubbins
cn: Quentin Cubbins
mail: quentin.cubbins@example.com
userPassword: ch4ngeM3!
description: New account

$ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f quentin.ldif
Enter bind password: 
adding new entry uid=qcubbins,ou=People,dc=example,dc=com

$ ldapsearch -D uid=kvaughan,ou=people,dc=example,dc=com -w - \
-b dc=example,dc=com uid=qcubbins nsrole pwdPolicySubentry
Enter bind password:
version: 1
dn: uid=qcubbins,ou=People,dc=example,dc=com
nsrole: cn=first login role,ou=people,dc=example,dc=com
pwdPolicySubentry: cn=First Login,dc=example,dc=com
$ ldapsearch -b dc=example,dc=com uid=bjensen nsrole pwdPolicySubentry
version: 1
dn: uid=bjensen, ou=People, dc=example,dc=com
$ 

Barbara Jensen의 기존 계정에는 기본 비밀번호 정책이 적용됩니다. 그러나 Quentin Cubbins의 새 계정에는 정의된 비밀번호 정책이 적용됩니다.