애플리케이션 개발을 위해 자원 및 API(Java 2 보안) 보호
Java™ 2 보안은 매우 퍼베이시브한 프로그래밍 모델이고 애플리케이션 개발에 거대한 영향을 미칩니다.
시작하기 전에
Java 2 보안은 Java EE(Java Platform, Enterprise Edition) 역할 기반에 직교합니다. 관리 보안과는 독립적으로 이를 사용 안함 또는 사용으로 설정할 수 있습니다.
그러나 이는 Java EE 역할 기반 권한 부여의 위에 액세스 제어 보호의 추가 레벨을 제공합니다. 이는 특히 시스템 자원 및 API(Application Programming Interface)의 보호를 설명합니다. 관리자는 Java 2 보안을 사용 안함으로 설정하는 위험성에 대비하여 장점을 고려해야 합니다.
- 애플리케이션이 Java 2 보안 프로그래밍 모델을 사용하여 개발되는지 확인하십시오. 개발자는 애플리케이션에서 사용되는 API가 Java 2 보안에 의해 보호되는지 여부를 알아야 합니다. 사용된 API의 필수 권한이 정책 파일, was.policy에 선언되어 있는 것이 중요합니다. 그렇지 않으면 Java 2 보안이 사용 가능할 때 애플리케이션이 실행에 실패합니다. 개발자는 Java 2 보안에 의해 보호되는 개발 킷 API의 웹 사이트를 참조할 수 있습니다. 이 웹 사이트에 방문하려면 보안: 학습할 자원 주제의 프로그래밍 모델 및 의사결정 섹션을 참조하십시오.
- 이전 릴리스로부터 마이그레이션된 애플리케이션에 필수 권한이 제공되는지 확인하십시오.
Java 2
보안은 이전 WebSphere® Application Server 릴리스에서 지원되지 않거나 부분적으로만 지원되므로 버전 5 이전에 개발된 애플리케이션은
Java 2 보안 프로그래밍 모델을 사용하지 않을 수 있습니다. 애플리케이션의 필수 권한을 모두 찾아내기 위한
쉬운 방법은 사용 가능하지 않습니다.
다음은 애플리케이션에 필요한 추가 권한을 판별하기 위해 수행할 수 있는 활동입니다.
- 코드 검토 및 코드 검사
- 애플리케이션 문서 검토
- 사전 프로덕션 환경에서 사용 가능으로 설정된 Java 2 보안을 사용하여 마이그레이션된 엔터프라이즈 애플리케이션의 샌드박스 테스트. 애플리케이션 정책 파일에서 누락된 권한을 판별하는 데 도움이 되기 위해 WebSphere Java 2 보안 관리자에서 추적을 사용 가능으로 설정. 추적 스펙은 다음과 같습니다. com.ibm.ws.security.core.SecurityManager=all=enabled.
- 디버깅을 지원하기 위해 com.ibm.websphere.java2secman.norethrow 시스템 특성을 사용하십시오.
이 특성을 프로덕션 환경에서 사용하지 마십시오.
Java 2 보안의 내용을 참조하십시오.
애플리케이션의 기본 권한 세트는 J2EE 1.3
명세에 정의된 권장되는 권한 세트입니다. 기본값은 모든 이에게 권한을 부여하는 개발 킷(JAVA_HOME/jre/lib/security/java.policy)
정책 파일에 정의된 권한과 함께 app_server_root/profiles/profile_name/config/cells/cell_name/nodes/node_name/app.policy
정책 파일에 선언되어 있습니다. 그러나 애플리케이션은 profiles/profile_name/config/cells/cell_name/filter.policy
파일에 선언된 권한을 거부합니다.
filter.policy 파일에 선언된 권한은 권한 확인 중에 애플리케이션에 대해 필터링됩니다.
애플리케이션의 기본 권한 세트는 J2EE 1.3
명세에 정의된 권장되는 권한 세트입니다. 기본값은 모든 이에게 권한을 부여하는 개발 킷
정책 파일에 정의된 권한과 함께 profile_root/config/cells/cell_name/nodes/node_name/app.policy
정책 파일에 선언되어 있습니다. java.policy 파일은 프로파일을 위해 사용 가능으로 설정된 JVM(Java Virtual Machine)에 따라
java_home 디렉토리에 있습니다.
모든
JVM(Java Virtual Machine)의 경우 java.policy 파일이 시스템 차원에서 사용됩니다.
서버에서 java.policy 파일을 편집하지 마십시오. 애플리케이션은 profile_root/config/cells/cell_name/filter.policy 파일에 선언된 권한을 거부합니다.
filter.policy 파일에 선언된 권한은 권한 확인 중에 애플리케이션에 대해 필터링됩니다.
![[IBM i]](../images/iseries.gif)
- QShell을 입력하십시오.
- cd to profile_root/bin
- 다음 명령을 실행하십시오.
wsadmin -conntype NONE -c '$AdminTask showVariables {-scope Node=myNode -variableName JAVA_HOME}'
was.policy 파일에서 애플리케이션의 필수 권한을 정의하고 애플리케이션 엔터프라이즈 아카이브(EAR) 파일에서 was.policy 파일을 YOURAPP.ear/META-INF/was.policy로서 임베드하십시오. 자세한 사항은 Java 2 보안 정책 파일 구성의 내용을 참조하십시오.
다음 단계는 WebSphere Application Server, Network Deployment에 대한 셀 레벨에서 Java 2 보안을 집행하는 방법을 설명합니다.
프로시저
- 보안 > 글로벌 보안을 클릭하십시오. 글로벌 보안 패널이 표시됩니다.
- Java 2 보안을 사용하여 로컬 자원에 대한 애플리케이션 액세스 제한 옵션을 선택하십시오.
- 확인 또는 적용을 클릭하십시오.
- 변경사항을 저장하려면 저장을 클릭하십시오.
- 변경사항을 적용하려면 서버를 다시 시작하십시오.
결과
- 소켓 연결 청취, 운영 체제 파일 시스템 읽기 또는 쓰기, JVM(Java Virtual Machine) 시스템 특성 읽기 또는 쓰기 등과 같은 경우 시스템 자원에 대한 보호를 사용 가능으로 설정하십시오.
- 애플리케이션 코드가 파괴적인 API를 호출하는 것을 막으십시오. 예를 들어, System.exit 메소드를 호출하면 Application Server가 종료됩니다.
- 애플리케이션 코드가 권한이 있는 정보(비밀번호)를 획득하거나 추가 권한을 얻지 못하도록(서버 신임 정보 얻기) 막으십시오.
다음에 수행할 작업
- 서버 > Application Server > server_name을 클릭하십시오.
- 보안 아래에서 서버 보안을 클릭하십시오.
- 이 서버의 보안 설정이 셀 설정을 대체함 옵션을 선택하십시오.
- Java 2 보안을 사용하여 로컬 자원에 대한 애플리케이션 액세스 제한 옵션을 선택하십시오.
- 확인 또는 적용을 클릭하십시오.
- 변경사항을 저장하려면 저장을 클릭하십시오.
- 변경사항을 적용하려면 서버를 다시 시작하십시오.
자세한 사항은 보안 문제점 판별 안내서를 참조하십시오.