public class SecurityManager extends Object
SecurityManagerクラスには、名前がcheckで始まるメソッドが多数あります。 これらのメソッドは、Javaライブラリ内の各種メソッドによって、セキュリティを損なう可能性のある操作を実行する前に呼び出されます。 このようなcheckメソッド呼出しの一般的な例を次に示します。
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkXXX(argument, . . . );
}
これにより、セキュリティ・マネージャには、例外をスローしてオペレーションの実行を阻止する機会が与えられます。 セキュリティ・マネージャ・ルーチンは、操作が許可される場合は何も行わずに復帰します。操作が許可されない場合はSecurityExceptionをスローします。 ただし、checkTopLevelWindowはこうした規約の唯一の例外で、boolean値を返します。
現在のセキュリティ・マネージャを設定するには、SystemクラスのsetSecurityManagerメソッドを使用します。 現在のセキュリティ・マネージャを取得するにはgetSecurityManagerメソッドを使用します。
特殊メソッドcheckPermission(java.security.Permission)は、指定されたアクセス権によって示されるアクセス要求が許可されるか、拒否されるかを決定します。 デフォルトの実装では、次のメソッドが呼び出されます。
AccessController.checkPermission(perm);
要求されたアクセス権が許可される場合、checkPermissionは何もしないで復帰します。 許可されない場合は、SecurityExceptionがスローされます。
Java 2 SDK v1.2のSecurityManagerにあるその他のcheck系メソッドのデフォルトの実装では、SecurityManager checkPermissionメソッドが呼び出されます。この方法で、要求された操作の実行に必要なアクセス権が呼出し側スレッドにあるかどうかを調べます。
アクセス権の引数が1つだけのcheckPermissionメソッドは常に、現在実行中のスレッドのコンテキスト内だけでセキュリティ・チェックを実行します。 しかし実際には、指定されたコンテキスト内で行うセキュリティ・チェックを、別のコンテキスト内から(たとえば、ワーカー・スレッド内から)行わなければならない場合もあります。 getSecurityContextメソッドと、コンテキスト引数を含むcheckPermissionメソッドは、この状況のために用意されたものです。 getSecurityContextメソッドは、現在の呼出し側コンテキストのスナップショットを返します。 デフォルトの実装ではAccessControlContextオブジェクトを返します。 呼出しの例を次に示します。
Object context = null; SecurityManager sm = System.getSecurityManager(); if (sm != null) context = sm.getSecurityContext();
アクセス権に加えてコンテキスト・オブジェクトも受け取るcheckPermissionメソッドは、実行中のスレッドのコンテキストではなく、渡されたコンテキストに従ってアクセスを判定します。 このため、別のコンテキスト内のコードは、アクセス権と直前に保存したコンテキスト・オブジェクトを渡すことによって、このメソッドを呼び出すことができます。 次に示す呼出し例では、上の例で取得したセキュリティ・マネージャsmを使用しています。
if (sm != null) sm.checkPermission(permission, context);
アクセス権は、カテゴリFile、Socket、Net、Security、Runtime、Property、AWT、Reflect、Serializableのどれかに分類されます。 これらの各種アクセス権カテゴリを管理するクラスが、java.io.FilePermission、java.net.SocketPermission、java.net.NetPermission、java.security.SecurityPermission、java.lang.RuntimePermission、java.util.PropertyPermission、java.awt.AWTPermission, java.lang.reflect.ReflectPermission、およびjava.io.SerializablePermissionです。
FilePermissionとSocketPermission以外のクラスは、java.security.BasicPermissionのサブクラスです。このjava.security.BasicPermission自身は、アクセス権のトップ・レベルであるjava.security.Permissionの抽象サブクラスです。 BasicPermissionは、「exitVM」、「setFactory」、「queuePrintJob」といった、階層的プロパティ命名規則に従う名前を含むすべてのアクセス権のために必要な機能を定義します。 名前の末尾には「*」や「.*」を付けて、ワイルドカードを指定できます。 たとえば、「a.」や「*」は有効ですが、「*a」や「a*b」は無効です。
FilePermissionとSocketPermissionは、アクセス権のトップ・レベルjava.security.Permissionのサブクラスです。 これらのクラスは、BasicPermissionよりも複雑な名前構文を持ち、BasicPermissionではなくPermissionから直接サブクラス化されます。 たとえば、java.io.FilePermissionオブジェクトの場合、アクセス権の名前はファイルまたはディレクトリのパス名です。
アクセス権クラスの中には、オブジェクトに許可されているアクションを示すアクション・リストを持つものがあります。 たとえばjava.io.FilePermissionオブジェクトの場合、「read, write」といったアクション・リストは、特定のファイルまたは指定されたディレクトリにあるファイルに対して実行できるアクションを示します。
その他のアクセス権クラスは、名前の付いたアクセス権(名前付きアクセス権)に使用します。名前付きアクセス権は、名前は持ちますが、アクション・リストを持ちません。名前付きアクセス権はあってもなくてもかまいません。
ノート: すべてのアクセス権を暗黙的に指定するjava.security.AllPermissionというアクセス権もあります。 これは、すべての(あるいは多くの)アクセス権を要求する複数のタスクを実行する必要がある、システム管理者の作業を単純化するためのアクセス権です。
アクセス権に関する情報については、JDKでのアクセス権を参照してください。 このドキュメントには、SecurityManagerの各種checkメソッドや、そのようなメソッドのデフォルトの実装に必要なアクセス権の一覧表があります。 また、アクセス権を必要とするバージョン1.2のすべてのメソッドと、各メソッドに必要なアクセス権をまとめた表もあります。
JDKでのSecurityManagerに関する変更点と、1.1形式のセキュリティ・マネージャを移植する際のアドバイスについては、セキュリティ・ドキュメントを参照してください。
ClassLoader, SecurityException, checkTopLevelWindow, getSecurityManager, setSecurityManager, AccessController, AccessControlContext, AccessControlException, Permission, BasicPermission, FilePermission, SocketPermission, PropertyPermission, RuntimePermission, AWTPermission, Policy, SecurityPermission, ProtectionDomain| 修飾子と型 | フィールド | 説明 |
|---|---|---|
protected boolean |
inCheck |
非推奨。
このタイプのセキュリティ・チェックは非推奨です。 代わりに
checkPermissionの呼出しを使用することをお薦めします。 |
| コンストラクタ | 説明 |
|---|---|
SecurityManager() |
新しい
SecurityManagerを構築します。 |
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
void |
checkAccept(String host, int port) |
指定されたホストとポート番号からのソケット接続を受け取ることが、呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkAccess(Thread t) |
呼出し側スレッドがスレッド引数の修正を許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkAccess(ThreadGroup g) |
呼出し側スレッドが、スレッド・グループ引数の修正を許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkAwtEventQueueAccess() |
非推奨。
AWTPermissionへの依存は、Javaプラットフォームの将来のモジュラ化に対する障害になります。 このメソッドのユーザーは代わりにcheckPermission(java.security.Permission)を直接呼び出してください。 このメソッドは将来のリリースでアクセス権java.security.AllPermissionをチェックするように変更されます。 |
void |
checkConnect(String host, int port) |
指定されたホストとポート番号へのソケット接続をオープンすることが、呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkConnect(String host, int port, Object context) |
指定されたセキュリティ・コンテキストが、指定されたホストとポート番号へのソケット接続をオープンするアクセス権を持っていない場合に、
SecurityExceptionをスローします。 |
void |
checkCreateClassLoader() |
呼出し側スレッドが新しいクラス・ローダーの作成を許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkDelete(String file) |
指定されたファイルを削除することが呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkExec(String cmd) |
サブプロセスの作成が呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkExit(int status) |
指定されたステータス・コードでJava仮想マシンを停止させる許可を、呼出し側のスレッドが持っていない場合に、
SecurityExceptionをスローします。 |
void |
checkLink(String lib) |
文字列引数ファイルで指定されたライブラリ・コードへの動的リンクが、呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkListen(int port) |
指定されたローカル・ポート番号で接続要求を待機することが呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkMemberAccess(Class<?> clazz, int which) |
非推奨。
このメソッドは、エラーが発生しやすく、ランタイムによって強制できないスタックの深さ4にある呼び出し側に依存します。 このメソッドのユーザーは代わりに
checkPermission(java.security.Permission)を直接呼び出してください。 このメソッドは将来のリリースでアクセス権java.security.AllPermissionをチェックするように変更されます。 |
void |
checkMulticast(InetAddress maddr) |
IPマルチキャスト(join/leave/send/receive)の使用が呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkMulticast(InetAddress maddr, byte ttl) |
非推奨。
代わりに#checkPermission(java.security.Permission)を使用する
|
void |
checkPackageAccess(String pkg) |
引数で指定されたパッケージへのアクセスが呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkPackageDefinition(String pkg) |
引数で指定されたパッケージ内のクラスを定義することが呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkPermission(Permission perm) |
指定されたアクセス権で要求したアクセスが、現在有効なセキュリティ・ポリシーに照らして許可されなかった場合に、
SecurityExceptionをスローします。 |
void |
checkPermission(Permission perm, Object context) |
指定されたセキュリティ・コンテキストが、指定されたアクセス権が示すリソースへのアクセスを拒否された場合に、
SecurityExceptionをスローします。 |
void |
checkPrintJobAccess() |
印刷ジョブ要求の開始が呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkPropertiesAccess() |
システム・プロパティのアクセスまたは変更が呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkPropertyAccess(String key) |
keyで指定されたシステム・プロパティへのアクセスが、呼出し側スレッドに許可されていない場合に、SecurityExceptionをスローします。 |
void |
checkRead(FileDescriptor fd) |
指定されたファイル記述子からの読取りが呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkRead(String file) |
文字列引数で指定されたファイルの読取りが呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkRead(String file, Object context) |
文字列引数で指定されたファイルを読み取る許可が、指定されたセキュリティ・コンテキストにない場合に、
SecurityExceptionをスローします。 |
void |
checkSecurityAccess(String target) |
指定されたアクセス権ターゲット名のアクセス権を許可するか、あるいは拒否するかを判定します。
|
void |
checkSetFactory() |
ServerSocketまたはSocketが使用するソケット・ファクトリ、またはURLが使用するストリーム・ハンドラ・ファクトリを設定することが呼出し側スレッドに許可されていない場合に、SecurityExceptionをスローします。 |
void |
checkSystemClipboardAccess() |
非推奨。
AWTPermissionへの依存は、Javaプラットフォームの将来のモジュラ化に対する障害になります。 このメソッドのユーザーは代わりにcheckPermission(java.security.Permission)を直接呼び出してください。 このメソッドは将来のリリースでアクセス権java.security.AllPermissionをチェックするように変更されます。 |
boolean |
checkTopLevelWindow(Object window) |
非推奨。
AWTPermissionへの依存は、Javaプラットフォームの将来のモジュラ化に対する障害になります。 このメソッドのユーザーは代わりにcheckPermission(java.security.Permission)を直接呼び出してください。 このメソッドは将来のリリースでアクセス権java.security.AllPermissionをチェックするように変更されます。 |
void |
checkWrite(FileDescriptor fd) |
指定されたファイル記述子への書込みが呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
void |
checkWrite(String file) |
文字列引数で指定されたファイルへの書込みが呼出し側スレッドに許可されていない場合に、
SecurityExceptionをスローします。 |
protected int |
classDepth(String name) |
非推奨。
このタイプのセキュリティ・チェックは非推奨です。 代わりに
checkPermissionの呼出しを使用することをお薦めします。 |
protected int |
classLoaderDepth() |
非推奨。
このタイプのセキュリティ・チェックは非推奨です。 代わりに
checkPermissionの呼出しを使用することをお薦めします。 |
protected ClassLoader |
currentClassLoader() |
非推奨。
このタイプのセキュリティ・チェックは非推奨です。 代わりに
checkPermissionの呼出しを使用することをお薦めします。 |
protected Class<?> |
currentLoadedClass() |
非推奨。
このタイプのセキュリティ・チェックは非推奨です。 代わりに
checkPermissionの呼出しを使用することをお薦めします。 |
protected Class[] |
getClassContext() |
現在の例外実行スタックをクラスの配列として返します。
|
boolean |
getInCheck() |
非推奨。
このタイプのセキュリティ・チェックは非推奨です。 代わりに
checkPermissionの呼出しを使用することをお薦めします。 |
Object |
getSecurityContext() |
現在の実行環境をカプセル化するオブジェクトを生成します。
|
ThreadGroup |
getThreadGroup() |
このメソッドを呼び出したときに作成される、任意の新しいスレッドのインスタンスを生成するための、スレッド・グループを返します。
|
protected boolean |
inClass(String name) |
非推奨。
このタイプのセキュリティ・チェックは非推奨です。 代わりに
checkPermissionの呼出しを使用することをお薦めします。 |
protected boolean |
inClassLoader() |
非推奨。
このタイプのセキュリティ・チェックは非推奨です。 代わりに
checkPermissionの呼出しを使用することをお薦めします。 |
@Deprecated protected boolean inCheck
checkPermissionの呼出しを使用することをお薦めします。 trueです。そうでない場合はfalseです。public SecurityManager()
SecurityManagerを構築します。
セキュリティ・マネージャがすでにインストールされている場合、このメソッドは最初にセキュリティ・マネージャのcheckPermissionメソッドを呼び出します。このとき、RuntimePermission("createSecurityManager")アクセス権を使用することにより、呼出し側のスレッドが新しいセキュリティ・マネージャを作成するアクセス権を確実に持つようにします。 その結果、SecurityExceptionがスローされることがあります。
SecurityException - セキュリティ・マネージャがすでにあり、そのcheckPermissionメソッドが、新しいセキュリティ・マネージャの作成を許可しない場合。System.getSecurityManager(), checkPermission, RuntimePermission@Deprecated public boolean getInCheck()
checkPermissionの呼出しを使用することをお薦めします。 inCheckフィールドの値。 セキュリティ・チェックが進行中の場合はtrue、そうでない場合はfalse。 inCheckprotected Class[] getClassContext()
配列の長さは、実行スタック上にあるメソッドの数になります。 インデックス0の要素は現在メソッドを実行中のクラス、インデックス1の要素はそのメソッドの呼出しクラスとなります。
@Deprecated protected ClassLoader currentClassLoader()
checkPermissionの呼出しを使用することをお薦めします。 ClassLoader.getSystemClassLoader()によって返される)またはその祖先のひとつに等しくないクラス・ローダーであると定義されます。
このメソッドは、次の3つの場合にnullを返します。
AccessController.doPrivileged(java.security.PrivilegedAction<T>)を参照)までの実行スタック上のすべてのメソッドが、システム・クラス・ローダーまたはその上位オブジェクトの1つを使って定義されたクラスからのものである場合。
java.security.AllPermissionを使ってcheckPermissionを呼び出したときに、結果がSecurityExceptionではない場合。
getSystemClassLoader, checkPermission@Deprecated protected Class<?> currentLoadedClass()
checkPermissionの呼出しを使用することをお薦めします。 ClassLoader.getSystemClassLoader()によって返される)またはその祖先のひとつに等しくないクラス・ローダーであると定義されます。
このメソッドは、次の3つの場合にnullを返します。
AccessController.doPrivileged(java.security.PrivilegedAction<T>)を参照)までの実行スタック上のすべてのメソッドが、システム・クラス・ローダーまたはその上位オブジェクトの1つを使って定義されたクラスからのものである場合。
java.security.AllPermissionを使ってcheckPermissionを呼び出したときに、結果がSecurityExceptionではない場合。
getSystemClassLoader, checkPermission@Deprecated protected int classDepth(String name)
checkPermissionの呼出しを使用することをお薦めします。 name - 検索するクラスの完全指定の名前。-1。@Deprecated protected int classLoaderDepth()
checkPermissionの呼出しを使用することをお薦めします。 ClassLoader.getSystemClassLoader()によって返される)またはその祖先のひとつに等しくないクラス・ローダーであると定義されます。
このメソッドは、次の場合に -1を返します。
AccessController.doPrivileged(java.security.PrivilegedAction<T>)を参照)までの実行スタック上のすべてのメソッドが、システム・クラス・ローダーまたはその上位オブジェクトの1つを使って定義されたクラスからのものである場合。
java.security.AllPermissionを使ってcheckPermissionを呼び出したときに、結果がSecurityExceptionではない場合。
getSystemClassLoader, checkPermission@Deprecated protected boolean inClass(String name)
checkPermissionの呼出しを使用することをお薦めします。 name - クラスの完全指定の名前。true、ない場合はfalse。@Deprecated protected boolean inClassLoader()
checkPermissionの呼出しを使用することをお薦めします。 currentClassLoaderの呼出しの戻り値がnullでない場合はtrue。currentClassLoaderpublic Object getSecurityContext()
checkConnectメソッドや、2つの引数を取るcheckReadメソッドなどで使います。 これらのメソッドが必要なのは、信頼できるメソッドが、別のメソッドの代わりにファイルを読み込んだり、ソケットをオープンしたりするために呼び出されるからです。 信頼できるメソッドは、ほかの(おそらくは信頼できない)メソッドがその操作を自分で行うことを許可されているかどうかを、判定する必要があります。
このメソッドのデフォルトの実装は、AccessControlContextオブジェクトを返します。
checkConnect, checkRead, AccessControlContextpublic void checkPermission(Permission perm)
SecurityExceptionをスローします。
このメソッドは、指定されたアクセス権でAccessController.checkPermissionを呼び出します。
perm - 要求されたアクセス権。SecurityException - 現在のセキュリティ・ポリシーによってアクセスが拒否された場合。NullPointerException - アクセス権の引数がnullの場合。public void checkPermission(Permission perm, Object context)
SecurityExceptionをスローします。 contextは、直前のgetSecurityContext呼出しによって返されたセキュリティ・コンテキストである必要があります。アクセス制御の決定は、このセキュリティ・コンテキストに対して構成されているセキュリティ・ポリシーに基づいて行われます。
contextがAccessControlContextのインスタンスである場合、AccessControlContext.checkPermissionメソッドが指定されたアクセス権で呼び出されます。
contextがAccessControlContextのインスタンスでない場合は、SecurityExceptionがスローされます。
perm - 指定されたアクセス権context - システム依存のセキュリティ・コンテキスト。SecurityException - 指定されたセキュリティ・コンテキストがAccessControlContextのインスタンスでない(たとえばnullである)か、あるいは指定されたアクセス権が示すリソースへのアクセスを拒否された場合。NullPointerException - アクセス権の引数がnullの場合。getSecurityContext(), AccessControlContext.checkPermission(java.security.Permission)public void checkCreateClassLoader()
SecurityExceptionをスローします。
このメソッドは、アクセス権RuntimePermission("createClassLoader")を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkCreateClassLoaderが呼び出されるようにしてください。
SecurityException - 呼出し側のスレッドが、新しいクラス・ローダーを作成できるアクセス権を持たない場合。ClassLoader.ClassLoader(), checkPermissionpublic void checkAccess(Thread t)
SecurityExceptionをスローします。
このメソッドは、Threadクラスのstop、suspend、resume、setPriority、setName、およびsetDaemonメソッドによって、現在のセキュリティ・マネージャに対して呼び出されます。
スレッドの引数がシステム・スレッド(親がnullであるスレッド・グループに属するスレッド)の場合、このメソッドはRuntimePermission("modifyThread")アクセス権でcheckPermissionを呼び出します。 スレッドの引数がシステム・スレッドでない場合、このメソッドは何もしないで復帰します。
より厳しいポリシーが必要なアプリケーションでは、このメソッドをオーバーライドする必要があります。 このメソッドをオーバーライドする場合、オーバーライド側のメソッドは、呼出し側スレッドがRuntimePermission("modifyThread")アクセス権を持つかどうかも確認する必要があります。アクセス権を持っている場合、このメソッドが何もせずに復帰するようにしてください。 これは、そのアクセス権を与えられたコード(JDK自体など)がどんなスレッドでも扱えるようにするためです。
このメソッドをオーバーライドする場合は、オーバーライドされたメソッドの1番目の文でsuper.checkAccessを呼び出すか、オーバーライドされたメソッドに同等のセキュリティ・チェックを記述してください。
t - チェック対象のスレッド。SecurityException - 呼出し側スレッドに、このスレッドを変更するのに必要なアクセス権がない場合。NullPointerException - スレッド引数がnullの場合。resume, setDaemon, setName, setPriority, stop, suspend, checkPermissionpublic void checkAccess(ThreadGroup g)
SecurityExceptionをスローします。
このメソッドは、子スレッドまたは子スレッド・グループが新しく作成されたときに、ThreadGroupクラスのsetDaemon、setMaxPriority、stop、suspend、resume、destroyの各メソッドによって、現在のセキュリティ・マネージャに対して呼び出されます。
スレッド・グループの引数がシステム・スレッド・グループ(親がnull)の場合、このメソッドは、RuntimePermission("modifyThreadGroup")アクセス権でcheckPermissionを呼び出します。 スレッド・グループの引数がシステム・スレッド・グループでない場合、このメソッドは何もしないで復帰します。
より厳しいポリシーが必要なアプリケーションでは、このメソッドをオーバーライドする必要があります。 このメソッドをオーバーライドする場合、オーバーライド側のメソッドは、呼出し側スレッドがRuntimePermission("modifyThreadGroup")アクセス権を持つかどうかも確認する必要があります。アクセス権を持っている場合、このメソッドが何もせずに復帰するようにしてください。 これは、そのアクセス権を与えられたコード(JDK自体など)がどんなスレッドでも扱えるようにするためです。
このメソッドをオーバーライドする場合は、オーバーライドされたメソッドの1番目の文でsuper.checkAccessを呼び出すか、オーバーライドされたメソッドに同等のセキュリティ・チェックを記述してください。
g - チェック対象のスレッド・グループ。SecurityException - 呼出し側スレッドに、このスレッド・グループを変更するのに必要なアクセス権がない場合。NullPointerException - スレッド・グループの引数がnullの場合。destroy, resume, setDaemon, setMaxPriority, stop, suspend, checkPermissionpublic void checkExit(int status)
SecurityExceptionをスローします。
このメソッドは、Runtimeクラスのexitメソッドによって、現在のセキュリティ・マネージャに対して呼び出されます。 ステータス・コード0は成功を表し、その他の値は各種のエラーを表します。
このメソッドは、アクセス権RuntimePermission("exitVM."+status)を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkExitが呼び出されるようにしてください。
status - 終了のステータス。SecurityException - 指定されたステータスでJava仮想マシンを停止させるアクセス権が、呼出し側スレッドにない場合。exit, checkPermissionpublic void checkExec(String cmd)
SecurityExceptionをスローします。
このメソッドは、Runtimeクラスのexecメソッドによって、現在のセキュリティ・マネージャに対して呼び出されます。
このメソッドは、cmdが絶対パスの場合はcheckPermissionをFilePermission(cmd,"execute")アクセス権で呼び出し、それ以外の場合はcheckPermissionをFilePermission("<<ALL FILES>>","execute")で呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkExecが呼び出されるようにしてください。
cmd - 指定されたシステム・コマンド。SecurityException - 呼出し側スレッドに、サブプロセスを作成するアクセス権がない場合。NullPointerException - cmd引数がnullの場合。Runtime.exec(java.lang.String), Runtime.exec(java.lang.String, java.lang.String[]), Runtime.exec(java.lang.String[]), Runtime.exec(java.lang.String[], java.lang.String[]), checkPermissionpublic void checkLink(String lib)
SecurityExceptionをスローします。 引数には、ライブラリ名だけを指定するか、絶対パスのファイル名を指定します。
このメソッドは、RuntimeクラスのメソッドloadおよびloadLibraryによって、現在のセキュリティ・マネージャに対して呼び出されます。
このメソッドは、アクセス権RuntimePermission("loadLibrary."+lib)を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkLinkが呼び出されるようにしてください。
lib - ライブラリの名前。SecurityException - 呼出し側スレッドに、ライブラリを動的にリンクするアクセス権がない場合。NullPointerException - lib引数がnullの場合。Runtime.load(java.lang.String), Runtime.loadLibrary(java.lang.String), checkPermissionpublic void checkRead(FileDescriptor fd)
SecurityExceptionをスローします。
このメソッドは、アクセス権RuntimePermission("readFileDescriptor")を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkReadが呼び出されるようにしてください。
fd - システム依存のファイル記述子。SecurityException - 呼出し側スレッドに、指定されたファイル記述子へのアクセス権がない場合。NullPointerException - ファイル記述子の引数がnullの場合。FileDescriptor, checkPermissionpublic void checkRead(String file)
SecurityExceptionをスローします。
このメソッドは、アクセス権FilePermission(file,"read")を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkReadが呼び出されるようにしてください。
file - システム依存のファイル名。SecurityException - 呼出し側スレッドに、指定されたファイルへのアクセス権がない場合。NullPointerException - file引数がnullの場合。checkPermissionpublic void checkRead(String file, Object context)
SecurityExceptionをスローします。 コンテキストは、以前のgetSecurityContext呼出しで返されたセキュリティ・コンテキストである必要があります。
contextがAccessControlContextのインスタンスである場合、AccessControlContext.checkPermissionメソッドがFilePermission(file,"read")で呼び出されます。
contextがAccessControlContextのインスタンスでない場合は、SecurityExceptionがスローされます。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkReadが呼び出されるようにしてください。
file - システムに依存するファイル名。context - システム依存のセキュリティ・コンテキスト。SecurityException - 指定されたセキュリティ・コンテキストがAccessControlContextのインスタンスでない(たとえばnullである)か、あるいは指定されたファイルの読込み権がない場合。NullPointerException - file引数がnullの場合。getSecurityContext(), AccessControlContext.checkPermission(java.security.Permission)public void checkWrite(FileDescriptor fd)
SecurityExceptionをスローします。
このメソッドは、アクセス権RuntimePermission("writeFileDescriptor")を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkWriteが呼び出されるようにしてください。
fd - システム依存のファイル記述子。SecurityException - 呼出し側スレッドに、指定されたファイル記述子へのアクセス権がない場合。NullPointerException - ファイル記述子の引数がnullの場合。FileDescriptor, checkPermissionpublic void checkWrite(String file)
SecurityExceptionをスローします。
このメソッドは、アクセス権FilePermission(file,"write")を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkWriteが呼び出されるようにしてください。
file - システムに依存するファイル名。SecurityException - 呼出し側スレッドに、指定されたファイルへのアクセス権がない場合。NullPointerException - file引数がnullの場合。checkPermissionpublic void checkDelete(String file)
SecurityExceptionをスローします。
このメソッドは、Fileクラスのdeleteメソッドによって、現在のセキュリティ・マネージャに対して呼び出されます。
このメソッドは、アクセス権FilePermission(file,"delete")を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkDeleteが呼び出されるようにしてください。
file - システムに依存するファイル名。SecurityException - 呼出し側スレッドに、指定されたファイルを削除するアクセス権がない場合。NullPointerException - file引数がnullの場合。File.delete(), checkPermissionpublic void checkConnect(String host, int port)
SecurityExceptionをスローします。
ポート番号-1は、指定されたホスト名のIPアドレスを、呼出し側のメソッドが決定しようとしていることを表します。
portが -1に等しくない場合、このメソッドはcheckPermissionをSocketPermission(host+":"+port,"connect")アクセス権で呼び出します。 portが -1に等しい場合、これはcheckPermissionをSocketPermission(host,"resolve")アクセス権で呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkConnectが呼び出されるようにしてください。
host -接続先のホスト名ポート。port - 接続先のプロトコル・ポート。SecurityException - 呼出し側スレッドに、指定されたhostおよびportへのソケット接続をオープンするためのアクセス権がない場合。NullPointerException - host引数がnullの場合。checkPermissionpublic void checkConnect(String host, int port, Object context)
SecurityExceptionをスローします。
ポート番号-1は、指定されたホスト名のIPアドレスを、呼出し側のメソッドが決定しようとしていることを表します。
contextがAccessControlContextのインスタンスでない場合は、SecurityExceptionがスローされます。
そうでない場合は、ポート番号を確認します。 これが -1に等しい場合、contextのcheckPermissionメソッドがSocketPermission(host+":"+port,"connect")アクセス権で呼び出されます。 portが -1に等しい場合、contextのcheckPermissionメソッドがSocketPermission(host,"resolve")アクセス権で呼び出されます。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkConnectが呼び出されるようにしてください。
host -接続先のホスト名ポート。port - 接続先のプロトコル・ポート。context - システム依存のセキュリティ・コンテキスト。SecurityException - 指定されたセキュリティ・コンテキストがAccessControlContextのインスタンスでない(たとえばnullである)か、あるいは指定されたhostおよびportへのソケット接続をオープンするためのアクセス権がない場合。NullPointerException - host引数がnullの場合。getSecurityContext(), AccessControlContext.checkPermission(java.security.Permission)public void checkListen(int port)
SecurityExceptionをスローします。
このメソッドはcheckPermissionをSocketPermission("localhost:"+port,"listen")で呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkListenが呼び出されるようにしてください。
port - ローカル・ポート。SecurityException - 呼出し側スレッドに、指定されたポートで待機するためのアクセス権がない場合。checkPermissionpublic void checkAccept(String host, int port)
SecurityExceptionをスローします。
このメソッドは、ServerSocketクラスのacceptメソッドによって、現在のセキュリティ・マネージャに対して呼び出されます。
このメソッドは、アクセス権SocketPermission(host+":"+port,"accept")を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkAcceptが呼び出されるようにしてください。
host - ソケット接続のホスト名。port - ソケット接続のポート番号。SecurityException - 呼出し側スレッドに、接続を受け入れるためのアクセス権がない場合。NullPointerException - host引数がnullの場合。ServerSocket.accept(), checkPermissionpublic void checkMulticast(InetAddress maddr)
SecurityExceptionをスローします。
このメソッドは、アクセス権java.net.SocketPermission(maddr.getHostAddress(), "accept,connect")を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkMulticastが呼び出されるようにしてください。
maddr - 使用するインターネット・グループのアドレス。SecurityException - 呼出し側スレッドに、IPマルチキャスト(join/leave/send/receive)の使用が許可されていない場合。NullPointerException - アドレスの引数がnullの場合。checkPermission@Deprecated public void checkMulticast(InetAddress maddr, byte ttl)
SecurityExceptionをスローします。
このメソッドは、アクセス権java.net.SocketPermission(maddr.getHostAddress(), "accept,connect")を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkMulticastが呼び出されるようにしてください。
maddr - 使用するインターネット・グループのアドレス。ttl - 使用する値がマルチキャスト送信される場合、その値。 ノート: この特定の実装はttlパラメータを使用しない。 SecurityException - 呼出し側スレッドに、IPマルチキャスト(join/leave/send/receive)の使用が許可されていない場合。NullPointerException - アドレスの引数がnullの場合。checkPermissionpublic void checkPropertiesAccess()
SecurityExceptionをスローします。
このメソッドはSystemのgetPropertiesおよびsetPropertiesメソッドによって使用されます。
このメソッドは、アクセス権PropertyPermission("*", "read,write")を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkPropertiesAccessが呼び出されるようにしてください。
SecurityException - 呼出し側スレッドに、システム・プロパティに対するアクセスまたは変更を行うためのアクセス権がない場合。System.getProperties(), System.setProperties(java.util.Properties), checkPermissionpublic void checkPropertyAccess(String key)
keyで指定されたシステム・プロパティへのアクセスが、呼出し側スレッドに許可されていない場合に、SecurityExceptionをスローします。
このメソッドは、SystemクラスのgetPropertyメソッドによって使用されます。
このメソッドは、アクセス権PropertyPermission(key, "read")を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkPropertyAccessが呼び出されるようにしてください。
key - システム・プロパティのキー。SecurityException - 呼出し側スレッドに、指定されたシステム・プロパティへのアクセス権がない場合。NullPointerException - key引数がnullの場合。IllegalArgumentException - keyが空である場合。System.getProperty(java.lang.String), checkPermission@Deprecated public boolean checkTopLevelWindow(Object window)
AWTPermissionへの依存は、Javaプラットフォームの将来のモジュラ化に対する障害になります。 このメソッドのユーザーは代わりにcheckPermission(java.security.Permission)を直接呼び出してください。 このメソッドは将来のリリースでアクセス権java.security.AllPermissionをチェックするように変更されます。 window引数で指定されたトップ・レベルのウィンドウを表示するための信頼が呼出し側スレッドにない場合に、falseを返します。 この場合でも、呼出し側スレッドはウィンドウを表示できますが、ウィンドウにはなんらかの警告が表示されます。 このメソッドがtrueを返した場合は、特に制限なくウィンドウを表示できます。
信頼できるウィンドウと信頼できないウィンドウの詳細は、Windowクラスを参照してください。
このメソッドは、アクセス権AWTPermission("showWindowWithoutWarningBanner")を指定してcheckPermissionを呼び出します。SecurityExceptionがスローされなければtrueが返され、そうでない場合はfalseが返されます。 java.awtパッケージを含まないJava SEのサブセット・プロファイルの場合は、代わりにcheckPermissionが呼び出されてアクセス権java.security.AllPermissionがチェックされます。
このメソッドをオーバーライドする場合、オーバーライドされたメソッドが通常falseを返す位置でsuper.checkTopLevelWindowの呼出しを行い、super.checkTopLevelWindowの値を返すようにしてください。
window - 作成される新しいウィンドウ。true、そうでない場合はfalse。NullPointerException - window引数がnullの場合。Window、checkPermissionpublic void checkPrintJobAccess()
SecurityExceptionをスローします。
このメソッドは、アクセス権RuntimePermission("queuePrintJob")を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkPrintJobAccessが呼び出されるようにしてください。
SecurityException - 呼出し側スレッドに、印刷ジョブ要求を開始するためのアクセス権がない場合。checkPermission@Deprecated public void checkSystemClipboardAccess()
AWTPermissionへの依存は、Javaプラットフォームの将来のモジュラ化に対する障害になります。 このメソッドのユーザーは代わりにcheckPermission(java.security.Permission)を直接呼び出してください。 このメソッドは将来のリリースでアクセス権java.security.AllPermissionをチェックするように変更されます。 SecurityExceptionをスローします。
このメソッドは、アクセス権AWTPermission("accessClipboard")を指定してcheckPermissionを呼び出します。 java.awtパッケージを含まないJava SEのサブセット・プロファイルの場合は、代わりにcheckPermissionが呼び出されてアクセス権java.security.AllPermissionがチェックされます。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkSystemClipboardAccessが呼び出されるようにしてください。
SecurityException - 呼出し側スレッドに、システム・クリップボードへのアクセス権がない場合。checkPermission@Deprecated public void checkAwtEventQueueAccess()
AWTPermissionへの依存は、Javaプラットフォームの将来のモジュラ化に対する障害になります。 このメソッドのユーザーは代わりにcheckPermission(java.security.Permission)を直接呼び出してください。 このメソッドは将来のリリースでアクセス権java.security.AllPermissionをチェックするように変更されます。 SecurityExceptionをスローします。
このメソッドは、アクセス権AWTPermission("accessEventQueue")を指定してcheckPermissionを呼び出します。 java.awtパッケージを含まないJava SEのサブセット・プロファイルの場合は、代わりにcheckPermissionが呼び出されてアクセス権java.security.AllPermissionがチェックされます。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkAwtEventQueueAccessが呼び出されるようにしてください。
SecurityException - 呼出し側スレッドに、AWTイベント・キューへのアクセス権がない場合。checkPermissionpublic void checkPackageAccess(String pkg)
SecurityExceptionをスローします。
このメソッドはクラス・ローダーのloadClassメソッドによって使用されます。
このメソッドは、最初にjava.security.Security.getProperty("package.access")を呼び出してカンマで区切られたリストを取得することにより、制限付きのパッケージのリストを取得します。次に、制限付きパッケージの中にpkgで始まるパッケージまたはpkgに一致するパッケージがあるかどうかを判定します。 該当する場合には、checkPermissionがRuntimePermission("accessClassInPackage."+pkg)アクセス権で呼び出されます。
このメソッドをオーバーライドする場合は、オーバーライドされたメソッドの1行目で、super.checkPackageAccessへの呼出しを行う必要があります。
pkg - パッケージ名。SecurityException - 呼出し側スレッドに、指定されたパッケージへのアクセス権がない場合。NullPointerException - パッケージ名の引数がnullの場合。loadClass, getProperty, checkPermissionpublic void checkPackageDefinition(String pkg)
SecurityExceptionをスローします。
このメソッドは、一部のクラス・ローダーのloadClassメソッドが使います。
このメソッドは、最初にjava.security.Security.getProperty("package.definition")を呼び出してカンマで区切られたリストを取得することにより、制限付きのパッケージのリストを取得します。次に、制限付きパッケージの中にpkgで始まるパッケージまたはpkgに一致するパッケージがあるかどうかを判定します。 該当する場合には、checkPermissionがRuntimePermission("defineClassInPackage."+pkg)アクセス権で呼び出されます。
このメソッドをオーバーライドする場合は、オーバーライドされたメソッドの1行目で、super.checkPackageDefinitionへの呼出しを行う必要があります。
pkg - パッケージ名。SecurityException - 呼出し側スレッドに、指定されたパッケージ中のクラスを定義するためのアクセス権がない場合。ClassLoader.loadClass(java.lang.String, boolean), getProperty, checkPermissionpublic void checkSetFactory()
ServerSocketまたはSocketが使用するソケット・ファクトリ、またはURLが使用するストリーム・ハンドラ・ファクトリを設定することが呼出し側スレッドに許可されていない場合に、SecurityExceptionをスローします。
このメソッドは、アクセス権RuntimePermission("setFactory")を指定してcheckPermissionを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkSetFactoryが呼び出されるようにしてください。
SecurityException - 呼出し側スレッドに、ソケット・ファクトリ、またはストリーム・ハンドラ・ファクトリを指定するためのアクセス権がない場合。setSocketFactory, setSocketImplFactory, setURLStreamHandlerFactory, checkPermission@Deprecated public void checkMemberAccess(Class<?> clazz, int which)
checkPermission(java.security.Permission)を直接呼び出してください。 このメソッドは将来のリリースでアクセス権java.security.AllPermissionをチェックするように変更されます。 SecurityExceptionをスローします。
デフォルトのポリシーはPUBLICメンバーへのアクセスおよび、呼出し元と同じクラス・ローダーを持つクラスへのアクセスを許可します。 その他の場合はすべて、このメソッドはcheckPermissionをRuntimePermission("accessDeclaredMembers") アクセス権で呼び出します。
このメソッドをオーバーライドした場合、super.checkMemberAccessを呼び出すことはできません。これは、checkMemberAccessのデフォルトの実装が、スタックの深さ4にあるチェック進行中のコードに依存するためです。
clazz - リフレクションが実行されるクラス。which - アクセスのタイプ。PUBLICまたはDECLARED。SecurityException - 呼出し側にメンバーへのアクセス権がない場合。NullPointerException - clazz引数がnullの場合。Member, checkPermissionpublic void checkSecurityAccess(String target)
要求されたアクセス権を許可する場合、このメソッドは何もしないで復帰します。 拒否する場合は、SecurityExceptionがスローされます。
このメソッドは、指定されたアクセス権ターゲット名のSecurityPermissionオブジェクトを生成し、次に、そのアクセス権を指定してcheckPermissionを呼び出します。
指定できるアクセス権ターゲット名のリストについては、のドキュメントを参照してください。
SecurityPermission
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkSecurityAccessが呼び出されるようにしてください。
target - SecurityPermissionのターゲット名。SecurityException - 呼出し側スレッドに、要求されたアクセスに必要なアクセス権がない場合。NullPointerException - targetがnullである場合。IllegalArgumentException - targetが空である場合。checkPermissionpublic ThreadGroup getThreadGroup()
ThreadGroup バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。