Java 2 보안
Java™ 2 보안은 보호되는 특정 시스템 자원에 대한 액세스를 허용하기 전에 권한을 확인하여 전체 시스템 무결성을 높이는 정책 기반의 세분화된 액세스 제어 메커니즘을 제공합니다. Java 2 보안은 파일 I/O, 소켓 및 특성 같은 시스템 자원에 대한 액세스를 보호합니다. J2EE(Java 2 Platform, Enterprise Edition) 보안은 Servlet, JSP(JavaServer Pages) 파일 및 EJB(Enterprise JavaBean) 메소드와 같은 웹 자원에 대한 액세스를 감시합니다.
Java 2 보안은 상대적으로 새로운 기능이므로 많은 기존 또는 심지어 새 응용프로그램도 Java 2 보안을 강제 실행할 수 있는 매우 정밀한 액세스 제어 프로그래밍 모델에 미처 준비가 되어 있지 않을 수 있습니다. 관리자는 응용프로그램이 Java 2 보안에 대한 준비가 되어 있지 않은 경우 Java 2 보안을 사용 가능하게 했을 때의 가능한 결과를 이해해야 합니다. Java 2 보안은 응용프로그램 개발자와 관리자에게 일부 새 요구사항을 제시합니다.
전개하는 사람과 관리자를 위한 Java 2 보안
Java 2 보안이 지원되지만 기본적으로 사용 불가능합니다. Java 2 보안과 관리 보안은 서로 독립적으로 구성될 수 있습니다. 관리 보안을 사용 불가능하게 해도 Java 2 보안을 자동으로 사용 불가능하게 하지 않습니다. 명시적으로 사용되지 않도록 해야 합니다.
응용프로그램이나 제삼의 라이브러리가 준비 되어 있지 않은 경우, Java 2 보안을 사용 가능하게 하면 문제점을 일으킵니다. 이 문제점은 시스템 로그 또는 추적 파일에서 Java 2 보안 AccessControlExceptions로 식별할 수 있습니다. 응용프로그램이 Java 2 보안 준비가 되어 있는지 잘 모르면, 처음에 Java 2 보안을 사용 불가능하게 하여 응용프로그램을 설치하고 그것이 제대로 작동하는지 확인하십시오.
Java 2 보안이 활성화된 경우 WebSphere® Application Server, 클래스와 연관된 Java 2 보안 권한 세트는 해당 클래스가 다음 중 하나에 의해 로드될 때 생성됩니다. WebSphere 클래스 로더. 어느 non-WebSphere 클래스로더에는 이 Java 권한 세트가 없습니다. WebSphere Application Server 정책 파일. 액세스 제어가 있고 작업을 수행하는 이러한 클래스로더와 연관된 코드에는 Java 2 보안이 필요합니다. doPrivileged 해당 코드 주변을 차단하세요.
제품에 필요한 Java 2 보안 doPrivileged API가 적소에 없을 수 있으므로, 이들 정책 파일로 구체화되는 정책을 보다 제한적으로 할 수 없습니다. 제한적 정책은 기본 정책입니다. 추가 권한이 부여될 수 있으나, AccessControlExceptions가 WebSphere Application Server 안에서 생성되기 때문에 기본값이 더 제한적으로 될 수 없습니다. 제품은 이전에 언급한 정책 파일에 정의된 기본값보다 더 제한적인 정책을 지원하지 않습니다.
여러 개의 정책 파일 Java 프로세스에 대한 보안 정책을 정의하는 데 사용됩니다. 이러한 정책 파일은 정적이며(코드 베이스는 정책 파일에 정의되어 있음) IBM® 개발자 키트, Java Technology Edition. 엔터프라이즈 응용프로그램, 자원 및 유틸리티 라이브러리의 경우, WebSphere Application Server는 동적 정책 지원을 제공합니다. 코드 베이스는 런타임 중에 배치 정보를 기반으로 동적으로 계산되며 권한은 템플리트 정책 파일을 기반으로 부여됩니다.
정책 파일의 구문 오류는 애플리케이션 서버 프로세스가 실패하도록 하기 때문에 이 정책 파일을 주의해서 편집하십시오.
응용프로그램이 Java 2 보안에 대해 준비가 되어 있지 않거나, 응용프로그램 프로바이더가 was.policy 파일을 응용프로그램의 일부로 제공하지 않거나 응용프로그램 프로바이더가 예상되는 권한과 통신하지 않은 경우, 런타임에 응용프로그램이 Java 2 보안 액세스 제어 예외를 유발하기 쉽습니다. 응용프로그램이 Java 2 보안에 준비되어 있지 않은지는 확실하지 않을 수 있습니다. 몇 개의 런타임 디버깅 지원은 액세스 제어 예외가 있는 애플리케이션의 문제점 해결에 도움이 될 수 있습니다. 자세한 내용은 Java 2 보안 디버깅 도우미를 참조하십시오. 보다 Java 2 보안이 준비되지 않은 애플리케이션 처리 그러한 응용 프로그램을 처리하기 위한 정보 및 전략은 다음과 같습니다.
Java 보안이 관리 보안 설정에서 사용될 때, 설치된 보안 관리자가 현재 비 시스템 스레드에 대한 modifyThread 및 modifyThreadGroup 사용 권한을 확인하지 않는다는 점에 주의해야 합니다. 웹과 EJB(Enterprise JavaBeans) 응용프로그램 코드가 스레드를 작성, 변경할 수 있게 하면 컨테이너의 기타 컴포넌트에 부정적인 영향을 끼칠 가능성이 있습니다. 또 컨테이너가 엔터프라이즈 Bean의 라이프 사이클과 트랜잭션을 관리하는 성능에 영향을 주기도 합니다.
애플리케이션 개발자의 Java 2 보안
응용프로그램 개발자는 기본 WebSphere 정책에서 부여된 권한 및 추가 권한의 허용 여부를 알기 위해 응용프로그램이 호출하는 SDK API의 권한 요구사항을 반드시 이해해야 합니다. 자원 섹션의 Java 2 SDK의 권한 참조서에는 어느 API가 어떤 권한을 필요로 하는지에 대해서 설명되어 있습니다.
애플리케이션 제공자는 애플리케이션에 이전에 언급한 기본 정책에 대한 권한이 부여되었다고 간주할 수 있습니다. 기본 WebSphere 정책이 적용되지 않는 자원에 액세스하는 응용프로그램은 추가 Java 2 보안 권한을 응용프로그램에 부여하는 데 필요합니다.
다른 동적 WebSphere 정책 파일 중의 하나 또는 조금 더 전통적인 java.policy 정적 정책 파일 중의 하나에 있는 추가 권한을 응용프로그램에 부여하는 동안, was.policy(EAR 파일에 임베디드)가 추가 권한의 범위가 이러한 권한을 필요로 하는 정확한 응용프로그램으로 지정되었는지 확인합니다. 필요한 애플리케이션 코드 이상의 권한 범위 지정은 일반적으로 특정 자원에 액세스할 권한이 없는 코드를 허용하게 됩니다.
라이브러리 같은 응용프로그램의 컴포넌트를 개발하는 경우, 실제로 하나 이상의 .ear 파일에 포함될 수 있으며 라이브러리 개발자는 응용프로그램 어셈블러가 필요로 하는 필수 Java 2 권한을 문서화해야 합니다. 라이브러리 유형의 컴포넌트에 대한 was.policy 파일은 없습니다. 개발자는 API(Application Programming Interface) 문서 또는 일부 다른 문서를 통해 필요한 권한과 통신해야 합니다.
권한이 컴포넌트 라이브러리에서 내부적으로만 사용되고 애플리케이션은 권한으로 보호된 자원에 대한 액세스가 부여되지 않은 경우, 코드를 privileged로 표시해야 할 수도 있습니다. 다음을 참조하세요. AccessControlException 자세한 내용은 주제를 참조하세요. 그렇지만 doPrivileged 호출을 잘못 삽입하면 보안 구멍이 생길 수도 있습니다. doPrivileged 호출 내포에 대해 이해하고 정확한 판단을 내리십시오.
동적 정책 파일 섹션 Java 2 보안 정책 파일 사용 권한이 어떻게 설정되는지 설명합니다.was.policy 파일은 런타임에 부여됩니다.
Java 2 보안과 함께 사용할 응용프로그램을 개발하는 것은 새로운 기술일 수 있으며, 이전에 응용프로그램 개발자가 필요로 하지 않았던 보안 의식을 일깨울 수 있습니다. Java 2 보안 모델에 대한 설명과 응용프로그램 개발에 대한 것은 이 섹션의 범위를 벗어납니다. URL 통해 시작할 수 있습니다: https://docs.oracle.com/javase/1.5.0/docs/guide/security/index.html
디버깅 지원
WebSphere Application Server SYSOUT 파일과 com.ibm.websphere.java2secman.norethrow 특성은 디버깅의 두 가지 주요 도움 사항니다.WebSphere 시스템 로그 또는 추적 파일
시스템 로그 및 추적 파일에 로깅되는 AccessControl 예외는 예외, 예외 호출 스택, 각 스택 프레임에 부여된 권한을 초래할 수 있습니다. 이 정보는 일반적으로 누락된 권한 및 권한이 필요한 코드 판별에 충분합니다.com.ibm.websphere.java2secman.norethrow 특성
Java 2 보안이 WebSphere Application Server에서 사용 가능할 때, 권한 위반이 발생하면 보안 관리자 컴포넌트가 java.security.AccessControl 예외를 작성합니다. 이 예외는 처리되지 않는 경우 런타임 실패를 초래합니다. 이 예외는 SYSOUT 파일에도 로깅됩니다.그러나 JVM(Java Virtual Machine) com.ibm.websphere.java2secman.norethrow 특성이 설정되고 true 값을 가질 경우, 보안 관리자가 AccessControl 예외를 작성하지 않습니다. 이 정보는 로깅됩니다.
이 특성은 샌드박스 또는 디버그 환경을 위한 것으로 보안 관리자에게 AccessControl 예외를 작성하지 않도록 지시하기 때문입니다. Java 2 보안은 강제 실행되지 않습니다. 완화된 Java 2 보안 환경이 생산을 위해 무결성 Java 2 보안을 약화시키는 생산 환경에서 이 특성을 사용하지 마십시오.
이 특성은 샌드박스 또는 애플리케이션이 완벽하게 테스트되고 로그 또는 추적 파일이 AccessControl 예외에 대해 검사 가능한 테스트 환경에서 가치가 있습니다. 이 특성은 AccessControl 예외를 작성하지 않기 때문에 호출 스택을 전파하지 않고 장애를 발생시키지 않습니다. 이 특성을 사용하지 않으면 한 번에 한 개씩 AccessControl 예외를 찾아서 수정해야 합니다.
Java 2 보안에 준비되어 있지 않은 애플리케이션 처리
Java 2 보안이 제공하는 증가된 시스템 무결성이 중요하다면, 응용프로그램 프로바이더에게 문의하여 응용프로그램이 Java 2 보안을 지원하게 하거나 부여되어야 하는 기본 WebSphere Application Server 정책 외에 필요한 추가 권한과 최소한 통신하십시오.그러한 응용프로그램을 다루는 가장 손쉬운 방법은 WebSphere Application Server에서 Java 2 보안을 사용 불가능하게 하는 것입니다. 이 솔루션은 전체 시스템에 적용되고 시스템의 무결성이 생각보다 강력하지 않다는 점이 취약점입니다. 조직 보안 정책이나 위험 허용한계에 따라서는 Java 2 보안을 사용 불가능하게 하는 것이 바람직하지 않을 수 있습니다.
grant codeBase "file:${application}" {
permission java.security.AllPermission;
};server.policy 파일
그만큼server.policy 파일은 다음 위치에 있습니다. 앱_서버_루트/properties/ 예배 규칙서.
이 정책은 WebSphere Application Server 클래스에 대한 정책을 정의합니다. 현재 동일한 설치의 모든 서버 프로세스가 동일한 server.policy 파일을 공유합니다. 그렇지만 각 서버 프로세스가 별도의 server.policy 파일을 사용하도록 이 파일을 구성할 수도 있습니다. 정책 파일을 java.security.policy Java 시스템 특성의 값으로 정의하십시오. Java 시스템 특성을 정의하는 방법의 세부사항에 대해서는 Application Server 파일 관리의 프로세스 정의 절을 참조하십시오.
java.policy 파일
파일은 모든 클래스에 부여되는 기본 권한을 나타냅니다. 이 파일의 정책은 WebSphere Application Server에서 JVM(Java Virtual Machine)에 의해 실행된 모든 프로세스에 적용됩니다.
그만큼java.policy 파일은 다음 위치에 있습니다. 앱_서버_루트/java/lib/security 예배 규칙서.
문제점 해결
- 오류 메시지 CWSCJ0314E
증상:
Error message CWSCJ0314E: 현재 Java 2 보안 정책이 Java 2 보안 권한에 대한 잠재적 위반을 보고했습니다. 자세한 정보는 문제점 판별 안내서를 참조하십시오. {0}권한\:{1}Code\:{2}{3}스택 추적\:{4}코드 베이스 위치\:{5} 현재의 Java 2 보안 정책이 Java 2 보안 권한의 잠재적 위반을 보고했습니다. 자세한 정보는 문제점 판별 안내서 정보를 참조하십시오. {0}Permission\:{1}Code\:{2}{3}Stack Trace\:{4}Code Base Location\:{5}문제점:
Java 보안 관리자 checkPermission 메소드가 디버깅 정보와 함께 주요 권한에 대한 보안 예외를 보고했습니다. 보고된 정보는 시스템 구성에 관련하여 다를 수도 있습니다. RAS(Reliability Availability Service Ability) 추적을 디버그 모드로 구성하거나 Java 특성을 지정하여 이 보고서를 사용 가능하게 합니다.
보다 추적 활성화 디버그 모드에서 RAS 추적을 구성하는 방법에 대한 자세한 내용을 참조하세요.
관리 콘솔의 JVM 설정 패널에서 다음 특성을 지정하십시오. java.security.debug. 유효값은 다음을 포함합니다.- 액세스
- 필수 권한: 코드, 스택 및 코드 베이스 위치 등의 모든 디버그 정보 인쇄
- stack
- 필수 권한: 코드 및 스택 등의 디버그 정보 인쇄
- 실패
- 필수 권한 및 코드 등의 디버그 정보 인쇄
권장되는 응답:
보고된 예외는 보안 시스템에 치명적일 수 있습니다. 보안 추적을 켜서 보안 정책을 위반했을 수도 있는 잠재적 코드를 판별하십시오. 위반한 코드를 판별한 후 모든 응용프로그램 Java 2 보안 정책 파일과 응용프로그램 코드를 검사하여, 시도된 조작이 Java 2 보안에 대해 허용되는지 확인해야 합니다.
응용프로그램이 Java Mail로 실행 중인 경우, 이 메시지의 상태가 양호할 수 있습니다. 애플리케이션에 다음 권한을 부여하여 was.policy 파일을 업데이트할 수 있습니다.permission java.io.FilePermission "${user.home}${/}.mailcap", "read"; permission java.io.FilePermission "${user.home}${/}.mime.types", "read"; permission java.io.FilePermission "${java.home}${/}lib${/}mailcap", "read"; permission java.io.FilePermission "${java.home}${/}lib${/}mime.types", "read";- SecurityException - Access denied
증상:
Java 보안이 활성화되어 있고 읽기 권한이 있는 경우 jaxm.properties SOAPFactory 인스턴스가 호출을 통해 생성되면 파일이 부여되지 않습니다. javax.xml.soap.SOAPFactory.newInstance() 또는 MessageFactory 인스턴스는 호출을 통해 생성됩니다. MessageFactory.newInstance(), ㅏ SecurityException 예외가 발생하고 다음 예외가 시스템 로그에 기록됩니다.Permission: /opt/IBM/WebSphere/AppServer/java/jre/lib/jaxm.properties : access denied (java.io.FilePermission /opt/IBM/WebSphere/AppServer/java/jre/lib/jaxm.properties read) 코드: com.ibm.ws.wsfvt.test.binding.addr1.binder.AddressBinder in {file:/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/ ahp6405Node01Cell/DataBinding.ear/address1.war/WEB-INF/lib /addressbinder1.jar} Stack Trace: java.security.AccessControlException: access denied (java.io.FilePermission /opt/IBM/WebSphere/AppServer/java/jre/lib/jaxm.properties read) .문제점:
Java 2 보안 정책은 Java 2 보안 권한의 잠재적인 위반을 보고합니다.
권장되는 응답:
SOAPFactory는 예외를 무시하고 로드할 구현을 판별하는 다음 단계로 계속합니다. 따라서 이 보안 예외에 대한 로그 항목을 무시할 수 있습니다.
이 제품은 SOAPFactory를 사용하여 WS-Addressing(WS-A), WS-Atomic Transaction(WS-AT) 및 WS-Notification과 같은 다른 웹 서비스 기술을 지원하므로 이를 무시해도 됩니다. SecurityException Java 보안이 활성화된 모든 웹 서비스 애플리케이션에서.
메시지
메시지:CWSCJ0313E : Java 2 보안 관리자 디버그 메시지 플래그가 초기화되었습니다\: TrDebug: {0}, 입장: {1}, 스택: {2}, 실패: {3}
문제점: 보안 관리자에 대한 유효한 디버그 메시지에 대해 구성된 값.
메시지: CWSCJ0307E:
코드 베이스 위치 판별 중에 예기치 않은 예외가 발견되었습니다. 예외: {0}
문제점: 코드 베이스 위치 판별 중에 예기치 않은 예외가 발견되었습니다.