JavaTM Platform
Standard Ed. 6

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 実装のインスタンス (この abstract クラスのデフォルトのサブクラス実装) がインストールされます。デフォルトの Policy 実装を変更するには、(Java セキュリティープロパティーファイルの) policy.provider セキュリティープロパティーの値を、希望する Policy サブクラス実装の完全指定名に変更します。Java セキュリティープロパティーファイルは、<JAVA_HOME>/lib/security/java.security という名前のファイルに格納されています。<JAVA_HOME> は java.home システムプロパティーの値を参照しており、JRE のインストールディレクトリを示します。  

アプリケーションコードは、Policy を直接サブクラス化して、カスタム実装を提供できます。また、標準型の getInstance ファクトリメソッドを 1 つ呼び出すことで、Policy オブジェクトのインスタンスを構築できます。デフォルトのポリシー型は JavaPolicy です。標準の Policy 型のリストは、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照  

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

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

関連項目:
Provider, ProtectionDomain, Permission

入れ子のクラスの概要
static interface Policy.Parameters
          このインタフェースは、Policy パラメータのマーカーインタフェースです。
 
フィールドの概要
static PermissionCollection UNSUPPORTED_EMPTY_COLLECTION
          読み取り専用の空の PermissionCollection インスタンスです。
 
コンストラクタの概要
Policy()
           
 
メソッドの概要
static Policy getInstance(String type, Policy.Parameters params)
          指定された型の Policy オブジェクトを返します。
static Policy getInstance(String type, Policy.Parameters params, Provider provider)
          指定された型の Policy オブジェクトを返します。
static Policy getInstance(String type, Policy.Parameters params, String provider)
          指定された型の Policy オブジェクトを返します。
 Policy.Parameters getParameters()
          Policy パラメータを返します。
 PermissionCollection getPermissions(CodeSource codesource)
          指定された CodeSource に付与されたアクセス権のセットを含む PermissionCollection オブジェクトを返します。
 PermissionCollection getPermissions(ProtectionDomain domain)
          指定された ProtectionDomain に付与されたアクセス権のセットを含む PermissionCollection オブジェクトを返します。
static Policy getPolicy()
          インストール済みの Policy オブジェクトを返します。
 Provider getProvider()
          この Policy の Provider を返します。
 String getType()
          この Policy の型を返します。
 boolean implies(ProtectionDomain domain, Permission permission)
          ProtectionDomain に許可されたアクセス権についてグローバルポリシーを評価し、そのアクセス権が許可されているかどうかを判定します。
 void refresh()
          ポリシー設定をリフレッシュまたは再読み込みします。
static void setPolicy(Policy p)
          システム全体の Policy オブジェクトを設定します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

UNSUPPORTED_EMPTY_COLLECTION

public static final PermissionCollection UNSUPPORTED_EMPTY_COLLECTION
読み取り専用の空の PermissionCollection インスタンスです。

導入されたバージョン:
1.6
コンストラクタの詳細

Policy

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() メソッド経由で取得できます。

パラメータ:
type - 指定された Policy 型。標準の Policy 型のリストは、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
params - Policy のパラメータ。null の場合もある
戻り値:
新しい Policy オブジェクト
例外:
SecurityException - 呼び出し側に、指定された型の Policy インスタンスを取得するアクセス権がない場合
NullPointerException - 指定された型が null の場合
IllegalArgumentException - 指定されたパラメータが、選択された Provider の PolicySpi 実装によって認識されない場合
NoSuchAlgorithmException - 指定された型の PolicySpi 実装をサポートする Provider が存在しない場合
導入されたバージョン:
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 型。標準の Policy 型のリストは、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
params - Policy のパラメータ。null の場合もある
provider - プロバイダ
戻り値:
新しい Policy オブジェクト
例外:
SecurityException - 呼び出し側に、指定された型の Policy インスタンスを取得するアクセス権がない場合
NullPointerException - 指定された型が null の場合
IllegalArgumentException - 指定されたプロバイダが null か空の場合、または指定されたパラメータが指定されたプロバイダの PolicySpi 実装によって認識されない場合
NoSuchProviderException - 指定されたプロバイダがセキュリティープロバイダリストに登録されていない場合
NoSuchAlgorithmException - 指定されたプロバイダが、指定された型の PolicySpi 実装をサポートしない場合
導入されたバージョン:
1.6
関連項目:
Provider

getInstance

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

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

パラメータ:
type - 指定された Policy 型。標準の Policy 型のリストは、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
params - Policy のパラメータ。null の場合もある
provider - Provider
戻り値:
新しい Policy オブジェクト
例外:
SecurityException - 呼び出し側に、指定された型の Policy インスタンスを取得するアクセス権がない場合
NullPointerException - 指定された型が null の場合
IllegalArgumentException - 指定されたプロバイダが null の場合、または指定されたパラメータが指定されたプロバイダの PolicySpi 実装によって認識されない場合
NoSuchAlgorithmException - 指定されたプロバイダが、指定された型の PolicySpi 実装をサポートしない場合
導入されたバージョン:
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 を呼び出すと、ファイルが再読み込みされます。  

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


JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。