Java 2 보안을 위해 was.policy 파일 구성
애플리케이션에 액세스하기 위한 특정 자원이 있는 경우에는 was.policy 파일을 업데이트해야 합니다.
시작하기 전에
profile_root/config/cells/cell_name/applications/
ear_file_name/deployments/application_name/META-INF/was.policy
WebSphere Application Server 버전 6.1이 지원하는 사용 가능한 정책 파일의 목록은 Java 2 보안 정책 파일을 참조하십시오.
다음 파일에 포함된 권한의
유니온은 WebSphere Application Server
엔터프라이즈 애플리케이션에 적용됩니다.
- java.security 파일에서 policy.url.* 특성에 지정되는 정책 파일.
- 구성 및 파일 복제 서비스에 의해 관리되는 app.policy 파일.
- server.policy 파일.
- java.policy 파일.
- 애플리케이션 was.policy 파일.
- ra.xml 파일의 권한 명세.
- library.policy 파일인 공유 라이브러리.
이러한 파일의 변경사항은 셀의 다른 노드로 복제됩니다.
기호 | 정의 |
---|---|
file:${application} | 권한이 애플리케이션 내에서 사용되는 모든 자원에 적용됩니다. |
file:${jars} | 권한이 애플리케이션 내의 모든 유틸리티 Java 아카이브(JAR) 파일에 적용됩니다. |
file:${ejbComponent} | 권한이 애플리케이션 내의 엔터프라이즈 Bean 자원에 적용됩니다. |
file:${webComponent} | 권한이 애플리케이션 내의 웹 자원에 적용됩니다. |
file:${connectorComponent} | 권한이 애플리케이션 내의 커넥터 자원에 적용됩니다. |
WebSphere Application
Server에서 스레드를 조작하는 애플리케이션에는 was.policy 또는 app.policy 파일에 적합한 스레드 권한이 지정되어 있어야 합니다.
스레드 권한이 지정되지 않고는 애플리케이션은 스레드를 조작할 수 없고
WebSphere Application
Server는 java.security.AccessControlException 예외를 작성합니다. 특정 애플리케이션의
was.policy 파일에 권한을 추가하는 경우에는 WebSphere Application Server를 다시 시작할 필요가 없습니다. 애플리케이션이 스레드를 조작하기 위해서는 관리자는
다음 코드를 was.policy 또는 app.policy 파일에 추가해야 합니다.
grant codeBase "file:${application}" {
permission java.lang.RuntimePermission "stopThread";
permission java.lang.RuntimePermission "modifyThread";
permission java.lang.RuntimePermission "modifyThreadGroup";
};
관리자는 스레드 권한을 app.policy 파일에 추가할 수 있지만
권한을 변경하려면 WebSphere Application Server를 다시 시작해야 합니다.중요사항: 서명자 및 JAAS(Java Authentication
and Authorization Service ) 프린시펄 키워드는 was.policy 파일에서 지원되지 않습니다.
서명자 키워드는 java.policy, server.policy 및 client.policy 정책 파일에서 지원됩니다.
JAAS 프린시펄 키워드는 java.security.auth.policy JVM(Java Virtual Machine) 시스템 특성에 의해 지정될 때
JAAS 정책 파일에서 지원됩니다. auth.policy.url.n=URL이 있는 java.security.auth.policy
파일에서 권한 부여 정책 파일을 정적으로 설정할 수 있습니다.
여기서 URL은 권한 부여 정책의 위치입니다.
이러한 블록 이외에 세부 단위의 설정을 위해 모듈 이름을 지정할 수 있습니다.
예를 들어, 다음과 같습니다.
grant codeBase "file:DefaultWebApplication.war" {
permission java.security.SecurityPermission "printIdentity";
};
grant codeBase "file:IncCMP11.jar" {
permission java.io.FilePermission
"${user.install.root}${/}bin${/}DefaultDB${/}-",
"read,write,delete";
};
기호 | 정의 |
---|---|
${app.installed.path} | 애플리케이션이 설치되는 경로 |
${was.module.path} | 모듈이 설치되는 경로 |
${current.cell.name} | Current® 셀 이름 |
${current.node.name} | Current 노드 이름 |
${current.server.name} | Current 서버 이름 |
이 태스크 정보
팁: 정책 파일의 구문 오류로 인해 Application Server가 실패합니다.
이러한 정책 파일을 편집할 때 주의하십시오.
프로시저
결과
예
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
java.security.AccessControlException: access denied (java.io.FilePermission
${was.install.root}/java/ext/mail.jar read)
![[z/OS]](../images/ngzos.gif)
![[IBM i]](../images/iseries.gif)
참고: 다음 예는 설명을 위해서 여러 행으로 나누어져 있습니다.
실제로는 권한을 한 행에 입력합니다.
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
java.security.AccessControlException: access denied (java.io.FilePermission
${was.install.root}/java/ext/mail.jar read)
Java 프로그램이 이 예외를 수신하고 이 권한 추가가 정당화되면 다음 권한을 was.policy 파일에 추가하십시오.
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
grant codeBase "file:user_client_installed_location" {
permission java.io.FilePermission
"${was.install.root}$(/)java$(/)jre$(/)lib$(/)ext$(/)mail.jar", "read";
};
권한을 추가할지 여부를 판별하려면 Java 2 보안의 액세스 제어 예외를 참조하십시오.