$ $CATALINA_HOME/bin/startup.sh -securitystartup.sh에 –security 옵션을 주면 $CATALINA_HOME/bin/catalina.sh에 –security 옵션을 주고 호출하게 된다. $CATALINA_HOME/bin/catalina.sh는 Tomcat의 Bootstrap 클래스인 org.apache.catalina.startup.Bootstrap 를 실행시키기 위해 실제로 java를 호출하고 더 나아가 이 경우에는 $CATALINA_HOME/conf/catalina.policy에 명시된 기본 정책(default policy)에 따라 실행되도록 한다. 위 옵션을 통해 Tomcat에 기본으로 장착된 정책에 따라 기본 자바 security manager 하에서 Tomcat을 실행시킬 수 있지만 몇 가지 할 일이 더 있다. ProfilingSecurityManager를 사용하여 웹 애플리케이션을 프로파일링하려면 새로운 Tomcat 시작 스크립트(startup script)를 개발해야 한다. 이 때 이 스크립트는 임시적인 것으로서 오직 프로파일링에만 사용되고 버려질 것이다.
#!/bin/sh log=$CATALINA_HOME/logs/catalina.out /java/jdk/jdk1.5.0_06/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/home/tomcat/tomcat/conf/logging.properties -Djava.endorsed.dirs=/home/tomcat/tomcat/common/endorsed -classpath :/home/tomcat/tomcat/bin/bootstrap.jar: /home/tomcat/tomcat/bin/commons-logging-api.jar -Djava.security.manager -Djava.security.policy==/home/tomcat/tomcat/conf/catalina.policy -Dcatalina.base=/home/tomcat/tomcat -Dcatalina.home=/home/tomcat/tomcat -Djava.io.tmpdir=/home/tomcat/tomcat/temp org.apache.catalina.startup.Bootstrap start >> $log 2>&1 &ProfilingSecurityManager를 사용하기 위해 편집한 후의 스크립트는 다음과 같다.
#!/bin/sh log=$CATALINA_HOME/logs/catalina.out PATHTOPSM=$HOME/lib/psm.jar # make sure the profiler jar file is here /java/jdk/jdk1.5.0_06/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/home/tomcat/tomcat/conf/logging.properties -Djava.endorsed.dirs=/home/tomcat/tomcat/common/endorsed -classpath $PATHTOPSM:/home/tomcat/tomcat/bin/bootstrap.jar: /home/tomcat/tomcat/bin/commons-logging-api.jar -Djava.security.manager=secmgr.manager.ProfilingSecurityManager -Djava.security.policy==/home/tomcat/tomcat/conf/catalina.policy -Dcatalina.base=/home/tomcat/tomcat -Dcatalina.home=/home/tomcat/tomcat -Djava.io.tmpdir=/home/tomcat/tomcat/temp org.apache.catalina.startup.Bootstrap start >> $log 2>&1 &새로운 버전의 스크립트가 달라진 점은 다음과 같다.
$ parsecodebase.pl < $CATALINA_HOME/logs/catalina.out > policy.txtProfilingSecurityManager는 프로파일링 동안에 실행된 코드에 대해서만 규칙을 생성할 수 있다는 사실을 알아두자. 이것은 임의적인 런타임 인스턴스(runtime instance) 에서 이론상 수행될 수 있는 모든 코드 브랜치(code branch)들을 조사하는 식의 클래스 바이트 코드 검사는 아니기 때문이다. 그러한 바이트 코드 분석 방법은 추후에 추가될 수 있는 있겠지만 ProfilingSecurityManager에 의해 행해지는 런타임 분석을 대체하지는 않을 것이다.
이전 글 : 자바 애플리케이션 보안 요구사항의 발견 - 1
다음 글 : 윈도우즈 비스타에서 꼭 알아야 하는 6가지 팁
최신 콘텐츠