モジュール java.base
パッケージ java.security

クラスPolicy

java.lang.Object
java.security.Policy

public abstract class Policy
extends Object
Policyオブジェクトは、Java Runtime Environment内で実行されるコードにセキュリティ依存の操作を実行するアクセス権があるかどうかの判定を行います。

実行時にインストールされるPolicyオブジェクトは、常に1つだけです。 Policyオブジェクトは、setPolicyメソッドを呼び出すことでインストールできます。 インストールされたPolicyオブジェクトを取得するには、getPolicyメソッドを呼び出します。

実行時にPolicyオブジェクトがインストールされなかった場合は、getPolicyを呼び出すと、デフォルトのPolicy実装のインスタンス(この抽象クラスのデフォルトのサブクラス実装)がインストールされます。 デフォルトのPolicy実装を変更するには、policy.providerセキュリティ・プロパティの値を希望するPolicyサブクラス実装の完全修飾名に設定します。 このクラスをロードするには、システム・クラス・ローダーを使用します。

アプリケーション・コードは、Policyを直接サブクラス化して、カスタム実装を提供できます。 また、標準型のgetInstanceファクトリ・メソッドを1つ呼び出すことで、Policyオブジェクトのインスタンスを構築できます。 デフォルトのポリシー型はJavaPolicyです。

Policyインスタンスのインストール(デフォルトのインストールか、setPolicyの呼出しによるインストール)が完了したあと、Javaランタイムは、(ProtectionDomainにカプセル化された)コードを実行することによってセキュリティ・マネージャで保護された操作を実行できるかどうかを判断する必要があるときに、impliesメソッドを呼び出します。 Policyオブジェクトがポリシー・データを取り出す方法は、Policy実装そのものによって異なります。 たとえば、ポリシー・データを、フラットなASCIIファイル、Policyクラスの直列化されたバイナリ・ファイル、またはデータベースに保存できます。

refreshメソッドにより、ポリシー・オブジェクトのデータがリフレッシュまたは再読み込みされます。 この操作は実装に依存します。 たとえば、ポリシー・オブジェクトがそのデータを設定ファイルに格納する場合、refreshを呼び出すと、ポリシー構成ファイルが再度読み込まれます。 リフレッシュ操作がサポートされていない場合、このメソッドは何も行いません。 リフレッシュされたポリシーは、特定のProtectionDomainのクラスに対して有効でない場合があります。 これは、Policyプロバイダのimpliesメソッドの実装と、PermissionCollectionのキャッシュ方法に左右されます。

導入されたバージョン:
1.2
関連項目:
Provider, ProtectionDomain, Permission, セキュリティ・プロパティ
  • フィールド詳細

    • UNSUPPORTED_EMPTY_COLLECTION

      public static final PermissionCollection UNSUPPORTED_EMPTY_COLLECTION
      読取り専用の空のPermissionCollectionインスタンスです。
      導入されたバージョン:
      1.6
  • コンストラクタの詳細

    • ポリシー

      public Policy()
  • メソッドの詳細

    • getPolicy

      public static Policy getPolicy()
      インストール済みのPolicyオブジェクトを返します。 この値はsetPolicyへの呼出しによって変更が可能なので、キャッシュしないでください。 このメソッドは最初にSecurityPermission("getPolicy")アクセス権を使用してSecurityManager.checkPermissionを呼び出し、Policyオブジェクトを取得してもよいかどうかを確認します。
      戻り値:
      インストール済みのPolicy。
      例外:
      SecurityException - セキュリティ・マネージャが存在し、セキュリティ・マネージャのcheckPermissionメソッドがPolicyオブジェクトの取得を許可しない場合。
      関連項目:
      SecurityManager.checkPermission(Permission), setPolicy(java.security.Policy)
    • setPolicy

      public static void setPolicy​(Policy p)
      システム全体のPolicyオブジェクトを設定します。 このメソッドは最初にSecurityPermission("setPolicy")アクセス権を使用してSecurityManager.checkPermissionを呼び出し、Policyを設定してもよいかどうかを確認します。
      パラメータ:
      p - 新規システムPolicyオブジェクト。
      例外:
      SecurityException - セキュリティ・マネージャが存在し、セキュリティ・マネージャのcheckPermissionメソッドがPolicyの設定を許可しない場合。
      関連項目:
      SecurityManager.checkPermission(Permission), getPolicy()
    • getInstance

      public static Policy getInstance​(String type, Policy.Parameters params) throws NoSuchAlgorithmException
      指定された型のPolicyオブジェクトを返します。

      このメソッドは、最優先のProviderから順に、登録済みのセキュリティ・プロバイダのリストをトラバースします。 指定された型をサポートする最初のProviderのPolicySpi実装をカプセル化する新しいPolicyオブジェクトが返されます。

      登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

      実装上のノート:
      JDKリファレンス実装では、jdk.security.provider.preferred Securityプロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。
      パラメータ:
      type - 指定されたPolicy型。 標準ポリシー型のリストについては、「Javaセキュリティ標準アルゴリズム名指定」のポリシーのセクションを参照してください。
      params - Policyのパラメータ。nullの場合もある。
      戻り値:
      新しいPolicyオブジェクト
      例外:
      IllegalArgumentException - 指定されたパラメータが、選択されたProviderからのPolicySpi実装によって理解されない場合
      NoSuchAlgorithmException - Providerが、指定された型のPolicySpi実装をサポートしていない場合
      NullPointerException - typenullである場合
      SecurityException - 呼び出し元に指定された型のPolicyインスタンスを取得する権限がない場合。
      導入されたバージョン:
      1.6
      関連項目:
      Provider
    • getInstance

      public static Policy getInstance​(String type, Policy.Parameters params, String provider) throws NoSuchProviderException, NoSuchAlgorithmException
      指定された型のPolicyオブジェクトを返します。

      指定されたプロバイダのPolicySpi実装をカプセル化する新しいPolicyオブジェクトが返されます。 プロバイダ・リストに登録されたプロバイダを指定する必要があります。

      登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

      パラメータ:
      type - 指定されたPolicy型。 標準ポリシー型のリストについては、「Javaセキュリティ標準アルゴリズム名指定」のポリシーのセクションを参照してください。
      params - Policyのパラメータ。nullの場合もある。
      provider - プロバイダ
      戻り値:
      新しいPolicyオブジェクト
      例外:
      IllegalArgumentException - 指定されたプロバイダがnullまたは空の場合、または指定されたプロバイダが指定されたプロバイダからのPolicySpi実装によって指定されたパラメータを理解できない場合
      NoSuchAlgorithmException - 指定されたプロバイダが、指定された型のPolicySpi実装をサポートしていない場合
      NoSuchProviderException - 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合
      NullPointerException - typenullである場合
      SecurityException - 呼び出し元に、指定された型のPolicyインスタンスを取得する権限がない場合
      導入されたバージョン:
      1.6
      関連項目:
      Provider
    • getInstance

      public static Policy getInstance​(String type, Policy.Parameters params, Provider provider) throws NoSuchAlgorithmException
      指定された型のPolicyオブジェクトを返します。

      指定されたProviderオブジェクトのPolicySpi実装をカプセル化する新しいPolicyオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。

      パラメータ:
      type - 指定されたPolicy型。 標準ポリシー型のリストについては、「Javaセキュリティ標準アルゴリズム名指定」のポリシーのセクションを参照してください。
      params - Policyのパラメータ。nullの場合もある。
      provider - Provider。
      戻り値:
      新しいPolicyオブジェクト
      例外:
      IllegalArgumentException - 指定されたProvidernullである場合、または指定されたパラメータが指定されたProviderからPolicySpi実装によって理解されない場合
      NoSuchAlgorithmException - 指定されたProviderが、指定された型のPolicySpi実装をサポートしていない場合
      NullPointerException - typenullである場合
      SecurityException - 呼び出し元に、指定された型のPolicyインスタンスを取得する権限がない場合
      導入されたバージョン:
      1.6
      関連項目:
      Provider
    • getProvider

      public Provider getProvider()
      このPolicyのProviderを返します。

      このPolicyインスタンスは、Policy.getInstanceの呼出しによって取得された場合にかぎりProviderを持ちます。 そうでない場合は、このメソッドはnullを返します。

      戻り値:
      このPolicyのProvider、またはnull。
      導入されたバージョン:
      1.6
    • getType

      public String getType()
      このPolicyの型を返します。

      このPolicyインスタンスは、Policy.getInstanceの呼出しによって取得された場合にかぎり型を持ちます。 そうでない場合は、このメソッドはnullを返します。

      戻り値:
      このPolicyの型、またはnull。
      導入されたバージョン:
      1.6
    • getParameters

      public Policy.Parameters getParameters()
      Policyパラメータを返します。

      このPolicyインスタンスは、Policy.getInstanceの呼出しによって取得された場合にかぎりパラメータを持ちます。 そうでない場合は、このメソッドはnullを返します。

      戻り値:
      Policyパラメータ、またはnull。
      導入されたバージョン:
      1.6
    • getPermissions

      public PermissionCollection getPermissions​(CodeSource codesource)
      指定されたCodeSourceに付与されたアクセス権のセットを含むPermissionCollectionオブジェクトを返します。

      この操作はすべてのポリシー実装ではサポートされない可能性があるため、アプリケーションでこのメソッドを呼び出すことはお薦めしません。 アプリケーションは、ポリシー・チェックを行うために、もっぱらimpliesメソッドを使用するべきです。 アプリケーションでどうしてもgetPermissionsメソッドを呼び出す必要がある場合は、getPermissions(ProtectionDomain)を呼び出すようにしてください。

      このメソッドのデフォルト実装は、Policy.UNSUPPORTED_EMPTY_COLLECTIONを返します。 ポリシー実装がCodeSourceに付与されたアクセス権のセットを返すことができる場合、このメソッドはオーバーライドできます。

      パラメータ:
      codesource - 返されるPermissionCollectionが付与されているCodeSource。
      戻り値:
      指定されたCodeSourceに付与されたアクセス権のセット。 この操作がサポートされている場合、返されるアクセス権のセットは新しい可変インスタンスであり、かつ複数の種類のPermission型をサポートしている必要がある。 この操作がサポートされていない場合、Policy.UNSUPPORTED_EMPTY_COLLECTIONが返される。
    • getPermissions

      public PermissionCollection getPermissions​(ProtectionDomain domain)
      指定されたProtectionDomainに付与されたアクセス権のセットを含むPermissionCollectionオブジェクトを返します。

      この操作はすべてのポリシー実装ではサポートされない可能性があるため、アプリケーションでこのメソッドを呼び出すことはお薦めしません。 アプリケーションは、ポリシー・チェックを行うためにimpliesメソッドを使用するべきです。

      このメソッドのデフォルト実装は、最初に、getPermissions(CodeSource)から返されるアクセス権(指定されたProtectionDomainから取得されるCodeSource)と、指定されたProtectionDomain内にあるアクセス権を取得します。 次に、これらすべてのアクセス権が結合され、新しい単一のPermissionCollectionオブジェクトとして返されます。 getPermissions(CodeSource)がPolicy.UNSUPPORTED_EMPTY_COLLECTIONを返した場合、このメソッドは、指定されたProtectionDomain内のアクセス権を、新しい単一のPermissionCollectionオブジェクトとして返します。

      ポリシー実装がProtectionDomainに付与されたアクセス権のセットを返すことができる場合、このメソッドはオーバーライドできます。

      パラメータ:
      domain - 返されるPermissionCollectionが付与されているProtectionDomain。
      戻り値:
      指定されたProtectionDomainに付与されたアクセス権のセット。 この操作がサポートされている場合、返されるアクセス権のセットは新しい可変インスタンスであり、かつ複数の種類のPermission型をサポートしている必要がある。 この操作がサポートされていない場合、Policy.UNSUPPORTED_EMPTY_COLLECTIONが返される。
      導入されたバージョン:
      1.4
    • implies

      public boolean implies​(ProtectionDomain domain, Permission permission)
      ProtectionDomainに許可されたアクセス権についてグローバル・ポリシーを評価し、そのアクセス権が許可されているかどうかを判定します。
      パラメータ:
      domain - 判定対象のProtectionDomain
      permission - 含まれているかどうかを判定するPermissionオブジェクト。
      戻り値:
      permissionがこのProtectionDomainに許可されたアクセス権の適切なサブセットの場合はtrue。
      導入されたバージョン:
      1.4
      関連項目:
      ProtectionDomain
    • refresh

      public void refresh()
      ポリシー構成をリフレッシュまたは再読込みします。 このメソッドの動作は実装に依存します。 たとえば、ファイルの形式のポリシーに対してrefreshを呼び出すと、ファイルが再読み込みされます。

      このメソッドのデフォルト実装では何の処理も行われません。 ポリシー実装によってリフレッシュ操作がサポートされている場合、このメソッドはオーバーライドされます。