용어해설

anonymous subject

"any one"과 "no one"를 나타내는 특별한 종류의 Subject이다. 익명 Subject는 사용자 인증을 거치지 않는다.

assembler

Assembler란 J2EE에서 정의하는 역할 중에 하나로, J2EE 애플리케이션과 J2EE 모듈을 구성하는 다양한 종류의 파일을 수집해서 조립하는 역할을 맡는다. 또한 Assembler는 애플리케이션과 모듈의 DD 파일을 생성 또는 변경하는 일도 한다.

authentication

Subject의 신원을 확인하는 것으로, 본질적으로 "당신은 누구인가?" 라는 질문에 대해 답하는 것이다.

authorization

특정 Subject가 특정 액션을 실행할 권한이 있는지를 체크한다. 인증이 성공한 Subject나 익명 Subject에 대해서만 권한이 있는지를 체크한다.

authorization outcome

권한이 있는지 체크하는 쿼리의 결과값이다. 값의 형태는 “GRANTED”나 “DENIED” 둘 중 하나가 된다.

Base64

ASCII 문자셋 중 65개의 문자만을 사용하여 8진법 포맷으로 텍스트를 저장하는 방법이다. 이는 일종의 텍스트 인코딩으로 암호화와는 다르다. JEUS 보안 시스템에서 Base 64 인코딩은 패스워드를 저장하는 데 사용된다. 이는 실수로 시스템 관리자 이외의 사람이 비밀번호를 알아내는 것을 방지하고자 하는 최소한의 보호 장치이다. Base 64로 인코딩된 비밀번호는 보안이 유지된 파일이나 데이터베이스에 저장된다.

checked

checked permission 참고한다.

checked permission

Permission이 특정 Principal이나 Role에 속해 있는 경우이다.

client

"master" JVM에 대한 클라이언트 JVM을 일컫는 것으로, "slave" JVM과는 다르다.

code subject

런타임 코드(Java 코드)에서 사용하는 특별한 종류의 Subject이다. Java 코드는 Code Subject를 사용하여, 실제 호출자가 가지고 있지 않는 권한도 얻어올 수 있다. Code Subject는 모든 Permission을 가지고 있다.

context ID

권한 체크가 일어나는 Context를 나타내는 ID이다. 보통 각 J2EE 모듈(EJB, Web)은 권한 체크동안 자신만의 유일한 Context ID를 가지고 있다. 각 context ID는 Authorization 시스템 내에서 유일한 role-to-resource 매핑을 나타낸다.

credential

Subject가 소유하고 있는 보안 속성이다. 여러 가지 목적으로 사용되지만, 일반적으로 Subject 인증시 증빙 자료로 사용된다. Credential은 public, private(seceret) 두 가지 종류가 있다. 비밀번호(private)와 디지털 인증서(public)가 대표적이다.

credential factory

jeus.security.base.CredentialFactory 인터페이스를 구현하는 클래스이다. Subject는 Credential Factories를 가지고 있으며, 이는 런타임에서 실제 Credential을 생성하는 데 사용된다.

credential mapping

사용자 이름과 Credential 매핑이다.

credential verification

제시된 Credential이 유효하고 신뢰할만한지 검증하는 작업이다(패스워드가 정확한가?, 디지털 인증서가 유효한가?).

deployer

Deployer란 J2EE에서 정의하고 있는 역할 중 하나로, J2EE 애플리케이션 및 모듈을 특정 타겟 환경에 맞게 설정하고, 디플로이하는 일을 한다.

domain

보안 서비스(SPI 구현 클래스)의 집합이다. 각 도메인은 시스템에서 유일한 이름을 가져야 한다. 도메인은 서로 다른 J2EE 애플리케이션이나 시스템이 각각 다른 보안 서비스를 사용하도록 한다.

excluded

excluded permission 참고한다.

excluded permission

Excluded Permission이 부여되면 해당 리소스에는 누구도 접근할 수 없다. 예를 들어, "RSC"라는 리소스에 Excluded Permission이 부여되면, 실제 아무도 "RSC"에 접근할 수 없게 된다.

Excluded Permission은 Unchecked Permission보다 우선순위가 높다.

JACC

Java Authorization Contract for Containers의 약어로 Container에 대한 Java 권한 부여 스펙이다. 이는 커스터마이즈된 Authorization Provider를 개발해서 J2EE 1.4 Server에 통합하기 위한 SPI를 정의한 스펙이다. JEUS는 JACC 1.0 스펙을 충실히 지원한다.

JEUS_HOME

현재 JEUS를 설치한 디렉터리이다.

main principal

Subject에 대한 유일한 ID이다. Subject는 단 하나의 Main Principal을 가지고 있다. Main Principal은 Optional Principal과는 달리 도메인 내에서 다른 Subject와 공유될 수 없다.

master

보안 클러스터로 묶인 JVM들에서 중앙 서버로 역할하는 JVM이다. Slave JVM과 Client JVM은 Master JVM에 커넥션을 맺는다.

non-repudiation

보안 관련 이벤트를 기록하기 때문에, 이후 특정 이벤트가 발생되었다는 것을 부정할 수 없게 한다. 이벤트는 암호화 되어 로그 파일에 기록된다.

optional principal

Main Principal을 제외한 모든 다른 Principal이다. Optional Principal은 보통 그룹명을 나타내지만 그룹명을 나타내지 않는 경우도 있다.

permission

허가된 액션을 말한다. Permission은 이름과 액션, 두 가지 파트로 구성되어 있다. 가령 JNDI lookup을 실행하는 Permission은 이름은 "jeus.server.jndi"이고 액션은 "lookup"으로 구성되어 있다. 모든 Permission은 java.security.Permission 인터페이스를 구현한다.

principal

액션을 수행하는 실체의 유일한 ID이다. 실례로 사용자명이나 그룹명이 해당된다.

private credential

민감한 정보를 다루기 때문에 보안이 필요한 credential이다. 예로 패스워드가 Private Credential이다.

public credential

민감한 정보를 다루지 않기 때문에 보안이 필요하지 않는 credential이다. 예로 디지털 인증서가 Public Credential이다.

resource

Principal에 의해서 액션이 적용될 수 있는 자원들의 집합이다.

role

Principal의 논리적인 그룹이다. Role은 보통 Principal의 집합이다(하나의 Main Principal과 여러 개의 Group Principals로 구성되어 있다). J2EE 애플리케이션 성격에 따라 각각 다른 Role이 적용된다. 애플리케이션의 Role을 디플로이할 환경에 미리 설정되어 있는 실제 Principal에 매핑하는 것은 Deployer의 역할이다(Deployer는 실제 Principal들이 적합한 Role Permission을 갖도록 설정한다).

security domain

domain을 참조한다.

security group

동일한 이름(예를 들어, "group1")으로 지칭되는 논리적인 Subject의 집합이다.

security service

service를 참고한다.

security SPI

SPI를 참고한다.

security system

보안 관련 코드, jeus.security.* 패키지의 모든 클래스, 보안 클래스가 사용하는 보안 데이터 저장소, 외부 관련 설정 파일등 보안과 관련된 모든 것을 지칭하는 포괄적인 용어이다. 보안 시스템은 이 문서에서 언급하고 있는 모든 것이라 해도 과언이 아니다.

service

특정 보안 기능을 제공하기 위해서 해당 SPI 클래스를 규약에 따라 구현한 Java 클래스이다.

예로 Authentication 서비스와 Authorization 서비스가 있다. 이 용어는 보안 서비스 프레임워크의 최상위 레벨에 있는 추상 클래스를 지칭하기도 한다.

SHARED_DOMAIN

특별한 도메인으로 여기서 지정한 보안 서비스는 모든 다른 도메인과 공유된다. 따라서, SHARED_DOMAIN은 모든 다른 도메인에서 공통적으로 적용되는 보안 서비스를 포함하고 있어야 한다.

slave

"master" JVM에 커넥션을 맺는 JVM이나, "client" JVM과는 다르다. "Slave" JVM은 일종의 이차 보안 서버라 할 수 있으며, 보안 클러스터를 구성하는 멤버이다.

SPI

서비스 제공 인터페이스(Service Provider Interface)이다. 구현되어야 할 추상 메소드를 포함하고 있는 추상 클래스이다. 모든 SPI는 자신만의 보안 서비스를 구현하도록 하고 있다. JEUS에서는 jeus.security.spi 패키지에 구현 클래스가 포함되어 있다. 각각의 SPI 클래스는 서로 다른 보안 기능을 가지고 있는데, 가령 인증 관련 SPI, 권한 부여 관련 SPI가 있다. SPI의 구현 클래스를 서비스라고 한다.

subject

액션을 실행하는 실체이다. Subject는 구체적인 사람일 수도 런타임 코드일 수도 있다. 각 Subject는 정확히 로그인할 때 하나의 도메인에 할당된다. Subject는 유일한 Main Principal을 갖고 있으며, 사용자 그룹을 나타내는 다양한 부가적인 Principal을 가지고 있다. Subject는 Credential과 CredentialFactory를 가지고 있다.

subject factory

Subject를 생성하는 보안 서비스로, Subject는 Principal과 Credential을 가지고 있다. Subject Factory는 Subject 생성을 보안 시스템에 위임할 때 사용된다.

subject validation

해당 Subject가 유효한지 체크하는 보안 서비스이다. 유효한 Subject는 "blocking/denying" Credential을 가지고 있지 않다(Credential에 Lock이 걸려 있다던지, Credential의 만료 일자가 지났을 경우, "blocking/denying" Credential이라고 한다).

SYSTEM_DOMAIN(1)

J2EE 애플리케이션과 모듈에 사용하는 보안 도메인 이름이다. 도메인명은 JEUSMain.xml에 명시적으로 설정하지 않는다.

SYSTEM_DOMAIN(2)

표준 관리 툴을 사용해 JEUS 서버를 관리할 때 적용되는 도메인명이다. 이 도메인은 JEUS administrator 계정과 "boot"와 "down" 같은 서버 관리 Permission들을 포함하고 있다.

unchecked

Unchecked Permission을 참고한다.

unchecked permission

모든 사람이 소유하는 Permission이다. 가령 "RSC" 리소스에 Unchecked Permission이 부여되어 있다면, 누구나 "RSC"리소스에 접근할 수 있게 된다. Unchecked permission은 Excluded Permission보다 우선 순위가 낮으나, Checked Permission보다는 우선 순위가 높다.

unspecified EJB method

ejb-jar.xml 파일의 <method permission> 태그에 포함되어 있지 않는 EJB 메소드이다. JEUS는 이 메소드를 특정 Role에 매핑하거나, Excluded 또는 Unchecked(디폴트)로 취급한다. 웹

모듈에서, web.xml에 특별한 보안 설정이 없는 Servlet URL일 경우, 항상 Unchecked로 취급한다(Unchecked 라는 말은 권한 체크 과정을 거치지 않기 때문에, 누구나 자유롭게 접근할 수 있다는 것을 뜻한다).