Java 2 보안 정책 마이그레이션

Java™ 2 보안 정책 마이그레이션과 관련된 안내는 이 주제를 사용하십시오.

이 태스크 정보

이전 WebSphere® Application Server 릴리스

WebSphere Application Server은 서버 런타임에서 Java 2 보안 관리자를 사용하여 엔터프라이즈 애플리케이션이 System.exit 및 System.setSecurityManager 메소드를 호출하는 것을 막습니다. 이러한 두 개의 Java API(Application Programming Interfaces)는 엔터프라이즈 애플리케이션에 의해 호출되면 원치 않는 결과가 나옵니다. 예를 들어, System.exit API는 JVM(Java Virtual Machine)(애플리케이션 서버 프로세스)이 영구적으로 종료되게 합니다. 이는 Application Server에는 바람직한 오퍼레이션이 아닙니다.

Java 2 보안 특성을 지원하려면 모든 서버 런타임은 privileged(doPrivileged API 호출이 올바른 장소에 삽입된 상태로)로 표시되어야 하고 기본 권한 세트 또는 정책을 식별해야 합니다. 애플리케이션 코드는 권한이 없고 정책 파일에 정의된 권한에 종속되지 않습니다. doPrivileged 인스트루먼테이션은 Java 2 보안을 지원하는 데 중요하고 필요합니다. 이것이 없으면 애플리케이션 코드에는 서버 런타임이 필요로 하는 권한이 부여되어야 합니다. 이 상황은 권한 확인을 수행하기 위해 Java 2 보안이 사용하는 디자인과 알고리즘으로 인한 것입니다. Java 2 보안 검사 권한 알고리즘을 참조하십시오.

다음 두 개의 권한이 WebSphere Application Server의 Java 2 보안 관리자(하드 코딩됨)에 의해 강제 실행됩니다.
  • java.lang.RuntimePermission(exitVM)
  • java.lang.RuntimePermission(setSecurityManager)

애플리케이션 코드는 Java 2 보안 정책에 무엇이 있는지와 관계 없이 이러한 권한에 대한 액세스를 거부합니다. 그러나 서버 런타임에는 이러한 권한이 부여됩니다. 다른 모든 권한 검사는 실행되지 않습니다.

두 개의 권한만이 지원됩니다.
  • java.net.SocketPermission
  • java.net.NetPermission

그러나 모든 제품 서버 런타임이 권한이 있는 것으로 적절하게 표시되지는 않습니다. 애플리케이션 코드에 앞서 나열된 두 개의 권한 이외의 모든 권한을 부여해야 합니다. 그렇지 않으면 애플리케이션이 잠재적으로 실행에 실패할 수 있습니다. 엔터프라이즈 애플리케이션의 이 Java 2 보안 정책은 자유롭습니다.

변경된 사항

Java 2 보안은 WebSphere Application Server에서 완전히 지원되고 이는 모든 권한이 강제 실행됨을 의미합니다. 엔터프라이즈 애플리케이션의 기본 Java 2 보안 정책은 Java Platform, Enterprise Edition(Java EE) 버전 1.4 명세에 의해 정의된 권장되는 권한 세트입니다. 엔터프라이즈 애플리케이션에 부여된 기본 Java 2 보안 정책에 대해서는 profile_root/config/cells/cell_name/nodes/node_name/app.policy 파일을 참조하십시오. 이 정책은 이전 릴리스보다 훨씬 엄격합니다.

모든 정책은 선언적입니다. 제품 보안 관리자는 정책 파일에 선언된 모든 정책을 존중합니다. 이 규칙에는 예외가 있습니다. 엔터프라이즈 애플리케이션은 profile_root/config/cells/cell_name/filter.policy 파일에 선언된 권한에 대한 액세스가 거부됩니다.

참고: 엔터프라이즈 애플리케이션의 기본 Java 2 보안 정책은 보다 엄격하고 모든 권한은 WebSphere Application Server 버전 9.0에서 강제 실행됩니다. 애플리케이션 코드에 시스템 자원(예: 파일 I/O)에 프로그래밍 방식으로 액세스할 수 있는 필요한 권한이 부여되지 않았고 이제 권한 검사를 따르기 때문에 보안 정책이 실패할 수도 있습니다.

애플리케이션 코드에서 보안 관리자를 설정하기 위해 setSecurityManager 권한을 사용하지 마십시오. 애플리케이션이 setSecurityManager 권한을 사용할 때, WebSphere Application Server 내에 내부 보안 관리자와의 충돌이 있습니다. RMI 목적을 위해 애플리케이션에 보안 관리자를 설정해야 하는 경우에는, 또한 WebSphere Application Server 관리 콘솔 내에 글로벌 보안 페이지에 로컬 자원에 대한 애플리케이션 액세스를 제한하기 위해 Java 2 보안 사용 옵션을 사용으로 설정해야 합니다. WebSphere Application Server은 그런 다음 보안 관리자를 등록합니다. 애플리케이션 코드는 이 보안 관리자가 System.getSecurityManager() API(Application Programming Interface)를 사용하여 등록되는지를 확인할 수 있습니다.

시스템 특성 마이그레이션

다음 시스템 특성이 Java 2 보안과 관련하여 이전 릴리스에서 사용됩니다.
  • java.security.policy. 정책 파일의 절대 경로(조치 필수). 이 시스템 특성에는 시스템 권한(JVM(Java Virtual Machine) 및 제품 서버 런타임에 부여된 권한) 및 엔터프라이즈 애플리케이션 권한 둘 모두가 포함됩니다. 엔터프라이즈 애플리케이션의 Java 2 보안 정책을 버전 9.0으로 마이그레이션하십시오. Java 2 보안 정책 마이그레이션에 대해서는 for migrating Java 2 보안 정책 마이그레이션 단계를 참조하십시오.
  • enableJava2Security. Java 2 보안 실행을 사용 가능으로 설정하는 데 사용됩니다(조치 필요 없음). 이 시스템 특성은 더 이상 사용되지 않습니다. WebSphere 구성 API(Application Programming Interface)에서 플래그는 Java 2 보안을 사용 가능으로 설정해야 하는지 여부를 제어하는 데 사용됩니다. 관리 콘솔을 통해 이 옵션을 사용 가능으로 설정하십시오.
  • was.home. WebSphere Application Server의 설치 디렉토리로 확장됩니다(조치가 필요할 수도 있음). 이 시스템 특성은 더 이상 사용되지 않습니다. ${user.install.root} 및 ${was.install.root} 특성으로 대체되었습니다. 디렉토리에 인스턴스 특정 데이터가 포함된 경우에는 ${user.install.root}가 사용됩니다. 그렇지 않으면 ${was.install.root}가 사용됩니다. WebSphere Application Server 또는 WebSphere Application Server, Network Deployment 환경에 이러한 특성을 상호 교환적으로 사용하십시오. Java 2 보안 정책 마이그레이션을 위한 단계를 참조하십시오.

Java 2 보안 정책 마이그레이션

동일 정책 파일에 시스템 권한과 애플리케이션이 혼합되어 있으므로 Java 정책 파일을 버전 9.0로 자동으로 마이그레이션하기 위한 쉬운 방법이 존재하지 않습니다. 엔터프라이즈 애플리케이션의 Java 2 보안 정책을 was.policy 또는 app.policy 파일로 수동으로 복사하십시오. 그러나 절대 코드 베이스 대신에 기호 또는 상대 코드 베이스가 사용되므로 Java 2 보안 정책을 was.policy 파일로 마이그레이션하는 것이 선호됩니다. 이 프로세스는 여러 가지 장점을 가지고 있습니다. was.policy에 정의된 권한을 특정 엔터프라이즈 애플리케이션에만 부여하는 반면, app.policy 파일의 권한은 app.policy 파일이 속하는 노드에서 실행되는 모든 엔터프라이즈 애플리케이션에 적용하십시오.

정책 관리에 대한 자세한 정보는 Java 2 보안 정책 파일 주제를 참조하십시오.

다음 예제는 Java 2 보안 정책을 이전 릴리스로부터 마이그레이션하는 것을 설명합니다. 컨텐츠에는 app1.ear 엔터프라이즈 애플리케이션 및 시스템 권한의 Java 2 보안 정책 파일이 포함되고, 이는 JVM(Java Virtual Machine) 및 제품 서버 런타임에 부여되는 권한입니다.

[AIX Solaris HP-UX Linux Windows][z/OS]Java 2 보안 정책 파일의 기본 위치는 profile_root/properties/java.policy입니다. 기본 권한은 명료성을 위해 생략됩니다.

[IBM i]Java 2 보안 정책 파일의 기본 위치는 profile_root/properties/java.policy입니다. 기본 권한은 명료성을 위해 생략됩니다.

// For product Samples
   grant codeBase "file:${app_server_root}/installedApps/app1.ear/-" {
     permission java.security.SecurityPermission "printIdentity";
     permission java.io.FilePermission "${app_server_root}${/}temp${/}somefile.txt", 
       "read";
   };

설명의 명료성을 위해 모든 권한은 이 예에서 애플리케이션 레벨 권한으로서 마이그레이션됩니다. 그러나 컴포넌트 레벨(웹, 엔터프라이즈 Bean, 커넥터 또는 유틸리티 Java 아카이브(JAR) 컴포넌트 레벨)에서 보다 세부 단위의 레벨에서 권한을 부여하거나 특정 컴포넌트에 권한을 부여할 수 있습니다.

프로시저

  1. Java 2 보안이 Application Server에서 사용 안함으로 설정되는지 확인하십시오.
  2. 파일이 없는 경우 새 was.policy 파일을 작성하거나 구성 저장소에서 마이그레이션된 애플리케이션에 대해 was.policy 파일을 다음 컨텐츠로 업데이트하십시오.
    grant codeBase "file:${application}" {
         permission java.security.SecurityPermission "printIdentity";
         permission java.io.FilePermission "
                 ${user.install.root}${/}temp${/}somefile.txt", "read";
       };

    이전 코드 샘플에서 세 번째와 네 번째 행은 설명 용도를 위해서만 두 행으로 표시됩니다.

    was.policy 파일은 profile_root/config/cells/cell_name/applications/app.ear/deployments/app/META-INF/ 디렉토리에 있습니다.

  3. 어셈블리 도구를 사용하여 was.policy 파일을 엔터프라이즈 아카이브(EAR) 파일에 첨부하십시오.

    어셈블리 도구를 사용하여 was.policy 파일의 컨텐츠를 유효성 검증할 수도 있습니다. 자세한 정보는 Java 2 보안을 위해 was.policy 파일 구성의 내용을 참조하십시오.

  4. 엔터프라이즈 애플리케이션에 마이그레이션된 Java 2 보안 권한 및 ${user.install.root}/config/cells/cell_name/nodes/node_name/app.policy 파일에 선언된 기본 권한 세트에 대한 추가 권한이 필요하지 않음을 유효성 검증하십시오. 이 유효성 검증에는 사전 제작 환경에서 Java 2 보안을 사용 가능으로 설정한 상태에서 마이그레이션된 엔터프라이즈 애플리케이션의 코드 검토, 코드 검사, 애플리케이션 문서 검토 및 샌드박스 테스트가 필요합니다. 어떤 API가 Java 2 보안에 의해 보호되는지에 대한 자세한 정보는 Java 2 보안에 의해 보호되는 개발자 킷 API를 참조하십시오. 써드파티 라이브러리를 사용하는 경우에는 Java 2 보안에 의해 보호되는 API에 해당하는 공급업체 문서를 참조하십시오. 애플리케이션에 모든 필수 권한이 부여되는지 확인하십시오. 그렇지 않으면 Java 2 보안이 사용 가능으로 설정된 상태에서 실행에 실패할 수도 있습니다.
  5. Java 2 보안이 사용 가능으로 설정된 상태에서 마이그레이션된 엔터프라이즈 애플리케이션의 사전 제작 테스트를 수행하십시오. 다음 추적 문자열을 사용하여 사전 제작 테스트 환경에서 WebSphere Application Server Java 2 보안 관리자에 대해 추적을 사용 가능으로 설정하십시오. com.ibm.ws.security.core.SecurityManager=all=enabled. 이 추적 기능은 애플리케이션에 필수 권한이 부여되지 않거나 일부 시스템 코드가 권한이 있는 것으로 제대로 표시되지 않은 경우에 작성되는 AccessControlException 예외를 디버깅하는 데 도움이 될 수 있습니다. 추적은 예외가 작성될 때 호출에서 클래스에 부여되는 스택 추적 및 권한을 버립니다.

    자세한 정보는 Java 2 보안에 대한 액세스 제어 예외의 내용을 참조하십시오.

    참고: Java 2 보안 정책은 이전 릴리스보다 훨씬 엄격하므로, 관리자 또는 배치자는 Java 2 보안을 사용 가능으로 설정하기 전에 추가 권한이 필요한지 여부를 확인하기 위해 엔터프라이즈 애플리케이션을 검토해야 합니다. 엔터프라이즈 애플리케이션에 필수 권한이 부여되지 않은 경우에는 이들은 실행에 실패합니다.

주제 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_migratejava2sec
파일 이름:tsec_migratejava2sec.html