JEUS Security 안내서 

JEUS v7.0 Fix#3

Restricted Rights Legend

All TmaxSoft Software (JEUS®) and documents are protected by copyright laws and international convention. TmaxSoft software and documents are made available under the terms of the TmaxSoft License Agreement and may only be used or copied in accordance with the terms of this agreement. No part of this document may be transmitted, copied, deployed, or reproduced in any form or by any means, electronic, mechanical, or optical, without the prior written consent of TmaxSoft Co., Ltd.

이 소프트웨어(JEUS®) 사용설명서의 내용과 프로그램은 저작권법과 국제 조약에 의해서 보호받고 있습니다. 사용설명서의 내용과 여기에 설명된 프로그램은 TmaxSoft Co., Ltd.와의 사용권 계약 하에서만 사용이 가능하며, 사용권 계약을 준수하는 경우에만 사용 또는 복제할 수 있습니다. 이 사용설명서의 전부 또는 일부분을 TmaxSoft의 사전 서면 동의 없이 전자, 기계, 녹음 등의 수단을 사용하여 전송, 복제, 배포, 2차적 저작물작성 등의 행위를 하여서는 안 됩니다.

Trademarks

JEUS® is registered trademark of TmaxSoft Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies.

JEUS®는 TmaxSoft Co., Ltd.의 등록 상표입니다. 기타 모든 제품들과 회사 이름은 각각 해당 소유주의 상표로서 참조용으로만 사용됩니다.

Open Source Software Notice

Some modules or files of this product are subject to the terms of the following licenses. : APACHE2.0, CDDL1.0, EDL1.0, OPEN SYMPHONY SOFTWARE1.1, TRILEAD-SSH2, Bouncy Castle, BSD, MIT, SIL OPEN FONT1.1

Detailed Information related to the license can be found in the following directory : ${INSTALL_PATH}/lib/licenses

본 제품의 일부 파일 또는 모듈은 다음의 라이선스를 준수합니다. : APACHE2.0, CDDL1.0, EDL1.0, OPEN SYMPHONY SOFTWARE1.1, TRILEAD-SSH2, Bouncy Castle, BSD, MIT, SIL OPEN FONT1.1

관련 상세한 정보는 제품의 다음의 디렉터리에 기재된 사항을 참고해 주십시오. : ${INSTALL_PATH}/lib/licenses

안내서 정보

안내서 제목: JEUS Security 안내서 

발행일: 2014-08-29

소프트웨어 버전: JEUS v7.0 Fix#3

안내서 버전: v2.1.5


내용 목차

안내서에 대하여
1. 보안 시스템 소개
1.1. 개요
1.2. 주요 특징
1.3. 시스템 구조
1.4. 주요 개념
1.4.1. 로그인
1.4.2. 인증
1.4.3. 권한 체크(부여)
1.4.4. 보안 감사
1.4.5. 서비스와 SPI
1.4.6. 도메인
1.5. 성능 향상과 수준 향상
1.5.1. 성능 향상
1.5.2. 수준 향상
2. 보안 시스템 설정
2.1. 개요
2.2. 보안 도메인 정의
2.2.1. WebAdmin 사용 설정
2.2.2. XML 편집 설정
2.2.3. 사용자 계정 및 보안 정책 설정
2.3. 보안 도메인 구성요소 설정
2.3.1. WebAdmin 사용 설정
2.3.2. XML 편집 설정
2.4. 보안 서비스 설정
2.4.1. WebAdmin 사용 설정
2.4.2. XML 편집 설정
2.5. 보안 시스템 사용자 정보 설정
2.5.1. WebAdmin 사용
2.5.2. XML 편집 설정
2.5.3. 데이터베이스 사용 설정
2.5.4. 패스워드 보안 설정
2.5.5. 로그인 정보 캐시 기능
2.6. 보안 시스템 정책 설정
2.6.1. WebAdmin 사용 설정
2.6.2. XML 편집 설정
2.6.3. 데이터베이스 사용 설정
2.7. 추가 항목 설정
2.7.1. Java SE SecurityManager 설정
2.7.2. JACC Provider 설정
2.7.3. Identity 부여를 위한 정보 설정
2.7.4. Identity에 대한 인증서 정보 설정
3. 애플리케이션과 모듈에서 보안 설정
3.1. 개요
3.1.1. 모듈 Deployment 대 애플리케이션 Deployment
3.1.2. Role-to-Resource 매핑
3.1.3. Principal-to-Role 매핑
3.1.4. 사용자 설정
3.2. EJB 모듈 보안 설정
3.2.1. ejb-jar.xml 설정
3.2.2. jeus-ejb-dd.xml 설정
3.3. 웹 모듈 보안 설정
3.3.1. web.xml 설정
3.3.2. jeus-web-dd.xml 설정
3.4. J2EE 애플리케이션 보안 설정
3.4.1. application.xml 설정
3.4.2. jeus-application-dd.xml 설정
3.5. 예제
4. 보안 시스템 API 프로그래밍
4.1. 개요
4.2. Java SE Permission 설정
4.3. 기본 API
4.4. 리소스 API
4.5. SPI 클래스
4.6. 예제
5. Custom 보안 서비스 개발
5.1. 개요
5.2. 서비스 클래스
5.3. Custom 보안 서비스 구현 패턴
5.4. SPI 클래스
5.4.1. SubjectValidationService SPI
5.4.2. SubjectFactoryService SPI
5.4.3. AuthenticationService SPI
5.4.4. AuthenticationRepositoryService SPI
5.4.5. IdentityAssertionService SPI
5.4.6. CredentialMappingService SPI
5.4.7. CredentialVerificationService SPI
5.4.8. AuthorizationService SPI
5.4.9. AuthorizationRepositoryService SPI
5.4.10. EventHandlingService SPI
5.4.11. Dependencies between SPI Implementations
5.5. 보안 서비스 설정
6. JACC Provider 사용
6.1. 개요
6.2. JACC 규약
6.2.1. Provider 설정 규약
6.2.2. Policy 설정 규약
6.2.3. Policy 결정 및 집행 규약
6.3. JACC Provider 개발
6.3.1. JACC Provider 구현
6.3.2. JACC Provider 패키징
6.3.3. Default JACC Provider
6.4. JEUS 보안 시스템과 JACC Provider 통합
7. JAAS 사용
7.1. 개요
7.2. JEUS-LDAP 연동 위한 LoginModule 구현
7.3. LDAP JAAS LoginModule 서비스 설정
7.4. 데이터베이스 연동 위한 LoginModule 구현
7.5. 데이터베이스 LoginModule 서비스 설정
A. 보안 이벤트 서비스
A.1. 개요
A.2. 이벤트
B. JEUS Server Permissions
B.1. 개요
B.2. JEUS 시스템 리소스 이름
B.3. jeusadmin 명령어 권한 설정
색인

그림 목차

[그림 1.1] 보안 시스템 구조
[그림 1.2] Stack 기반의 로그인 메커니즘
[그림 1.3] Subject UML 다이어그램
[그림 1.4] Role 기반 Permission 체크
[그림 1.5] 오전 1시 30분의 Role
[그림 1.6] 오전 10시 30분의 Role
[그림 1.7] Policy와 PermissionMap의 UML 다이어그램
[그림 1.8] 하나의 Principal-to-Role Map과 2개의 Role-to-Resource을 가진 Policy 예제
[그림 1.9] 서비스의 2가지 상태
[그림 1.10] 서비스 클래스와 SPI 서브 클래스들
[그림 1.11] 다른 애플리케이션과 다른 Subject Repository를 사용한 2개의 도메인
[그림 2.1] Security Manager 메인화면
[그림 2.2] 보안 도메인 설정
[그림 2.3] [Security Service] - [Cache Config]
[그림 2.4] [Security Manager] - [Key Store]
[그림 2.5] [Security Manager] - [Custom Service]
[그림 2.6] [Security Service] - [Authentication]
[그림 2.7] [Security Service] - [Authentication] - [Repository Service]
[그림 2.8] [Security Service] - [Authentication] - [Jaas Login Config]
[그림 2.9] [Security Service] - [Authentication] - [Custom Authetication Service]
[그림 2.10] [Security Service] - [Authorization] - [Basic]
[그림 2.11] [Security Service] - [Authorization] - [Custom Authorization Service]
[그림 2.12] [Security Service] - [Identity Assertion]
[그림 2.13] [Security Service] - [Credential Mapping]
[그림 2.14] [Security Service] - [Credential Verification]
[그림 2.15] [Security Service] - Audit
[그림 2.16] [Security Service] - [Subject Validation]
[그림 2.17] Accounts 설정화면
[그림 2.18] Accounts - 사용자 등록
[그림 2.19] Accounts - Password 설정
[그림 2.20] Accounts - Password 암호화
[그림 2.21] Subject에 대한 사용자 정보를 저장하기 위한 데이터베이스 테이블 구조
[그림 2.22] Policy 설정 메인 화면
[그림 2.23] Policy 설정 - Role Permission 등록
[그림 2.24] Policy 설정 - Resource Permission 등록 (1)
[그림 2.25] Policy 설정 - Resource Permission 등록 (2)
[그림 2.26] Policy 설정 - Resource Permission 등록 (3)
[그림 2.27] Policy를 저장하기 위한 데이터베이스 테이블 구조
[그림 3.1] Principal-to-Role 매핑
[그림 3.2] 로그인 화면
[그림 3.3] 메인 화면
[그림 5.1] 서비스 클래스 다이어그램
[그림 5.2] 서비스 클래스의 상태 차트
[그림 5.3] 기본 보안 시스템 구현에서의 SPI 구현 클래스
[그림 6.1] JACC Provider 클래스

표 목차

[표 1.1] 다양한 권한 체크 질의와 결과에 대한 예제
[표 5.1] jeus.security.spi 패키지에 있는 표준 SPI 클래스

예 목차

[예 2.1] <<JEUS_HOME/domains/<domain name>/config/domain.xml>>
[예 2.2] 보안 시스템 서비스 설정 : <<domain.xml>>
[예 2.3] 보안 시스템 서비스 설정 : <<domain.xml>>
[예 2.4] 보안 시스템 사용자 정보 설정 : <<accounts.xml>>
[예 2.5] 데이터베이스를 이용한 사용자 설정 : <<domain.xml>>
[예 2.6] JEUS JDBC를 사용하지 않는 경우 설정 : <<domain.xml>>
[예 2.7] 저장된 로그인 정보 : <<.jeuspasswd>>
[예 2.8] 보안 시스템 Policy 설정 : <<policies.xml>>
[예 2.9] Custom Permission 클래스 : <<TimeConstrainedRolePermission.java>>
[예 2.10] Custom Permission 클래스 : <<policies.xml>>
[예 2.11] 데이터베이스를 이용한 Policy 설정 : <<domain.xml>>
[예 2.12] Java SE SecurityManager 설정 : <<policy>>
[예 2.13] Identity 부여를 위한 정보 설정 : <<cert-user-map.xml>>
[예 2.14] Identity에 대한 인증서 정보 설정 : <<user-cert-map.xml>>
[예 3.1] EJB 모듈에 설정된 보안 제약 : <<ejb-jar.xml>>
[예 3.2] Principal-to-Role 매핑 : <<jeus-ejb-dd.xml>>
[예 3.3] 보안 설정 : <<ejb-jar.xml>>
[예 3.4] 보안 설정 : <<jeus-ejb-dd.xml>>
[예 3.5] 웹 모듈 보안 설정 : <<web.xml>>
[예 3.6] 웹 모듈 보안 설정 : <<jeus-web-dd.xml>>
[예 3.7] J2EE 애플리케이션 보안 설정 : <<application.xml>>
[예 3.8] J2EE 애플리케이션 보안 설정 : <<jeus-application-dd.xml>>
[예 6.1] JACC 보안 설정 파일 설정 : <<domain.xml>>
[예 6.2] JACC에 대한 Java 시스템 속성 설정<<domain.xml>>
[예 7.1] <<jeus.security.impl.login.LdapLoginModule>>
[예 7.2] 도메인 서비스 설정 : <<domain.xml>>
[예 7.3] <<jeus.security.impl.login.DBRealmLoginModule>>
[예 7.4] 도메인 서비스 설정 : <<domain.xml>>
[예 B.1] 보안 시스템 Policy 설정 : <<policies.xml>>