Java 보안 관리자 사용

기본적으로 Java™ 애플리케이션은 Java API에 요청되는 활동에 대해 보안 제한사항을 적용하지 않습니다. Java 보안을 사용하여 안전하지 않은 활동으로부터 Java 애플리케이션을 보호하려는 경우, 애플리케이션이 실행되는 JVM에 대해 보안 관리자가 사용되도록 설정할 수 있습니다.

이 태스크 정보

보안 관리자는 코드 소스에 지정되는 권한(시스템 액세스 권한) 세트인 보안 정책을 실행합니다. 기본 정책 파일이 Java 플랫폼에 제공됩니다. 그러나 Java 보안이 활성일 때 Java 애플리케이션이 CICS®에서 정상적으로 실행되게 하려면, 애플리케이션 실행에 필요한 권한을 CICS에 제공하는 추가 정책 파일을 지정해야 합니다.

보안 관리자가 사용되는 각 JVM 유형에 이 추가 정책 파일을 지정해야 합니다. CICS는 고유 정책을 작성할 때 사용할 수 있는 몇 가지 예제를 제공합니다.

참고: Liberty JVM 서버에서는 Java 보안 관리자 사용이 지원되지 않습니다.
  • OSGi 보안 에이전트 예제는 프로젝트에 보안 프로파일을 포함한 com.ibm.cics.server.examples.security라는 OSGi 미들웨어 번들을 작성합니다. 이 프로파일은 설치된 프레임워크에 있는 모든 OSGi 번들에 적용됩니다.
  • example.permissions 파일은 JVM 서버에서 애플리케이션 실행과 관련된 권한을 포함하며, 애플리케이션이 System.exit() 메소드를 사용하지 않도록 확인하는 검사도 포함하고 있습니다.
  • CICS는 OSGi 번들을 배치하는 zFS의 디렉토리에 대해 읽기 및 실행 권한을 가지고 있어야 합니다.

JVM 서버의 OSGi 프레임워크에서 실행되는 애플리케이션:

프로시저

  1. CICS Explorer® SDK에 플러그인 프로젝트를 작성하고 제공된 OSGi 보안 에이전트 예제를 선택하십시오.
  2. 프로젝트에서 example.permissions 파일을 편집하여 보안 정책에 대한 권한을 편집하십시오.
    1. CICS zFS 및 DB2® 설치 디렉토리가 올바르게 지정되었는지 검증하십시오.
    2. 필요에 따라 다른 권한을 추가하십시오.
  3. OSGi 번들을 zFS의 적합한 디렉토리(/u/bundles 등)에 배치하십시오.
  4. JVM 서버의 JVM 프로파일을 편집하여 OSGi 번들을 다른 번들 이전에 OSGI_BUNDLES 옵션에 추가하십시오.
    • OSGI_BUNDLES=/u/bundles/com.ibm.cics.server.examples.security_1.0.0.jar
  5. 다음 Java 특성을 JVM 프로파일에 추가하여 보안을 사용 가능하게 하십시오.
    • -Djava.security.policy=all.policy
  6. 다음 Java 환경 변수를 JVM 프로파일에 추가하여 OSGi 프레임워크에서 보안을 사용 가능하게 하십시오.
    • org.osgi.framework.security=osgi
  7. Java 2 보안을 사용하여 OSGi 프레임워크가 시작되게 하려면 다음 정책을 추가하십시오.
    • grant { permission java.security.AllPermission; };
  8. 변경사항을 저장하고 JVMSERVER 자원이 JVM 서버에 미들웨어 번들을 설치할 수 있도록 하십시오.
  9. 옵션: Java 2 보안을 활성화하십시오.
    1. Java 2 보안 정책 메커니즘을 활성화하려면 적절한 JVM 프로파일에 이를 추가하십시오. 또한 Java 2 보안 정책을 편집하여 적절한 권한을 부여해야 합니다.
    2. Java 2 보안 정책 메커니즘을 활성 상태로 하여 Java 애플리케이션에서 JDBBC 또는 SQLJ를 사용하려면 IBM® Data Server Driver for JDBC and SQLJ를 사용하십시오.
    3. Java 2 보안 정책 메커니즘을 활성화하려면 JVM 프로파일을 편집하십시오. 에서는 Java 2 보안 정책 설정 방법에 대해 설명합니다.
    4. 예제 1에 제시한 행을 추가하는 방식으로 Java 2 보안 정책을 편집하여 JDBC 드라이버에 대한 권한을 부여하십시오. db2xxx의 자리에 모든 DB2 라이브러리가 위치한 디렉토리를 지정하십시오. 권한은 이 레벨의 모든 디렉토리와 파일에 적용됩니다. 이로써 JDBC와 SQLJ를 사용할 수 있습니다.
    5. 예제 2에 제시한 행을 추가하는 방식으로 Java 2 보안 정책을 편집하여 읽기 권한을 부여하십시오. 읽기 권한을 추가하지 않고 Java 프로그램을 실행하면 AccessControlExceptions 및 예측할 수 없는 결과가 초래됩니다. JDBC 및 SQLJ를 Java 2 보안 정책과 함께 사용할 수 있습니다.
    예제 1:
    grant codeBase "file:/usr/lpp/db2xxx/-" {
      permission java.security.AllPermission;
    };   
    예제 2:
    grant {
    
    // allows anyone to read properties
    permission java.util.PropertyPermission "*", "read";
    
    };

결과

Java 애플리케이션이 호출되면 JVM은 클래스의 코드 소스를 판별하고 클래스에 적합한 권한을 부여하기 전에 보안 정책을 확인합니다.