Policy

Policy (보안 정책)

Java 런타임에서 실행 중인 코드가 보안에 민감한 작업을 수행할 권한이 있는지 결정하는 Policy 객체를 나타내는 추상 클래스입니다.

출처: Java API Reference

본문

런타임에는 언제든 하나의 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) 향후 제거될 수 있습니다. 이들을 대체하는 것은 없습니다.

더 알아보기 (Learn more)

Java 공식 API