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 메소드를 실행됩니다 답변으로 레이프의 의견을 퍼팅
, 시스템의 일부가 (아마 더비, 당신의 기록을 보면) 보안 관리자를 설치합니다 - 이것은을 적용 것입니다 제약 조건. 보안 관리자는 .policy 파일을 사용하지 않고 프로그래밍 방식으로 구성하거나 하드 코딩 할 수 있습니다. – DNA
@DNA, 내가 아는 것처럼 보인다. derby는 래퍼가 실행하기에 더 제한적인 정책을 사용하는 보안 관리자를 설치합니다. 또한 h2가 추가 구성없이 완벽하게 실행되는 이유를 설명합니다. –
Wrapper를 사용하여 실행하면 Wrapper 클래스가 응용 프로그램의 기본 메소드를 시작합니다. 이는 wrapper.jar의 클래스를 호출 스택에 삽입하는 것입니다. Java의 보안 모델은 호출 스택에서 가장 약한 메소드에 부여 된 권한에 대한 액세스를 제한함으로써 작동합니다. 이 작업을 수행하려면 원하는 작업을 수행 할 수있는 권한이있는 wrapper.jar 클래스를 제공해야합니다. 이 내용은 여기에 나와 있습니다. http://wrapper.tanukisoftware.com/doc/english/security-model.html –