SecurityManager — 보안 관리자 클래스
SecurityManager — 보안 관리자 클래스
보안 관리자(security manager)는 애플리케이션이 보안 정책을 구현할 수 있게 해 주는 클래스예요. 애플리케이션이 잠재적으로 안전하지 않거나 민감한 연산을 수행하기 전에, 그 연산이 무엇인지, 해당 연산을 허용하는 보안 컨텍스트에서 수행되는지 여부를 결정할 수 있게 해 줘요. 애플리케이션은 연산을 허용하거나 금지할 수 있어요. SecurityManager 클래스에는 이름이 check로 시작하는 많은 메서드가 있어요. 자바 라이브러리의 여러 메서드가 특정 작업을 수행하기 전에 이 메서드들을 호출해요.
본문
public SecurityManager() — 보안 관리자를 만들어요. 기본적으로 시스템 속성에 따라 보안 검사가 활성화되도록 설정해요.
protected Class<?>[] getClassContext() — 현재 실행 스택의 클래스 컨텍스트를 배열로 반환해요.
public Object getSecurityContext() — 현재 실행 컨텍스트를 캡슐화한 객체를 반환해요.
public void checkPermission(Permission perm) — 호출 스레드가 지정된 권한을 갖는지 검사해요. 권한이 없으면 SecurityException을 던져요.
public void checkPermission(Permission perm, Object context) — 주어진 액세스 컨텍스트에서 지정된 권한을 검사해요.
아래는 각종 특정 연산을 검사하는 check* 메서드들이에요. 모두 권한이 없으면 SecurityException을 던져요.
checkCreateClassLoader() — 클래스 로더 생성 권한을 검사해요.
checkAccess(Thread t) / checkAccess(ThreadGroup g) — 스레드/스레드 그룹 수정 권한을 검사해요.
checkExit(int status) — VM 종료 권한을 검사해요.
checkExec(String cmd) — 프로세스 실행 권한을 검사해요.
checkLink(String lib) — 네이티브 라이브러리 로드 권한을 검사해요.
checkRead(FileDescriptor fd) / checkRead(String file) / checkRead(String file, Object context) — 파일 읽기 권한을 검사해요.
SecurityManager는 JDK 17부터 사용 중지(더 이상 사용되지 않고 제거 예정)되었어요. JDK 18부터 기본적으로 비활성화되며, 애플리케이션은 직접 실행할 수 있지만 경고가 표시돼요.