JEUS Server Permissions

본 부록은 표준 Permission 리소스 이름과 리소스 액션을 설명한다.

1. 개요

표준 Permission 리소스 이름과 리소스 액션을 소개한다. 이들은 JEUS 서버 모듈(JNDI, JMS, Manager, Security 등)이 리소스에 대한 접근 권한을 가지고 있는지 체크하는 데 이용된다. 리소스 Permission 체크와 관련된 Permission 타입은 jeus.security.resource.ResourcePermission이며, Context ID는 항상 "default"이다.

권한 체크는 언제나 리소스 이름과 리소스 액션의 조합으로 일어난다. 보통의 경우 리소스 이름은 접근할 타겟을 의미하고, 리소스 액션은 해당 타겟에 대해 무엇을 할 것인지를 의미한다. 만약 원하는 권한 설정이 제대로 된 것 같지 않으면 Master Server나 서버 로그를 확인하여 정의된 Permission을 확인하여 추가한다.

2. JEUS 시스템 리소스 이름

여기서는 JEUS 기본 보안 시스템에서 제공되는 중요한 리소스 이름에 대해서만 소개한다.

Resource name 설명

jeus.*

JEUS 시스템의 모든 리소스 이름에 접근 가능하다.

jeus.server.<server-name>.*

JEUS 시스템의 특정 서버의 모든 리소스 이름에 접근 가능하다. 디폴트 보안 시스템을 사용할 때 서버측에서 체크하는 Permission 목록이다.

리소스 액션에 따라 아래와 같이 나뉜다.

  • boot : 해당 서버를 시작시킬 때

  • down : 해당 서버를 종료시킬 때

  • deploy : 해당 서버에 애플리케이션을 deploy할 때

  • ftp : 파일을 전송에 FTP를 사용할 때

jeus.server.<server-name>.app.<application-name>

JEUS 시스템의 특정 서버의 특정 애플리케이션에 대한 리소스 이름이다.

jeus.cluster.<cluster-name>.*

JEUS 시스템의 특정 클러스터의 모든 리소스 이름에 접근 가능하다.

jeus.domain.<domain-name>

JEUS 시스템의 동적 설정변경 권한에 대한 리소스 이름이다. 여기서의 도메인은 보안 도메인이 아닌 JEUS 시스템 도메인을 의미한다.

리소스 액션에 따라 아래와 같이 나뉜다.

  • dynamicConfiguration : jeusadmin 등을 통해 도메인의 설정을 동적으로 변경할 때

jeus.jndi

JEUS 시스템의 JNDI 동작 권한에 대한 리소스 이름이다.

리소스 액션에 따라 아래와 같이 나뉜다.

  • lookup : JNDI를 이용하여 객체를 lookup하려 할 때

  • modify : bind/unbind/rename과 같이 JNDI Repository 객체를 추가/삭제/변경할 때

  • list : JNDI repository에 저장된 객체의 List를 가져올 때

jeus.node.<node-name>

JEUS 시스템의 특정 노드에 대한 리소스 이름이다. 노드를 추가,삭제하는 경우 사용된다. 노드에 대한 설명은 JEUS Server 안내서을 참고한다.

리소스 액션에 따라 아래와 같이 나뉜다.

  • edit : 노드를 추가하거나 삭제할 때

3. jeusadmin 명령어 권한 설정

디폴트 보안 시스템을 기준으로 jeusadmin의 명령 단위로 권한 설정이 가능하다.

jeusadmin 명령 단위로 권한을 설정한 경우에는, 해당 명령어에 대한 권한 확인만 이루어지고 나머지 내부 권한에 대해서는 체크하지 않고 넘어간다. 명령어 권한의 리소스 이름은 명령어의 옵션과 관련짓게 되는데, server, servers, cluster, clusters, node 옵션에 대해서 앞서 설명한 리소스 이름을 갖는다. 이 외의 모든 옵션에 대해서는 jeus.domain.<domain-name> 리소스 이름을 갖는다.

명령어 권한의 리소스 액션은 명령어의 이름으로 정의된다. 명령어의 alias에 대해서는 제공되지 않으므로 help <command-name>에서 확인되는 실제 명령어 이름을 넣어 주도록 한다. 명령어에 대한 정보는 JEUS Reference 안내서의 "Part II. 콘솔 명령어와 툴"을 참고한다.

다음은 "user1"에게는 관리자 권한, "user2"에게는 "server2"에 deploy 명령을 수행할 수 있는 권한을 주는 예제이다. "user2"의 경우 "server2"에 대한 권한만 주려고 하므로 리소스 이름 jeus.server.server2.*를 주고, jeusadmin에서 deploy 명령의 실제 이름이 deploy-application이므로 이를 리소스 액션에 넣어준다.

보안 시스템 Policy 설정 : <policies.xml>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<policies xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
    <policy>
        <role-permissions>
            <role-permission>
                <principal>user1</principal>
                <role>adminRole</role>
            </role-permission>
            <role-permission>
                <principal>user2</principal>
                <role>server2DeployRole</role>
            </role-permission>
        </role-permissions>
        <resource-permissions>
            <context-id>default</context-id>
            <resource-permission>
                <role>adminRole</role>
                <resource>jeus.*</resource>
                <actions>*</actions>
            </resource-permission>
            <resource-permission>
                <role>server2DeployRole</role>
                <resource>jeus.server.server2.*</resource>
                <actions>deploy-application</actions>
            </resource-permission>
        </resource-permissions>
    </policy>
</policies>