Liberty: Java 2 보안
Java™ 2 보안 기능이 WebSphere® Application Server Liberty에서 지원됩니다. Java 2 보안는 특정 보호되는 시스템 자원에 대한 액세스를 허용하기 전에 권한을 확인함으로써 전체 시스템 무결성을 향상시키는 정책 기반의 미세 조정된 액세스 제어 메커니즘을 제공합니다.
Java 2 보안는 Java Platform, Enterprise Edition 역할 기반 권한 부여와는 무관합니다. Java 2 보안은 시스템 자원(예: 파일 입력 및 출력, 소켓 및 특성)에 대한 액세스를 보호하는 반면, Java Platform, Enterprise Edition 보안은 웹 자원(예: 서블릿 및 JSP 파일)에 대한 액세스를 보호합니다.
배치자 및 관리자를 위한 Java 2 보안
Java 2 보안를 사용하기 전에, 모든 애플리케이션이 필수 권한을 부여받았는지 확인해야 합니다. 그렇지 않으면, 애플리케이션이 실행에 실패할 수 있습니다. 기본적으로, 애플리케이션은 Java Platform, Enterprise Edition 7.0 스펙에 따라 권한이 부여됩니다. 애플리케이션이 Java 2 보안에 준비되지 않은 경우 또는 애플리케이션 제공자가 애플리케이션의 일부로서 permissions.xml 파일을 제공하지 않는 경우, 애플리케이션은 Java 2 보안이 사용될 때 런타임에 Java 2 보안 액세스 제어 예외를 발생할 수 있습니다. 애플리케이션이 실행 중인 경우에도 이는 올바르게 실행되지 않을 수 있습니다.애플리케이션 개발자를 위한 Java 2 보안
애플리케이션 개발자는 Java SDK API의 기본 WebSphere 정책 및 권한 요구사항에서 부여된 권한을 이해해야 합니다. 사용자는 애플리케이션이 호출하는 API에서 추가 권한이 필요한지 여부를 알고 있어야 합니다. 권한이 필요한 Java API에 대한 자세한 정보는 Java 2 SDK의 권한의 내용을 참조하십시오.Java 2 보안 사용
Java 2 보안 기능은 커널 확장기능의 일부이며, websphere.java.security 특성으로 bootstrap.properties 파일을 업데이트하여 부트스트랩 시간에 사용됩니다.websphere.java.security 특성이 bootstrap.properties 파일에 지정된 경우, Java 2 보안가 강제 실행됩니다. 그렇지 않으면, 권한 확인이 발생하지 않습니다.
제한된 권한 지정
Liberty는 웹 또는 EJB 애플리케이션 컴포넌트를 실행할 때 제한된 권한을 지정하는 메커니즘을 제공합니다. 제한된 권한은 번들 또는 애플리케이션에 대해 해당 권한의 인스턴스가 부여되지 않도록 보장합니다. 이는 애플리케이션이 허용되어야 하는 권한을 넘어 추가적인 권한을 자신에게 부여하지 못하도록 방지하는 메커니즘을 제공합니다(예: VM 종료 권한).<javaPermission className="java.security.PropertyPermission" name="os.name" actions="write" restriction="true" />
권한 부여
OSGi 번들은 permissions.perm 파일을 통해 번들 내의 라이브러리/클래스에 대해 부여된 권한을 자체 조정할 수 있습니다.애플리케이션 또한 permissions.xml 파일을 통해 또는 server.xml 및 client.xml 파일에 권한 부여를 지정함으로써 부여된 권한을 자체 조정할 수 있습니다.
OSGi 번들 권한
OSGi 스펙은 번들의 OSGI-INF 디렉토리에 있는 permissions.perm 파일을 통해 번들에 대한 권한을 지정하는 메커니즘을 제공합니다. 이 메커니즘은 번들에 대한 권한의 미세 조정된 액세스 제어를 허용합니다.애플리케이션에 대해 server.xml 및 client.xml의 권한 선언
server.xml 및 client.xml 파일에 정의되어 있는 지정된 코드 베이스가 없는 권한은 해당 Liberty 서버의 모든 애플리케이션에 적용됩니다.<javaPermission className="java.util.PropertyPermission" name="*" actions="read" />
<javaPermission className="java.security.PropertyPermission" name="os.name" actions="write" restriction="true" />
- 제한된 권한에서는 restriction이 true로 설정됩니다.
- 애플리케이션이 제한된 권한으로 정의된 권한을 자신에게 부여하고자 시도하는 경우, 제한된 권한은 권한 부여에 우선하며 권한 부여를 허용하지 않습니다.
애플리케이션에 대해 permissions.xml의 권한 선언
permissions.xml 파일은 Java EE7 스펙에 의해 도입된 새 파일입니다. 이는 애플리케이션에 대해 META-INF 디렉토리 아래에 패키징되어 있습니다.독립형 .war 파일로서 패키징된 애플리케이션의 경우, META-INF WAR 레벨에서 지정된 권한이 .war 파일 내에 패키징된 모든 모듈 및 라이브러리에 적용됩니다.
.ear 파일에 패키징된 애플리케이션의 경우, 권한의 선언은 .ear 파일 레벨에 있어야 합니다. 이 권한 세트는 .ear 파일 내에 또는 해당 포함된 모듈 내에 패키징된 모든 모듈 및 라이브러리에 적용됩니다. .ear 파일 자체에 대해 permissions.xml 파일이 제공되는지 여부와는 무관하게, 해당 패키징된 모듈 내의 permissions.xml 파일은 무시됩니다.
.rar 파일에 패키징된 애플리케이션의 경우, 권한의 선언은 META-INF RAR 레벨에 있어야 합니다.