Java security manager 에서 IBM MQ classes for JMS 애플리케이션 실행

IBM® MQ classes for JMSJava security manager 를 사용으로 설정하여 실행할 수 있습니다. ' Java security manager '이 활성화된 상태에서 애플리케이션을 성공적으로 실행하려면 적절한 정책 구성 파일로 ' Java Virtual Machine '(JVM)를 구성해야 합니다.

적합한 정책 정의 파일을 만드는 가장 간단한 방법은 Java runtime environment (JRE)와 함께 제공된 정책 구성 파일을 변경하는 것입니다. 대부분의 시스템에서 이 파일은 JRE 디렉터리에 상대적인 lib/security/java.policy 디렉터리에 있습니다. 선호하는 편집기를 사용하거나 JRE 과 함께 제공된 정책 도구 프로그램을 사용하여 정책 구성 파일을 편집할 수 있습니다.

예제 정책 구성 파일

다음은 IBM MQ classes for JMS 가 기본 보안 관리자에서 성공적으로 실행될 수 있도록 하는 정책 구성 파일의 예제입니다. 특정 파일 및 디렉토리의 위치를 지정하려면 이 파일을 사용자 정의해야 합니다. MQ_INSTALLATION_PATHIBM MQ 가 설치된 상위 레벨 디렉토리를 나타내고, MQ_DATA_DIRECTORY 는 MQ 데이터 디렉토리의 위치를 나타내며, QM_NAME 은 액세스가 구성되는 큐 관리자의 이름입니다.

grant codeBase "file:MQ_INSTALLATION_PATH/java/lib/*" {
  //We need access to these properties, mainly for tracing
  permission java.util.PropertyPermission "user.name","read";
  permission java.util.PropertyPermission "os.name","read";
  permission java.util.PropertyPermission "user.dir","read";
  permission java.util.PropertyPermission "line.separator","read";
  permission java.util.PropertyPermission "path.separator","read";
  permission java.util.PropertyPermission "file.separator","read";
  permission java.util.PropertyPermission "com.ibm.msg.client.commonservices.log.*","read";
  permission java.util.PropertyPermission "com.ibm.msg.client.commonservices.trace.*","read";
  permission java.util.PropertyPermission "Diagnostics.Java.Errors.Destination.Filename","read";
  permission java.util.PropertyPermission "com.ibm.mq.commonservices","read";
  permission java.util.PropertyPermission "com.ibm.mq.cfg.*","read";

  //Tracing - we need the ability to control java.util.logging
  permission java.util.logging.LoggingPermission "control";
  // And access to create the trace file and read the log file - assumed to be in the current directory
  permission java.io.FilePermission "*","read,write";

  // We'd like to set up an mBean to control trace
  permission javax.management.MBeanServerPermission "createMBeanServer";
  permission javax.management.MBeanPermission "*","*";

  // We need to be able to read manifests etc from the jar files in the installation directory
  permission java.io.FilePermission "MQ_INSTALLATION_PATH/java/lib/-","read";

  //Required if mqclient.ini/mqs.ini configuration files are used
  permission java.io.FilePermission "MQ_DATA_DIRECTORY/mqclient.ini","read";
  permission java.io.FilePermission "MQ_DATA_DIRECTORY/mqs.ini","read";

  //For the client transport type.
  permission java.net.SocketPermission "*","connect,resolve";

  //For the bindings transport type.
  permission java.lang.RuntimePermission "loadLibrary.*";

  //For applications that use CCDT tables (access to the CCDT AMQCLCHL.TAB)
  permission java.io.FilePermission "MQ_DATA_DIRECTORY/qmgrs/QM_NAME/@ipcc/AMQCLCHL.TAB","read";

  //For applications that use User Exits
  permission java.io.FilePermission "MQ_DATA_DIRECTORY/exits/*","read";
  permission java.io.FilePermission "MQ_DATA_DIRECTORY/exits64/*","read";
  permission java.lang.RuntimePermission "createClassLoader";

  //Required for the z/OS platform
  permission java.util.PropertyPermission "com.ibm.vm.bitmode","read";

  // Used by the internal ConnectionFactory implementation
  permission java.lang.reflect.ReflectPermission "suppressAccessChecks";

  // Used for controlled class loading
  permission java.lang.RuntimePermission "setContextClassLoader";

  // Used to default the Application name in Client mode connections
  permission java.util.PropertyPermission "sun.java.command","read";

  // Used by the IBM JSSE classes
  permission java.util.PropertyPermission "com.ibm.crypto.provider.AESNITrace","read";

  //Required to determine if an IBM Java Runtime is running in FIPS mode,
  //and to modify the property values status as required.
  permission java.util.PropertyPermission "com.ibm.jsse2.usefipsprovider","read,write";
  permission java.util.PropertyPermission "com.ibm.jsse2.JSSEFIPS","read,write";
  //Required if an IBM FIPS provider is to be used for SSL communication.
  permission java.security.SecurityPermission "insertProvider.IBMJCEFIPS"; 

  // Required for non-IBM Java Runtimes that establish secure client 
  // transport mode connections using mutual TLS authentication
  permission java.util.PropertyPermission "javax.net.ssl.keyStore","read";
  permission java.util.PropertyPermission "javax.net.ssl.keyStorePassword","read";  
};

예제에서 grant 문에는 IBM MQ classes for JMS에 필요한 권한이 포함되어 있습니다. 정책 구성 파일에서 이러한 권한 부여 명령문을 사용하려면 IBM MQ classes for JMS 를 설치한 위치 및 애플리케이션을 저장한 위치에 따라 경로 이름을 수정해야 합니다.

IBM MQ classes for JMS와 함께 제공되는 샘플 애플리케이션 및 이를 실행하기 위한 스크립트는 보안 관리자를 사용하지 않습니다.

중요:

IBM MQ classes for JMS 추적 기능은 시스템 특성의 추가 조회 및 추가 파일 시스템 조작을 수행하므로 추가 권한이 필요합니다.

추적이 사용으로 설정된 보안 관리자에서 실행하기에 적합한 템플리트 보안 정책 파일은 IBM MQ 설치의 samples/wmqjava 디렉토리에 example.security.policy(으)로 제공됩니다.