본 부록은 표준 Permission 리소스 이름과 리소스 액션을 설명한다.
표준 Permission 리소스 이름과 리소스 액션을 소개한다. 이들은 JEUS 서버 모듈(JNDI, JMS, Manager, Security 등)이 리소스에 대한 접근 권한을 가지고 있는지 체크하는 데 이용된다. 리소스 Permission 체크와 관련된 Permission 타입은 jeus.security.resource.ResourcePermission이며, Context ID는 항상 "default"이다.
권한 체크는 언제나 리소스 이름과 리소스 액션의 조합으로 일어난다. 보통의 경우 리소스 이름은 접근할 타겟을 의미하고, 리소스 액션은 해당 타겟에 대해 무엇을 할 것인지를 의미한다. 만약 원하는 권한 설정이 제대로 된 것 같지 않으면 Master Server나 서버 로그를 확인하여 정의된 Permission을 확인하여 추가한다.
여기서는 JEUS 기본 보안 시스템에서 제공되는 중요한 리소스 이름에 대해서만 소개한다.
Resource name | 설명 |
---|---|
jeus.* | JEUS 시스템의 모든 리소스 이름에 접근 가능하다. |
jeus.server.<server-name>.* | JEUS 시스템의 특정 서버의 모든 리소스 이름에 접근 가능하다. 디폴트 보안 시스템을 사용할 때 서버측에서 체크하는 Permission 목록이다. 리소스 액션에 따라 아래와 같이 나뉜다.
|
jeus.server.<server-name>.app.<application-name> | JEUS 시스템의 특정 서버의 특정 애플리케이션에 대한 리소스 이름이다. |
jeus.cluster.<cluster-name>.* | JEUS 시스템의 특정 클러스터의 모든 리소스 이름에 접근 가능하다. |
jeus.domain.<domain-name> | JEUS 시스템의 동적 설정변경 권한에 대한 리소스 이름이다. 여기서의 도메인은 보안 도메인이 아닌 JEUS 시스템 도메인을 의미한다. 리소스 액션에 따라 아래와 같이 나뉜다.
|
jeus.jndi | JEUS 시스템의 JNDI 동작 권한에 대한 리소스 이름이다. 리소스 액션에 따라 아래와 같이 나뉜다.
|
jeus.node.<node-name> | JEUS 시스템의 특정 노드에 대한 리소스 이름이다. 노드를 추가,삭제하는 경우 사용된다. 노드에 대한 설명은 "JEUS Server 안내서"을 참고한다. 리소스 액션에 따라 아래와 같이 나뉜다.
|
디폴트 보안 시스템을 기준으로 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이므로 이를 리소스 액션에 넣어준다.
[예 B.1] 보안 시스템 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>