2012-07-22 3 views
1

java 서비스 래퍼 (JSW)를 사용하여 Windows 서비스로 derby 데이터베이스를 실행하려고합니다. 커뮤니티 에디션 3.5.15을 다운로드했습니다.java 보안 문제

wrapper.java.command=java 
#wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp 
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperStartStopApp 

wrapper.java.classpath.1=../lib/derby.jar 
wrapper.java.classpath.2=../lib/derbynet.jar 
wrapper.java.classpath.3=../lib/derbytools.jar 
wrapper.java.classpath.4=Wrapper.jar 

wrapper.java.library.path.1= 

wrapper.java.additional.1=-Dderby.system.home=c:/data/derby 

#wrapper.app.parameter.1=org.apache.derby.drda.NetworkServerControl 
#wrapper.app.parameter.2=start 

wrapper.app.parameter.1=org.apache.derby.drda.NetworkServerControl 
wrapper.app.parameter.2=3 
wrapper.app.parameter.3=start 
wrapper.app.parameter.4=-h 
wrapper.app.parameter.5=127.0.0.1 
wrapper.app.parameter.6=org.apache.derby.drda.NetworkServerControl 
wrapper.app.parameter.7=true 
wrapper.app.parameter.8=1 
wrapper.app.parameter.9=shutdown 
wrapper.console.format=PM 
wrapper.console.loglevel=INFO 
wrapper.logfile=log/wrapper.log 
wrapper.logfile.format=LPTM 
wrapper.logfile.loglevel=INFO 
wrapper.logfile.maxsize=5m 
wrapper.logfile.maxfiles=10 
wrapper.syslog.loglevel=ERROR 

wrapper.console.title=Derby DB Server 
wrapper.ntservice.name=derby 
wrapper.ntservice.displayname=Apache Derby Database 
wrapper.ntservice.description=Apache Derby Relational Database Engine (Network Server) 
wrapper.ntservice.starttype=AUTO_START 
wrapper.ntservice.interactive=false 
#wrapper.ntservice.account=.\derby 
#wrapper.ntservice.password=derbypw 

을 나는 래퍼를 통해 더비 서버를 시작하려고 할 때 보안 위반 예외가 얻을 :

는 래퍼 설정 나는 거기에 사용되는 I는 java.policy에 대한 권한 부여를 추가 할 수

c:\derby\bin>wrapper -c derby.conf 
wrapper | --> Wrapper Started as Console 
wrapper | Java Service Wrapper Community Edition 32-bit 3.5.15 
wrapper | Copyright (C) 1999-2012 Tanuki Software, Ltd. All Rights Reserved. 
wrapper |  http://wrapper.tanukisoftware.com 
wrapper | 
wrapper | Launching a JVM... 
jvm 1 | WrapperManager: Initializing... 
jvm 1 | Sun Jul 22 22:11:11 BST 2012 : Security manager installed using the Basic server security policy. 
jvm 1 | Sun Jul 22 22:11:11 BST 2012 : Apache Derby Network Server - 10.9.1.0 - (1344872) started and ready to accept connections on port 1527 
jvm 1 | WrapperManager Error: Error in WrapperListener.start callback. java.security.AccessControlException: access denied (org.tanukisoftware.wrapper.security.WrapperPerm 
ission signalStarting) 
jvm 1 | WrapperManager Error: java.security.AccessControlException: access denied (org.tanukisoftware.wrapper.security.WrapperPermission signalStarting) 
jvm 1 | WrapperManager Error:  at java.security.AccessControlContext.checkPermission(Unknown Source) 
jvm 1 | WrapperManager Error:  at java.security.AccessController.checkPermission(Unknown Source) 
jvm 1 | WrapperManager Error:  at java.lang.SecurityManager.checkPermission(Unknown Source) 
jvm 1 | WrapperManager Error:  at org.tanukisoftware.wrapper.WrapperManager.signalStarting(WrapperManager.java:3268) 
jvm 1 | WrapperManager Error:  at org.tanukisoftware.wrapper.WrapperStartStopApp.start(WrapperStartStopApp.java:437) 
jvm 1 | WrapperManager Error:  at org.tanukisoftware.wrapper.WrapperManager$11.run(WrapperManager.java:3963) 
jvm 1 | WrapperManager Error: Unable to remove the Wrappers shudownhook: {0} 
jvm 1 | Exception in thread "WrapperListener_start_runner" java.security.AccessControlException: access denied (org.tanukisoftware.wrapper.security.WrapperPermission signal 
Stopped) 
jvm 1 |  at java.security.AccessControlContext.checkPermission(Unknown Source) 
jvm 1 |  at java.security.AccessController.checkPermission(Unknown Source) 
jvm 1 |  at java.lang.SecurityManager.checkPermission(Unknown Source) 
jvm 1 |  at org.tanukisoftware.wrapper.WrapperManager.signalStopped(WrapperManager.java:3320) 
jvm 1 |  at org.tanukisoftware.wrapper.WrapperManager.shutdownJVM(WrapperManager.java:4058) 
jvm 1 |  at org.tanukisoftware.wrapper.WrapperManager.privilegedStopInner(WrapperManager.java:4363) 
jvm 1 |  at org.tanukisoftware.wrapper.WrapperManager.access$2900(WrapperManager.java:124) 
jvm 1 |  at org.tanukisoftware.wrapper.WrapperManager$11.run(WrapperManager.java:3983) 
wrapper | CTRL-C trapped. Shutting down. 
wrapper | Shutdown failed: Timed out waiting for signal from JVM. 
wrapper | JVM did not exit on request, terminated 
wrapper | <-- Wrapper Stopped 

을 이 문제를 해결하기 위해 (나는 시도하지 않았지만 그것이 효과가 있다고 가정).

내가 알고 싶어하는 것은 : 보안 상 제약을 강제하고 (보안 예외를 throw하는)이 경우? 모든 로컬에서 시작된 Java 응용 프로그램에 모든 권한이 부여되었다고 생각했습니다.

나를 혼란스럽게하는 또 하나의 일 : JSW (이전 버전)를 통해 실행되는 h2 데이터베이스 서버 (1.3.162 (2011-11-26))에는 보안 권한이 없습니다. wrapper 단어를 포함하는 * .policy 파일을 검색했지만 아무 것도 없습니다. 이 경우 어떻게 보안이 구성되고, 보안이 설정되어 있습니까?

누군가이 보안 문제를보다 분명하게 표시하면 감사하게 생각합니다. P.

당신이 래퍼 실행

가, 래퍼 클래스는 응용 프로그램의 main 메소드를 실행됩니다 답변으로 레이프의 의견을 퍼팅

+1

, 시스템의 일부가 (아마 더비, 당신의 기록을 보면) 보안 관리자를 설치합니다 - 이것은을 적용 것입니다 제약 조건. 보안 관리자는 .policy 파일을 사용하지 않고 프로그래밍 방식으로 구성하거나 하드 코딩 할 수 있습니다. – DNA

+0

@DNA, 내가 아는 것처럼 보인다. derby는 래퍼가 실행하기에 더 제한적인 정책을 사용하는 보안 관리자를 설치합니다. 또한 h2가 추가 구성없이 완벽하게 실행되는 이유를 설명합니다. –

+1

Wrapper를 사용하여 실행하면 Wrapper 클래스가 응용 프로그램의 기본 메소드를 시작합니다. 이는 wrapper.jar의 클래스를 호출 스택에 삽입하는 것입니다. Java의 보안 모델은 호출 스택에서 가장 약한 메소드에 부여 된 권한에 대한 액세스를 제한함으로써 작동합니다. 이 작업을 수행하려면 원하는 작업을 수행 할 수있는 권한이있는 wrapper.jar 클래스를 제공해야합니다. 이 내용은 여기에 나와 있습니다. http://wrapper.tanukisoftware.com/doc/english/security-model.html –

답변

1

. 이는 wrapper.jar의 클래스를 호출 스택에 삽입하는 것입니다. Java의 보안 모델은 호출 스택에서 가장 약한 메소드에 부여 된 권한에 대한 액세스를 제한함으로써 작동합니다. 이 작업을 수행하려면 원하는 작업을 수행 할 수있는 권한을 wrapper.jar 클래스에 제공해야합니다.

여기에 우리의 사이트에 설명되어 있습니다 :

는 로깅 출력에서 ​​볼 수 있듯이

http://wrapper.tanukisoftware.com/doc/english/security-model.html