- 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
,セキュリティ・プロパティ
-
-
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 クラス 説明 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, String provider)
指定された型のPolicyオブジェクトを返します。static Policy
getInstance(String type, Policy.Parameters params, Provider 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オブジェクトを設定します。
-
-
-
フィールドの詳細
-
UNSUPPORTED_EMPTY_COLLECTION
public static final PermissionCollection UNSUPPORTED_EMPTY_COLLECTION
読取り専用の空のPermissionCollectionインスタンスです。- 導入されたバージョン:
- 1.6
-
-
メソッドの詳細
-
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
-type
がnull
である場合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
-type
がnull
である場合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
- 指定されたProvider
がnull
である場合、または指定されたパラメータが指定されたProvider
からPolicySpi
実装によって理解されない場合NoSuchAlgorithmException
- 指定されたProvider
が、指定された型のPolicySpi
実装をサポートしていない場合NullPointerException
-type
がnull
である場合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
- 判定対象のProtectionDomainpermission
- 含まれているかどうかを判定するPermissionオブジェクト。- 戻り値:
- permissionがこのProtectionDomainに許可されたアクセス権の適切なサブセットの場合はtrue。
- 導入されたバージョン:
- 1.4
- 関連項目:
ProtectionDomain
-
refresh
public void refresh()
ポリシー構成をリフレッシュまたは再読込みします。 このメソッドの動作は実装に依存します。 たとえば、ファイルの形式のポリシーに対してrefresh
を呼び出すと、ファイルが再読み込みされます。このメソッドのデフォルト実装では何の処理も行われません。 ポリシー実装によってリフレッシュ操作がサポートされている場合、このメソッドはオーバーライドされます。
-
-