Sun Java System Web Server 7.0 Update 3 관리자 설명서

8장 사용자 및 그룹 관리

이 장에서는 서버에 액세스할 수 있는 사용자 및 그룹을 추가, 삭제 및 편집하는 방법에 대해 설명합니다.

사용자 및 그룹에 대한 정보 액세스

Administration Server에서는 사용자 계정, 그룹 목록, 액세스 권한(ACL), 조직 단위 및 기타 사용자별 및 그룹별 정보에 대한 응용 프로그램 데이터에 액세스할 수 있습니다.

사용자 및 그룹 정보는 일반 파일에 텍스트 형식으로 저장되거나 LDAP(Lightweight Directory Access Protocol)를 지원하는 Sun Java System Directory Server와 같은 디렉토리 서버에 저장됩니다. LDAP는 개방형 디렉토리 액세스 프로토콜로 TCP/IP를 통해 실행되며 전역 규모의 수백만 항목을 수용하도록 확장될 수 있습니다.

디렉토리 서비스 정보

Sun Java System Directory Server와 같은 디렉토리 서버를 사용하면 단일 응용 프로그램에서 모든 사용자 정보를 관리할 수 있습니다. 또한 사용자가 쉽게 액세스할 수 있는 여러 네트워크 위치에서 디렉토리 정보를 검색할 수 있도록 디렉토리 서버를 구성할 수 있습니다.

Web Server 7.0에서는 서로 다른 세 가지 유형의 디렉토리 서비스를 구성하여 사용자 및 그룹을 인증하고 권한을 부여할 수 있습니다. 다른 디렉토리 서비스가 구성되어 있지 않은 경우 새로 만드는 디렉토리 서비스의 값은 유형에 관계없이 default로 설정됩니다.

디렉토리 서비스를 만들면 디렉토리 서비스 세부 정보로 server.xml 파일이 업데이트됩니다.

디렉토리 서비스 유형

Web Server 7.0이 지원하는 여러 디렉토리 서비스 유형은 다음과 같습니다.


주 –

분산 관리를 설정하려는 경우 기본 디렉토리 서비스는 LDAP 기반 디렉토리 서비스여야 합니다.


DN(Distinguished Name) 이해

사용자는 회사 직원과 같이 LDAP 데이터베이스에 있는 개인입니다. 그룹은 공통 속성을 공유하는 둘 이상의 사용자입니다. 조직 단위는 회사 내의 하위 부서입니다.

기업의 각 사용자와 그룹은 고유 이름(DN) 속성으로 나타냅니다. DN 속성은 연결된 사용자, 그룹 또는 객체에 대한 식별 정보가 있는 문자열입니다. 사용자 또는 그룹 디렉토리 항목을 변경하는 경우 항상 DN을 사용합니다. 예를 들어 디렉토리 항목 작성 또는 수정, 액세스 제어 설정, 메일이나 게시 등의 응용 프로그램에 대한 사용자 계정 설정과 같은 작업을 할 때 항상 DN 정보를 지정해야 합니다.

Web Server

위 그림은 샘플 DN 표현을 나타냅니다. 다음 예는 전형적인 Sun Microsystems 직원의 DN을 나타냅니다.

uid=doe,e=doe@sun.com,cn=John Doe,o=Sun Microsystems Inc.,c=US

이 예에서 각 등호(=) 앞의 약자는 다음을 의미합니다.

DN에는 다양한 이름 값 쌍이 있을 수 있습니다. 이는 LDAP를 지원하는 디렉토리의 인증서 개체 및 항목을 확인하는 데 사용됩니다.

LDIF 사용

현재 디렉토리가 없는 경우나 기존 디렉토리에 새 하위 트리를 추가하려는 경우에는 Directory Server의 Administration Server LDIF 가져오기 기능을 사용할 수 있습니다. 이 기능은 LDIF가 포함된 파일을 받아서 LDIF 항목에서 디렉토리를 구축하거나 새 하위 트리를 만듭니다. Directory Server의 LDIF 내보내기 기능을 사용하여 현재 디렉토리를 LDIF로 내보낼 수도 있습니다. 이 기능은 디렉토리를 나타내는 LDIF 형식의 파일을 만듭니다. ldapmodify 명령과 적절한 LDIF 업데이트문을 함께 사용하여 항목을 추가 또는 편집합니다.

LDIF를 사용하여 데이터베이스에 항목을 추가하려면 먼저 LDIF 파일에서 항목을 정의한 다음 Directory Server에서 LDIF 파일을 가져옵니다.

인증 데이터베이스 작업

auth-db라고도 하는 인증 데이터베이스는 알려진 사용자의 데이터베이스와 해당 데이터베이스에 대해 클라이언트 요청을 인증하기 위해 사용되는 기법을 나타냅니다. 서버에는 동시에 여러 개의 auth-db 항목이 구성될 수 있으며, 구성된 항목들의 유형이 같을 수도 있습니다. auth-db 사용자 데이터베이스는 ACL 처리 모듈에서 사용됩니다.

서버에서는 다음 인증 데이터베이스를 사용할 수 있습니다.

  1. LDAP — 사용자 데이터는 Sun Java System Directory Server와 같은 LDAP 디렉토리 서버에 저장됩니다.

  2. 파일 — 사용자 데이터는 디스크 파일에 저장됩니다. 이 auth-db는 중앙 집중식 사용자 관리를 사용할 수 없는(또는 바람직하지 않은) 개발 또는 소규모 배포의 경우 특히 편리합니다. 파일 auth-db에서는 다양한 파일 형식을 지원합니다.

    1. keyfile — keyfile 형식은 사용자 목록(및 각 사용자의 선택 그룹 구성원)을 저장합니다. 비밀번호는 단방향(복구할 수 없음) 해시로 저장됩니다. 이 형식이 기본 형식입니다.

    2. digestfile — digestfile은 keyfile과 매우 비슷하며 HTTP Digest 인증 방법도 지원합니다.

    3. htaccess — 기존 형식일 뿐이며, 새로운 설치나 새 사용자 추가에는 사용하지 말아야 합니다.

  3. PAM — PAM은 Web Server 에서 지원되는 새로운 auth-db입니다. PAM auth-db는 Solaris PAM 스택에 인증 권한을 위임하며 이를 통해 기존 Solaris 사용자도 웹 서버 시스템에서 웹 서버에 대해 인증할 수 있습니다.


    주 –

    PAM auth-db는 Solaris 9 및 10 이상에서만 지원되며 웹 서버 인스턴스가 루트로 실행 중이어야 합니다.


인증 데이터베이스 만들기

관리 콘솔을 통해 인증 데이터베이스를 만들려면 구성 > 구성 이름 > 액세스 제어 > 인증 데이터베이스 > 새로 만들기 버튼을 클릭합니다. 필드 설명은 관리 콘솔 인라인 도움말을 참조하십시오. 선택한 인증 데이터베이스에 따라 필드가 달라집니다. 예를 들어 PAM 기반 인증 DB의 경우에는 인증 DB 이름만 필요합니다.

인증 데이터베이스를 만들기 위해 필요한 옵션은 다음과 같습니다.

LDAP 

  • 인증 데이터베이스 이름

  • 호스트 이름

  • 포트

  • 기본 DN

키 파일 

  • 인증 데이터베이스 이름

  • 파일 경로

다이제스트 파일 

  • 인증 데이터베이스 이름

  • 파일 경로

PAM 

  • 인증 데이터베이스 이름

CLI를 통해 인증 데이터베이스를 만들려면 다음 명령을 실행합니다.


wadm> create-authdb --user=admin --password-file=admin.pwd 
--host=serverhost --port=8989 --config=config1 
--url=ldap://ldapserver.com:20002/dc=xxx,dc=sun,dc=com LDAP1

CLI 참조 create-authdb(1)를 참조하십시오.

위의 예에서 인증 데이터베이스에는 URL이 지정되었습니다. 인증 데이터베이스의 유형은 이 URL 체계로 지정됩니다. 예를 들어 ldap://ds.example.come/dc=example,dc=com은 LDAP 디렉토리 서버를 인증 데이터베이스로 구성합니다.

사용자 및 그룹 설정

Administration Server에서 LDAP 및 파일 auth-db 유형 모두에 대해 사용자 계정, 그룹 목록, 액세스 권한, 조직 단위, 기타 사용자별 및 그룹별 정보를 편집할 수 있습니다.

Procedure사용자 추가

  1. 구성을 선택합니다.

    구성 목록에서 구성을 선택합니다. 구성 탭을 눌러 목록을 가져옵니다.

  2. 액세스 제어 > 사용자 탭을 누릅니다.

  3. 새로 만들기 버튼을 누릅니다.

  4. 사용자 정보를 추가합니다.

    사용자 아이디 및 비밀번호를 입력합니다. 사용자가 속한 그룹을 입력합니다(선택 사항). 사용자 아이디는 반드시 고유해야 합니다. LDAP 기반 인증 DB 경우 Administration Server는 사용자 아이디가 사용 중인지 확인하기 위해 검색 기준(기본 DN) 아래의 전체 디렉토리를 검색하여 사용자 아이디가 고유함을 확인합니다. 하지만 디렉토리 서버 ldapmodify 명령줄 유틸리티(사용 가능한 경우)를 사용하여 사용자를 만들면 사용자 아이디가 고유한지 확인되지 않습니다.


    주 –

    CLI 사용

    CLI를 통해 사용자를 만들려면 다음 명령을 실행합니다.


    wadm> create-user --user=admin --password-file=admin.pwd --host=serverhost 
    --port=8989 --config=config1 --authdb=KEYFILE1 --full-name=keyfile-config1-u1 
    keyfile-config1-u1

    CLI 참조 create-user(1)를 참조하십시오.


Procedure그룹 추가

  1. 구성을 선택합니다.

    구성 목록에서 구성을 선택합니다. 구성 탭을 눌러 목록을 가져옵니다.

  2. 액세스 제어 > 그룹 탭을 누릅니다.

  3. 새로 만들기 버튼을 누릅니다.

  4. 그룹 이름을 입력합니다.

  5. 그룹에 사용자 추가 섹션에서 기존 사용자를 검색하여 그룹에 추가합니다.


    주 –

    keyfile 또는 digestfile과 같은 인증 데이터베이스에서 그룹을 만들려면 사용자를 한 명 이상 지정해야 합니다.



    주 –

    CLI 사용

    CLI를 통해 그룹을 만들려면 다음 명령을 실행합니다.


    wadm> create-group --user=admin --password-file=admin.pwd --host=serverhost
    --port=8989 --config=config1 --authdb=LDAP1 group1

    CLI 참조 create-group(1)을 참조하십시오.


Procedure사용자 삭제

  1. 구성을 선택합니다.

    구성 목록에서 구성을 선택합니다. 구성 탭을 눌러 목록을 가져옵니다.

  2. 액세스 제어 > 사용자 탭을 누릅니다.

  3. 사용자를 삭제할 인증 데이터베이스를 선택합니다.

  4. 사용자 검색 입력란에 사용자 아이디를 입력하고 검색 버튼을 누릅니다.

  5. 사용자 아이디 열에서 사용자를 선택하고 삭제 버튼을 누릅니다.


    주의 – 주의 –

    사용자를 삭제한 후 그룹에 구성원이 남지 않게 되는 경우 keyfile/digestfile 인증 데이터베이스에서 사용자를 삭제하면 연결된 그룹도 삭제됩니다. 구성원이 없는 그룹은 keyfile/digestfile 인증 데이터베이스에서 사용할 수 없기 때문입니다.



    주 –

    CLI 사용

    CLI를 통해 사용자를 삭제하려면 다음 명령을 실행합니다.


    wadm> delete-user --user=admin --password-file=admin.pwd --host=serverhost 
    --port=8989 --config config1 --authdb KEYFILE1 user1

    CLI 참조 delete-user(1)를 참조하십시오.


Procedure그룹 삭제

  1. 구성을 선택합니다.

    구성 목록에서 구성을 선택합니다. 구성 탭을 눌러 목록을 가져옵니다.

  2. 액세스 제어 > 그룹 탭을 누릅니다.

  3. 그룹을 삭제할 인증 데이터베이스를 선택합니다.

  4. 사용자 검색 입력란에 그룹 이름을 입력하고 검색 버튼을 누릅니다.

  5. 그룹 이름 열에서 그룹을 선택하고 삭제 버튼을 누릅니다.


    주 –

    그룹을 삭제해도 그룹에 속한 사용자는 삭제되지 않습니다. 사용자를 직접 삭제하거나 그룹을 다시 지정해야 합니다.



    주 –

    CLI 사용

    CLI를 통해 그룹을 삭제하려면 다음 명령을 실행합니다.


    wadm> delete-group --user=admin --password-file=admin.pwd --host=serverhost
    --port=8989 --config config1 --authdb LDAP1 group1

    CLI 참조 delete-group(1)을 참조하십시오.


정적 및 동적 그룹

그룹은 LDAP 데이터베이스에 있는 일련의 객체를 기술하는 객체입니다. Web Server 7.0 그룹은 공통 속성을 공유하는 사용자로 구성됩니다. 예를 들어 일련의 객체는 회사의 마케팅 부서에서 일하는 다수의 직원일 수 있습니다. 이러한 직원은 Marketing이라는 이름의 그룹에 속할 수 있습니다.

LDAP 서비스의 경우 정적 및 동적의 두 가지 방법으로 그룹의 구성원을 정의할 수 있습니다. 정적 그룹은 구성원 객체를 명시적으로 열거합니다. 정적 그룹은 CN이며 uniqueMembers 및/또는 memberURLs 및/또는 memberCertDescriptions를 포함합니다 . 정적 그룹의 경우 구성원은 CN=<Groupname> 속성을 제외한 공통 속성을 공유하지 않습니다.

동적 그룹을 사용하면 LDAP URL을 사용하여 그룹 구성원에만 적용되는 일련의 규칙을 정의할 수 있습니다. 동적 그룹에서 구성원은 공통 속성 또는 memberURL 필터에 정의된 일련의 속성을 공유합니다. 예를 들어 Sales의 모든 직원이 포함된 그룹이 필요하며 이 직원들이 이미 LDAP 데이터베이스의

"ou=Sales,o=Airius.com"에 있는 경우 다음 memberurl을 사용하여 동적 그룹을 정의합니다.

ldap:///ou=Sales,o=Airius.com??sub?(uid=*)

결과적으로 이 그룹에는 "ou=Sales,o=sun" 지점 아래의 트리에 uid 속성이 있는 모든 객체 즉, 모든 Sales 구성원이 포함됩니다.

정적 및 동적 그룹의 경우 memberCertDescription을 사용하면 구성원이 인증서에 있는 공통 속성을 공유할 수 있습니다. 참고로 이는 ACL이 SSL 메소드를 사용하는 경우에만 작동합니다.

새 그룹을 만들었으면 그룹에 사용자 또는 구성원을 추가할 수 있습니다.

정적 그룹

LDAP 서비스의 경우 Administration Server를 사용하면 사용자 수에 상관없이 DN에서 동일한 그룹 속성을 지정하여 정적 그룹을 만들 수 있습니다. 정적 그룹은 사용자를 추가하거나 삭제하지 않는 한 변경되지 않습니다.

정적 그룹 생성을 위한 지침

Administration Server 형식을 사용하여 새 정적 그룹을 만드는 경우 다음 지침을 고려하십시오.

동적 그룹

동적 그룹에는 groupOfURLsobjectclass가 있으며 0개 이상의 memberURL 속성이 있습니다. 각 속성은 일련의 객체를 기술하는 LDAP URL입니다.

LDAP 서비스의 경우, Web Server에서 임의의 속성을 기반으로 사용자를 자동으로 그룹화하려는 경우 또는 일치하는 DN이 포함된 특정 그룹에 ACL을 적용하려는 경우 동적 그룸을 만들 수 있습니다. 예를 들어 department=marketing 속성이 있는 DN이 자동으로 포함되도록 그룹을 만들 수 있습니다. department=marketing 검색 필터를 적용하면 department=marketing 속성이 있는 모든 DN을 포함하는 그룹이 반환됩니다. 그러면 이 필터에 기반한 검색 결과에서 동적 그룹을 정의할 수 있습니다. 따라서 결과의 동적 그룹에 대한 ACL을 정의할 수 있습니다.

Web Server의 동적 그룹 구현 방식

Web Server는 LDAP 서버 스키마의 동적 그룹을 objectclass = groupOfURLs로 구현합니다. groupOfURLS 클래스에는 여러 memberURL 속성이 있을 수 있으며 각 속성은 디렉토리에 있는 객체 세트를 열거하는 LDAP URL로 구성됩니다. 그룹의 구성원은 이러한 세트의 조합이 됩니다. 예를 들어 다음 그룹은 하나의 구성원 URL만 포함합니다.

ldap:///o=mcom.com??sub?(department=marketing)

이 예에서는 "o=mcom.com " 아래에 부서가 "marketing"인 모든 객체로 구성된 집합을 설명합니다. LDAP URL에는 검색 기준 DN, 범위 및 필터는 포함할 수 있지만 호스트 이름과 포트는 포함할 수 없습니다. 따라서 동일한 LDAP 서버에 있는 객체만 참조할 수 있습니다. 범위는 모두 지원됩니다.

DN은 자동으로 포함되므로 직접 개인을 그룹에 추가할 필요가 없습니다. ACL 확인을 위해 그룹 조회가 필요할 때마다 Web Server에서 LDAP 서버 검색을 수행하므로 그룹은 동적으로 변경됩니다. ACL 파일에서 사용된 사용자 및 그룹 이름은 LDAP 데이터베이스에 있는 객체의 cn 속성에 대응됩니다.


주 –

Web Server는 ACL용 그룹 이름으로 cn(commonName) 속성을 사용합니다.


ACL에서 LDAP 데이터베이스로의 매핑은 dbswitch.conf 구성 파일(ACL 데이터베이스 이름을 실제 LDAP 데이터베이스 URL과 연결) 및 ACL 파일(ACL용으로 사용할 데이터베이스 정의) 모두에 정의됩니다. 예를 들어 "staff"라는 그룹의 구성원에게 기본 액세스 권한을 부여하려는 경우 ACL 코드는 객체 클래스가 groupOf<anything>이고 CN이 "staff"로 설정된 객체를 조회합니다. 객체는 구성원 DN을 명시적으로 열거하거나(정적 그룹의 groupOfUniqueNames와 동일) LDAP URL을 지정(예: groupOfURLs)하여 그룹의 구성원을 정의합니다.

정적 및 동적 그룹 가능

그룹 객체에는 objectclass = groupOfUniqueMembersobjectclass = groupOfURL이 모두 있을 수 있으며, 따라서 "uniqueMember" 및 "memberURL" 속성이 모두 유효합니다. 그룹의 구성원은 정적 및 동적 구성원의 조합입니다.

서버 성능에 미치는 동적 그룹의 영향

동적 그룹을 사용하는 경우 서버 성능에 영향을 미칠 수 있습니다. 그룹 구성원을 테스트해서 DN이 정적 그룹의 구성원이 아닌 경우 Web Server는 데이터베이스의 baseDN에 있는 모든 동적 그룹을 확인합니다. Web Server는 이러한 작업을 위해 해당 baseDN과 사용자의 DN에 대한 범위를 확인하여 각 memberURL이 일치하는지 확인한 다음 사용자 DN을 baseDN으로 사용하고 memberURL의 필터를 사용하여 기본 검색을 수행합니다. 이 절차로 인하여 많은 수의 개별 검색이 누적될 수 있습니다.

동적 그룹 생성을 위한 지침

Administration Server를 사용하여 새 동적 그룹을 만드는 경우에는 다음 지침을 고려하십시오.

표 8–1 동적 그룹: 필요한 매개 변수

매개 변수 이름  

설명  

<base_dn>

검색 기반의 고유 이름(DN) 또는 LDAP 디렉토리에서 모든 검색이 수행되는 지점. 이 매개 변수가 "o=mcom.com" 등의 디렉토리 접미사 또는 루트로 설정되는 경우도 종종 있습니다.

<attributes>

검색이 반환할 수 있는 속성 목록. 속성을 두 개 이상 지정하려면 속성 사이를 쉼표로 분리(예: "cn,mail,telephoneNumber")합니다. 속성이 지정되어 있지 않으면 모든 속성이 반환됩니다. 참고로 동적 그룹 구성원 확인의 경우 이 매개 변수는 무시됩니다.

<scope>

검색의 범위로 다음 중 한 가지 값을 가집니다. 

  • base는 해당 URL에 지정된 고유 이름(<base_dn>)에 대한 정보를 검색합니다.

  • one은 해당 URL에 지정된 고유 이름(<base_dn>)보다 한 수준 아래의 항목에 대한 정보를 검색합니다. 기본 항목은 이 범위에 포함되지 않습니다.

  • sub는 해당 URL에 지정된 고유 이름(<base_dn>)보다 아래에 있는 모든 수준의 항목에 대한 정보를 검색합니다. 기본 항목은 이 범위에 포함되지 않습니다.

    이 매개 변수는 필수입니다.

<(filter)>

검색의 지정된 범위 내에 있는 항목에 적용되는 검색 필터. Administration Server 형식을 사용하는 경우에는 이 속성을 지정해야 합니다. 괄호는 반드시 필수입니다. 

이 매개 변수는 필수입니다. 

<attributes>, <scope><(filter)> 매개 변수는 URL에서의 위치에 따라 구분됩니다. 속성을 지정하지 않으려는 경우에도 해당 필드에 물음표를 넣어 구분해야 합니다.