Policy
Policy (보안 정책)
Java 런타임에서 실행 중인 코드가 보안에 민감한 작업을 수행할 권한이 있는지 결정하는 Policy 객체를 나타내는 추상 클래스입니다.
본문
런타임에는 언제든 하나의 Policy 객체만 설치됩니다. setPolicy 메서드로 설치하고, getPolicy 메서드로 얻습니다. 설치된 Policy가 없으면 getPolicy 호출 시 기본 Policy 구현 인스턴스가 설치됩니다. 기본 구현은 policy.provider 보안 속성 값으로 바꿀 수 있습니다.
애플리케이션 코드는 Policy를 직접 상속해 맞춤 구현을 제공할 수 있습니다. 또한 getInstance 팩토리 메서드에 표준 타입을 지정해 Policy 인스턴스를 만들 수 있으며, 기본 정책 타입은 "JavaPolicy"입니다.
Policy 인스턴스가 설치되면 Java 런타임은 실행 중인 코드(ProtectionDomain으로 캡슐화)가 SecurityManager로 보호되는 작업을 수행할 수 있는지 판단할 때 implies 메서드를 호출합니다. 정책 데이터를 어떻게 가져오는지는 구현에 달려 있으며, 평문 ASCII 파일·직렬화된 이진 파일·데이터베이스 등에 저장될 수 있습니다. refresh 메서드는 정책 데이터를 새로 고치거나 다시 로드합니다.
Policy가 제공하는 주요 메서드는 다음과 같습니다.
public static Policy getPolicy()— 설치된Policy객체를 반환합니다.SecurityManager.checkPermission(new SecurityPermission("getPolicy"))를 먼저 호출합니다.public static void setPolicy(Policy p)— 시스템 전역Policy객체를 설정합니다.SecurityPermission("setPolicy")권한을 먼저 검사합니다.public static Policy getInstance(String type, Policy.Parameters params)— 지정된 타입의Policy객체를 반환합니다.public static Policy getInstance(String type, Policy.Parameters params, String provider)— 지정된 프로바이더에서 타입을 지원하는Policy를 반환합니다.public static Policy getInstance(String type, Policy.Parameters params, Provider provider)— 주어진Provider객체로Policy를 반환합니다.public Provider getProvider()— 이 정책의 프로바이더를 반환합니다.getInstance로 얻은 경우에만 존재하며, 그렇지 않으면null입니다.public String getType(),public Policy.Parameters getParameters()— 정책의 타입과 매개변수를 반환합니다.public PermissionCollection getPermissions(CodeSource codesource)— 지정된CodeSource에 부여된 권한 집합을 담는PermissionCollection을 반환합니다.public PermissionCollection getPermissions(ProtectionDomain domain)— 지정된ProtectionDomain에 부여된 권한 집합을 반환합니다.public boolean implies(ProtectionDomain domain, Permission permission)— 전역 정책을 평가해ProtectionDomain에 권한이 부여되었는지 검사합니다.public void refresh()— 정책 데이터를 새로 고칩니다.
참고:
SecurityManager와 이 클래스는 더 이상 사용되지 않으며(Deprecated) 향후 제거될 수 있습니다. 이들을 대체하는 것은 없습니다.