java.lang
クラス SecurityManager
java.lang.Object
java.lang.SecurityManager
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 Version 1.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.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
というアクセス権もあります。これは、すべての (あるいは多くの) アクセス権を要求する複数のタスクを実行する必要がある、システム管理者の作業を単純化するためのアクセス権です。
アクセス権に関する情報については、「Java 2 SDK でのアクセス権」を参照してください。このドキュメントには、SecurityManager の各種 check
メソッドや、そのようなメソッドのデフォルトの実装に必要なアクセス権の一覧表があります。また、アクセス権を必要とする Version 1.2 のすべてのメソッドと、各メソッドに必要なアクセス権をまとめた表もあります。
Java 2 SDK での SecurityManager
に関する変更点と、1.1 形式のセキュリティーマネージャーを移植する際のアドバイスについては、「セキュリティーのドキュメント」 を参照してください。
- 導入されたバージョン:
- JDK1.0
- 関連項目:
ClassLoader
,
SecurityException
,
checkTopLevelWindow
,
getSecurityManager
,
setSecurityManager
,
AccessController
,
AccessControlContext
,
AccessControlException
,
Permission
,
BasicPermission
,
FilePermission
,
SocketPermission
,
PropertyPermission
,
RuntimePermission
,
Policy
,
SecurityPermission
,
ProtectionDomain
メソッドの概要 |
void |
checkAccept(String host,
int port)
指定されたホストとポート番号からのソケット接続を受け取ることが、呼び出し側スレッドに許可されていない場合に、SecurityException をスローします。 |
void |
checkAccess(Thread t)
呼び出し側のスレッドがスレッド引数の修正を許可されていない場合に、SecurityException をスローします。 |
void |
checkAccess(ThreadGroup g)
呼び出し側のスレッドが、スレッドグループの引数を修正することを許可されていない場合に、SecurityException をスローします。 |
void |
checkAwtEventQueueAccess()
AWT イベントキューへのアクセスが呼び出し側スレッドに許可されていない場合、または AWT パッケージを利用できない場合に、SecurityException をスローします。 |
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)
メンバーへのアクセスが呼び出し側スレッドに許可されていない場合に、SecurityException をスローします。 |
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()
システムクリップボードへのアクセスが呼び出し側スレッドに許可されていない場合、または AWT パッケージを利用できない場合に、SecurityException をスローします。 |
boolean |
checkTopLevelWindow(Object window)
window 引数で指定されたトップレベルのウィンドウを表示するための信頼が呼び出し側スレッドにない場合、または AWT パッケージを利用できない場合に、false を返します。 |
void |
checkWrite(FileDescriptor fd)
指定されたファイル記述子への書き込みが呼び出し側スレッドに許可されていない場合に、SecurityException をスローします。 |
void |
checkWrite(String file)
文字列引数で指定されたファイルへの書き込みが呼び出し側スレッドに許可されていない場合に、SecurityException をスローします。 |
protected Class[] |
getClassContext()
現在の例外実行スタックをクラスの配列として返します。 |
Object |
getSecurityContext()
現在の実行環境をカプセル化するオブジェクトを生成します。 |
ThreadGroup |
getThreadGroup()
このメソッドを呼び出したときに作成される、任意の新しいスレッドのインスタンスを生成するための、スレッドグループを返します。 |
クラス java.lang.Object から継承されたメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
SecurityManager
public SecurityManager()
- 新しい
SecurityManager
を構築します。
セキュリティーマネージャーがすでにインストールされている場合、このメソッドは最初にセキュリティーマネージャーの checkPermission
メソッドを呼び出します。このとき、RuntimePermission("createSecurityManager")
アクセス権を使用することにより、呼び出し側のスレッドが新しいセキュリティーマネージャーを作成するアクセス権を確実に持つようにします。その結果、SecurityException
がスローされることがあります。
- 例外:
SecurityException
- セキュリティーマネージャーがすでにあり、その checkPermission
メソッドが、新しいセキュリティーマネージャーの作成を許可しない場合- 関連項目:
System.getSecurityManager()
,
checkPermission
,
RuntimePermission
getClassContext
protected Class[] getClassContext()
- 現在の例外実行スタックをクラスの配列として返します。
配列の長さは、実行スタック上にあるメソッドの数になります。インデックス 0
の要素は現在メソッドを実行中のクラス、インデックス 1
の要素はそのメソッドの呼び出しクラスとなります。
- 戻り値:
- 実行スタック
getSecurityContext
public Object getSecurityContext()
- 現在の実行環境をカプセル化するオブジェクトを生成します。このメソッドの実行結果は、3 つの引数を取る
checkConnect
メソッドや、2 つの引数を取る checkRead
メソッドなどで使います。これらのメソッドが必要なのは、信頼できるメソッドが、別のメソッドの代わりにファイルを読み込んだり、ソケットをオープンしたりするために呼び出されるからです。信頼できるメソッドは、ほかの (おそらくは信頼できない) メソッドがその操作を自分で行うことを許可されているかどうかを、判定する必要があります。 このメソッドのデフォルトの実装は、AccessControlContext
オブジェクトを返します。
- 戻り値:
- あとでセキュリティーチェックを行えるように、現在の実行環境の十分な情報をカプセル化した、実装依存のオブジェクト
- 関連項目:
java.lang.SecurityManager#checkConnect(java.lang.String, int,
,
java.lang.SecurityManager#checkRead(java.lang.String,
,
AccessControlContext
checkPermission
public void checkPermission(Permission perm)
- 指定されたアクセス権で要求したアクセスが、現在有効なセキュリティーポリシーに照らして許可されなかった場合に
SecurityException
をスローします。
このメソッドは、指定されたアクセス権で AccessController.checkPermission
を呼び出します。
- パラメータ:
perm
- 要求されたアクセス権
- 例外:
SecurityException
- 現在のセキュリティーポリシーによってアクセスが拒否された場合
NullPointerException
- アクセス権の引数が null
の場合- 導入されたバージョン:
- 1.2
checkPermission
public void checkPermission(Permission perm,
Object context)
- 指定されたセキュリティーコンテキストについて、指定されたアクセス権が示すリソースへのアクセスを拒否された場合に
SecurityException
をスローします。context は、直前の getSecurityContext
呼び出しによって返されたセキュリティーコンテキストである必要があります。アクセス制御の決定は、このセキュリティーコンテキストに対して設定されているセキュリティーポリシーに基づいて行われます。
context
が AccessControlContext
のインスタンスである場合、指定されたアクセス権で AccessControlContext.checkPermission
メソッドが呼び出されます。
context
が AccessControlContext
のインスタンスでない場合は、SecurityException
がスローされます。
- パラメータ:
perm
- 指定されたアクセス権context
- システム依存のセキュリティーコンテキスト
- 例外:
SecurityException
- 指定されたセキュリティーコンテキストが AccessControlContext
のインスタンスでない (たとえば null
である) か、あるいは指定されたアクセス権が示すリソースへのアクセスを拒否された場合
NullPointerException
- アクセス権の引数が null
の場合- 導入されたバージョン:
- 1.2
- 関連項目:
getSecurityContext()
,
AccessControlContext.checkPermission(java.security.Permission)
checkCreateClassLoader
public void checkCreateClassLoader()
- 呼び出し側のスレッドが新しいクラスローダーの作成を許可されていない場合に、
SecurityException
をスローします。
このメソッドは、アクセス権 RuntimePermission("createClassLoader")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkCreateClassLoader
が呼び出されるようにしてください。
- 例外:
SecurityException
- 呼び出し側のスレッドが、新しいクラスローダーを作成できるアクセス権を持たない場合- 関連項目:
ClassLoader.ClassLoader()
,
checkPermission
checkAccess
public void checkAccess(Thread t)
- 呼び出し側のスレッドがスレッド引数の修正を許可されていない場合に、
SecurityException
をスローします。
このメソッドは、Thread
クラスの stop
、 suspend
、esume
、setPriority
、setName
、setDaemon
の各メソッドを呼び出すことによって、現在のセキュリティーマネージャーに対して呼び出されます。
スレッドの引数がシステムスレッド (親が null
であるスレッドグループに属するスレッド) の場合、このメソッドは RuntimePermission("modifyThread")
アクセス権で checkPermission
を呼び出します。スレッドの引数がシステムスレッドでない場合、このメソッドは何もしないで復帰します。
より厳しいポリシーが必要なアプリケーションでは、このメソッドをオーバーライドする必要があります。このメソッドをオーバーライドする場合は、オーバーライド後のメソッドでは、呼び出し元のスレッドが RuntimePermission("modifyThread")
アクセス権を持つかどうかをチェックして、持っている場合には何もせずに終了するようにします。これは、そのアクセス権を与えられたコード (SDK 自体など) がどんなスレッドでも扱えるようにするためです。
このメソッドをオーバーライドする場合は、オーバーライド側のメソッドの 1 番目の文で super.checkAccess
を呼び出すか、オーバーライドされるメソッドに同様のセキュリティーチェックを記述してください。
- パラメータ:
t
- チェック対象のスレッド
- 例外:
SecurityException
- 呼び出し側スレッドに、このスレッドを変更するのに必要なアクセス権がない場合
NullPointerException
- スレッドの引数が null
の場合- 関連項目:
setDaemon
,
setName
,
setPriority
,
checkPermission
checkAccess
public void checkAccess(ThreadGroup g)
- 呼び出し側のスレッドが、スレッドグループの引数を修正することを許可されていない場合に、
SecurityException
をスローします。
このメソッドは、子スレッドまたは子スレッドグループが新しく作成されたときに、ThreadGroup
クラスの setDaemon
、setMaxPriority
、stop
、suspend
、resume
、destroy
の各メソッドによって、現在のセキュリティーマネージャーに対して呼び出されます。
スレッドグループの引数がシステムスレッドグループ (親が null
) の場合、このメソッドは、RuntimePermission("modifyThreadGroup")
アクセス権で checkPermission
を呼び出します。スレッドグループの引数がシステムスレッドグループでない場合、このメソッドは何もしないで復帰します。
より厳しいポリシーが必要なアプリケーションでは、このメソッドをオーバーライドする必要があります。このメソッドをオーバーライドする場合、オーバーライド側のメソッドは、呼び出し側スレッドが RuntimePermission("modifyThreadGroup")
アクセス権を持つかどうかも確認する必要があります。 アクセス権を持っている場合、このメソッドが何もせずに復帰するようにしてください。これは、そのアクセス権を与えられたコード (SDK 自体など) がどんなスレッドでも扱えるようにするためです。
このメソッドをオーバーライドする場合は、オーバーライド側のメソッドの 1 番目の文で super.checkAccess
を呼び出すか、オーバーライドされるメソッドに同様のセキュリティーチェックを記述してください。
- パラメータ:
g
- チェック対象のスレッドグループ
- 例外:
SecurityException
- 呼び出し側スレッドに、このスレッドグループを変更するのに必要なアクセス権がない場合
NullPointerException
- スレッドグループの引数が null
の場合- 関連項目:
destroy
,
setDaemon
,
setMaxPriority
,
checkPermission
checkExit
public void checkExit(int status)
- 指定されたステータスコードで Java 仮想マシンを停止させる許可を、呼び出し側のスレッドが持っていない場合に、
SecurityException
をスローします。
このメソッドは、Runtime
クラスの exit
メソッドによって、現在のセキュリティーマネージャーに対して呼び出されます。ステータスコード 0
は成功を表し、その他の値は各種のエラーを表します。
このメソッドは、アクセス権 RuntimePermission("exitVM")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkExit
が呼び出されるようにしてください。
- パラメータ:
status
- 終了のステータス
- 例外:
SecurityException
- 指定されたステータスで Java 仮想マシンを停止させるアクセス権が、呼び出し側スレッドにない場合- 関連項目:
exit
,
checkPermission
checkExec
public void checkExec(String cmd)
- サブプロセスの作成が呼び出し側のスレッドに許可されていない場合に、
SecurityException
をスローします。
このメソッドは、Runtime
クラスの exec
メソッドによって、現在のセキュリティーマネージャーに対して呼び出されます。
このメソッドは、cmd が絶対パスの場合はアクセス権 FilePermission(cmd,"execute")
を指定して checkPermission
を呼び出し、そうでない場合は FilePermission("<<ALL FILES>>","execute")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で 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[])
,
checkPermission
checkLink
public 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)
,
checkPermission
checkRead
public void checkRead(FileDescriptor fd)
- 指定されたファイル記述子からの読み取りが呼び出し側のスレッドに許可されていない場合に、
SecurityException
をスローします。
このメソッドは、アクセス権 RuntimePermission("readFileDescriptor")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkRead
が呼び出されるようにしてください。
- パラメータ:
fd
- システム依存のファイル記述子
- 例外:
SecurityException
- 呼び出し側スレッドに、指定されたファイル記述子へのアクセス権がない場合
NullPointerException
- ファイル記述子の引数が null
の場合- 関連項目:
FileDescriptor
,
checkPermission
checkRead
public void checkRead(String file)
- 文字列引数で指定されたファイルの読み取りが呼び出し側のスレッドに許可されていない場合に、
SecurityException
をスローします。
このメソッドは、アクセス権 FilePermission(file,"read")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkRead
が呼び出されるようにしてください。
- パラメータ:
file
- システム依存のファイル名
- 例外:
SecurityException
- 呼び出し側スレッドに、指定されたファイルへのアクセス権がない場合
NullPointerException
- file
引数が null
の場合- 関連項目:
checkPermission
checkRead
public void checkRead(String file,
Object context)
- 文字列引数で指定されたファイルを読み取る許可が、指定されたセキュリティーコンテキストにない場合に、
SecurityException
をスローします。コンテキストは、以前の getSecurityContext
呼び出しで返されたセキュリティーコンテキストである必要があります。 context
が AccessControlContext
のインスタンスである場合は、FilePermission(file,"read")
アクセス権を指定して AccessControlContext.checkPermission
メソッドが呼び出されます。
context
が AccessControlContext
のインスタンスでない場合は、SecurityException
がスローされます。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkRead
が呼び出されるようにしてください。
- パラメータ:
file
- システムに依存するファイル名context
- システム依存のセキュリティーコンテキスト
- 例外:
SecurityException
- 指定されたセキュリティーコンテキストが AccessControlContext
のインスタンスでない (たとえば null
である) か、あるいは指定されたファイルの読み込み権がない場合
NullPointerException
- file
引数が null
の場合- 関連項目:
getSecurityContext()
,
AccessControlContext.checkPermission(java.security.Permission)
checkWrite
public void checkWrite(FileDescriptor fd)
- 指定されたファイル記述子への書き込みが呼び出し側スレッドに許可されていない場合に、
SecurityException
をスローします。
このメソッドは、アクセス権 RuntimePermission("writeFileDescriptor")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkWrite
が呼び出されるようにしてください。
- パラメータ:
fd
- システム依存のファイル記述子
- 例外:
SecurityException
- 呼び出し側スレッドに、指定されたファイル記述子へのアクセス権がない場合
NullPointerException
- ファイル記述子の引数が null
の場合- 関連項目:
FileDescriptor
,
checkPermission
checkWrite
public void checkWrite(String file)
- 文字列引数で指定されたファイルへの書き込みが呼び出し側スレッドに許可されていない場合に、
SecurityException
をスローします。
このメソッドは、アクセス権 FilePermission(file,"write")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkWrite
が呼び出されるようにしてください。
- パラメータ:
file
- システムに依存するファイル名
- 例外:
SecurityException
- 呼び出し側スレッドに、指定されたファイルへのアクセス権がない場合
NullPointerException
- file
引数が null
の場合- 関連項目:
checkPermission
checkDelete
public void checkDelete(String file)
- 指定されたファイルを削除することが呼び出し側スレッドに許可されていない場合に、
SecurityException
をスローします。
このメソッドは、File
クラスの delete
メソッドによって、現在のセキュリティーマネージャーに対して呼び出されます。
このメソッドは、アクセス権 FilePermission(file,"delete")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkDelete
が呼び出されるようにしてください。
- パラメータ:
file
- システムに依存するファイル名
- 例外:
SecurityException
- 呼び出し側スレッドに、指定されたファイルを削除するアクセス権がない場合
NullPointerException
- file
引数が null
の場合- 関連項目:
File.delete()
,
checkPermission
checkConnect
public void checkConnect(String host,
int port)
- 指定されたホストとポート番号へのソケット接続をオープンすることが、呼び出し側スレッドに許可されていない場合に、
SecurityException
をスローします。
ポート番号 -1
は、指定されたホスト名の IP アドレスを、呼び出し側のメソッドが決定しようとしていることを表します。
ポート番号が -1 でない場合、このメソッドはアクセス権 SocketPermission(host+":"+port,"connect")
を指定して checkPermission
メソッドを呼び出します。ポートが -1 である場合、このメソッドはアクセス権 SocketPermission(host,"resolve")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkConnect
が呼び出されるようにしてください。
- パラメータ:
host
- 接続先のホスト名ポートport
- 接続先のプロトコルポート
- 例外:
SecurityException
- 呼び出し側スレッドに、指定された host
および port
へのソケット接続をオープンするためのアクセス権がない場合
NullPointerException
- host
引数が null
の場合- 関連項目:
checkPermission
checkConnect
public void checkConnect(String host,
int port,
Object context)
- 指定されたセキュリティーコンテキストが、指定されたホストとポート番号へのソケット接続をオープンするアクセス権を持っていない場合に、
SecurityException
をスローします。
ポート番号 -1
は、指定されたホスト名の IP アドレスを、呼び出し側のメソッドが決定しようとしていることを表します。
context
が AccessControlContext
のインスタンスでない場合は、SecurityException
がスローされます。
そうでない場合は、ポート番号を確認します。ポート番号が -1 でない場合は、アクセス権 SocketPermission(host+":"+port,"connect")
を指定して context
の checkPermission
メソッドが呼び出されます。ポートが -1 である場合は、アクセス権 SocketPermission(host,"resolve")
を指定して context
の checkPermission
メソッドが呼び出されます。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkConnect
が呼び出されるようにしてください。
- パラメータ:
host
- 接続先のホスト名ポートport
- 接続先のプロトコルポートcontext
- システム依存のセキュリティーコンテキスト
- 例外:
SecurityException
- 指定されたセキュリティーコンテキストが AccessControlContext
のインスタンスでない (たとえば null
である) か、あるいは指定された host
および port
へのソケット接続をオープンするためのアクセス権がない場合
NullPointerException
- host
引数が null
の場合- 関連項目:
getSecurityContext()
,
AccessControlContext.checkPermission(java.security.Permission)
checkListen
public void checkListen(int port)
- 指定されたローカルポート番号で接続要求を待機することが呼び出し側スレッドに許可されていない場合に、
SecurityException
をスローします。
ポート番号が 0 でない場合、このメソッドはアクセス権 SocketPermission("localhost:"+port,"listen")
を指定して checkPermission
メソッドを呼び出します。ポートが 0 である場合、このメソッドはアクセス権 SocketPermission("localhost:1024-","listen")
を指定して checkPermission
メソッドを呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkListen
が呼び出されるようにしてください。
- パラメータ:
port
- ローカルポート
- 例外:
SecurityException
- 呼び出し側スレッドに、指定されたポートで待機するためのアクセス権がない場合- 関連項目:
checkPermission
checkAccept
public void checkAccept(String host,
int port)
- 指定されたホストとポート番号からのソケット接続を受け取ることが、呼び出し側スレッドに許可されていない場合に、
SecurityException
をスローします。
このメソッドは、ServerSocket
クラスの accept
メソッドによって、現在のセキュリティーマネージャーに対して呼び出されます。注:java.net.ServerSocket は、J2ME Foundation Profile などの J2ME CDC プロファイルにあります。
このメソッドは、アクセス権 SocketPermission(host+":"+port,"accept")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkAccept
が呼び出されるようにしてください。
- パラメータ:
host
- ソケット接続のホスト番号port
- ソケット接続のポート番号
- 例外:
SecurityException
- 呼び出し側スレッドに、接続を受け入れるためのアクセス権がない場合
NullPointerException
- host
引数が null
の場合- 関連項目:
ServerSocket.accept()
,
checkPermission
checkMulticast
public void checkMulticast(InetAddress maddr)
- IP マルチキャスト (join/leave/send/receive) の使用が呼び出し側スレッドに許可されていない場合に、
SecurityException
をスローします。
このメソッドは、アクセス権 java.net.SocketPermission(maddr.getHostAddress(), "accept,connect")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkMulticast
が呼び出されるようにしてください。
- パラメータ:
maddr
- 使用するインターネットグループのアドレス
- 例外:
SecurityException
- 呼び出し側スレッドに、IP マルチキャスト (join/leave/send/receive) の使用が許可されていない場合
NullPointerException
- アドレスの引数が null
の場合- 導入されたバージョン:
- JDK1.1
- 関連項目:
checkPermission
checkMulticast
public void checkMulticast(InetAddress maddr,
byte ttl)
- 推奨されていません。 代わりに #checkPermission(java.security.Permission) を使用する
- IP マルチキャスト (join/leave/send/receive) の使用が呼び出し側スレッドに許可されていない場合に、
SecurityException
をスローします。
このメソッドは、アクセス権 java.net.SocketPermission(maddr.getHostAddress(), "accept,connect")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkMulticast
が呼び出されるようにしてください。
- パラメータ:
maddr
- 使用するインターネットグループのアドレスttl
- 使用する値がマルチキャスト送信される場合、その値。
注:この特定の実装は ttl パラメータを使用しない
- 例外:
SecurityException
- 呼び出し側スレッドに、IP マルチキャスト (join/leave/send/receive) の使用が許可されていない場合
NullPointerException
- アドレスの引数が null
の場合- 導入されたバージョン:
- JDK1.1
- 関連項目:
checkPermission
checkPropertiesAccess
public void checkPropertiesAccess()
- システムプロパティーのアクセスまたは修正が呼び出し側スレッドに許可されていない場合に、
SecurityException
をスローします。
このメソッドは、System
クラスの getProperties
および setProperties
メソッドによって使用されます。
このメソッドは、アクセス権 PropertyPermission("*", "read,write")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkPropertiesAccess
が呼び出されるようにしてください。
- 例外:
SecurityException
- 呼び出し側スレッドに、システムプロパティーに対するアクセスまたは変更を行うためのアクセス権がない場合- 関連項目:
System.getProperties()
,
System.setProperties(java.util.Properties)
,
checkPermission
checkPropertyAccess
public void checkPropertyAccess(String key)
key
で指定されたシステムプロパティーへのアクセスが、呼び出し側スレッドに許可されていない場合に、SecurityException
をスローします。
このメソッドは、System
クラスの getProperty
メソッドによって使用されます。
このメソッドは、アクセス権 PropertyPermission(key, "read")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkPropertiesAccess
が呼び出されるようにしてください。
- パラメータ:
key
- システムプロパティーのキー
- 例外:
SecurityException
- 呼び出し側スレッドに、指定されたシステムプロパティーへのアクセス権がない場合
NullPointerException
- key
引数が null
の場合
IllegalArgumentException
- key
が空の場合- 関連項目:
System.getProperty(java.lang.String)
,
checkPermission
checkTopLevelWindow
public boolean checkTopLevelWindow(Object window)
window
引数で指定されたトップレベルのウィンドウを表示するための信頼が呼び出し側スレッドにない場合、または AWT パッケージを利用できない場合に、false
を返します。この場合でも、呼び出し側スレッドはウィンドウを表示できますが、ウィンドウにはなんらかの警告が表示されます。このメソッドが true
を返した場合は、特に制限なくウィンドウを表示できます。
信頼できるウィンドウと信頼できないウィンドウの詳細は、Window
クラスを参照してください。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば false
をスローする位置で super.checkTopLevelWindow
が呼び出されるようにしてください。これにより、super.checkTopLevelWindow
の値が返されます。
- パラメータ:
window
- 作成される新しいウィンドウ
- 戻り値:
- トップレベルウィンドウを表示するための信頼が呼び出し側スレッドにある場合は
true
、そうでない場合は false
- 例外:
NullPointerException
- window
引数が null
の場合- 関連項目:
java.awt.Window
,
checkPermission
checkPrintJobAccess
public void checkPrintJobAccess()
- 印刷ジョブ要求の開始が呼び出し側スレッドに許可されていない場合に、
SecurityException
をスローします。
このメソッドは、アクセス権 RuntimePermission("queuePrintJob")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkPrintJobAccess
が呼び出されるようにしてください。
- 例外:
SecurityException
- 呼び出し側スレッドに、印刷ジョブ要求を開始するためのアクセス権がない場合- 導入されたバージョン:
- JDK1.1
- 関連項目:
checkPermission
checkSystemClipboardAccess
public void checkSystemClipboardAccess()
- システムクリップボードへのアクセスが呼び出し側スレッドに許可されていない場合、または AWT パッケージを利用できない場合に、
SecurityException
をスローします。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkSystemClipboardAccess
が呼び出されるようにしてください。
- 例外:
SecurityException
- 呼び出し側スレッドに、システムクリップボードへのアクセス権がない場合- 導入されたバージョン:
- JDK1.1
- 関連項目:
checkPermission
checkAwtEventQueueAccess
public void checkAwtEventQueueAccess()
- AWT イベントキューへのアクセスが呼び出し側スレッドに許可されていない場合、または AWT パッケージを利用できない場合に、
SecurityException
をスローします。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkAwtEventQueueAccess
が呼び出されるようにしてください。
- 例外:
SecurityException
- 呼び出し側スレッドに、AWT イベントキューへのアクセス権がない場合- 導入されたバージョン:
- JDK1.1
- 関連項目:
checkPermission
checkPackageAccess
public 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
,
checkPermission
checkPackageDefinition
public void checkPackageDefinition(String pkg)
- 引数で指定されたパッケージ内のクラスを定義することが呼び出し側スレッドに許可されていない場合に、
SecurityException
をスローします。
このメソッドは、一部のクラスローダーの loadClass
メソッドが使います。
このメソッドは、最初に java.security.Security.getProperty("package.definition")
を呼び出してコンマ区切り形式のリストを取得することにより、制限付きパッケージのリストを取得します。 次に、制限付きパッケージの中に pkg
で始まるパッケージまたは pkg
に一致するパッケージがあるかどうかを判定します。該当する場合には、checkPermission
が RuntimePermission("defineClassInPackage."+pkg)
アクセス権で呼び出されます。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドの 1 行目として super.checkDefinition
の呼び出しが必要です。
- パラメータ:
pkg
- パッケージ名
- 例外:
SecurityException
- 呼び出し側スレッドに、指定されたパッケージ中のクラスを定義するためのアクセス権がない場合- 関連項目:
ClassLoader.loadClass(java.lang.String, boolean)
,
getProperty
,
checkPermission
checkSetFactory
public void checkSetFactory()
ServerSocket
または Socket
が使用するソケットファクトリ、または URL
が使用するストリームハンドラファクトリを設定することが呼び出し側スレッドに許可されていない場合に、SecurityException
をスローします。注:java.net.ServerSocket は、J2ME Foundation Profile などの J2ME CDC プロファイルにあります。
このメソッドは、アクセス権 RuntimePermission("setFactory")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkSetFactory
が呼び出されるようにしてください。
- 例外:
SecurityException
- 呼び出し側スレッドに、ソケットファクトリ、またはストリームハンドラファクトリを指定するためのアクセス権がない場合- 関連項目:
setSocketFactory
,
setSocketImplFactory
,
setURLStreamHandlerFactory
,
checkPermission
checkMemberAccess
public void checkMemberAccess(Class clazz,
int which)
- メンバーへのアクセスが呼び出し側スレッドに許可されていない場合に、
SecurityException
をスローします。
デフォルトのポリシーは PUBLIC メンバーへのアクセスおよび、呼び出し元と同じクラスローダーを持つクラスへのアクセスを許可します。それ以外のクラスへのアクセスの場合、このメソッドはアクセス権 RuntimePermission("accessDeclaredMembers")
を指定して checkPermission
を呼び出します。
このメソッドをオーバーライドした場合、super.checkMemberAccess
を呼び出すことはできません。これは、checkMemberAccess
のデフォルトの実装が、スタックの深さ 4 にあるチェック進行中のコードに依存するためです。
- パラメータ:
clazz
- リフレクションが実行されるクラスwhich
- アクセスのタイプ。PUBLIC または DECLARED
- 例外:
SecurityException
- 呼び出し側にメンバーへのアクセス権がない場合
NullPointerException
- clazz
引数が null
の場合- 導入されたバージョン:
- JDK1.1
- 関連項目:
Member
,
checkPermission
checkSecurityAccess
public void checkSecurityAccess(String target)
- 指定されたアクセス権ターゲット名のアクセス権を許可するか、あるいは拒否するかを判定します。
要求されたアクセス権を許可する場合、このメソッドは何もしないで復帰します。拒否する場合は、SecurityException がスローされます。
このメソッドは、指定されたアクセス権ターゲット名の SecurityPermission
オブジェクトを生成し、次に、そのアクセス権を指定して checkPermission
を呼び出します。
指定できるアクセス権ターゲット名のリストについては、SecurityPermission
のドキュメントを参照してください。
このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で super.checkSecurityAccess
が呼び出されるようにしてください。
- パラメータ:
target
- SecurityPermission
のターゲット名
- 例外:
SecurityException
- 呼び出し側スレッドに、要求されたアクセスに必要なアクセス権がない場合
NullPointerException
- target
が null の場合
IllegalArgumentException
- target
が空の場合- 導入されたバージョン:
- JDK1.1
- 関連項目:
checkPermission
getThreadGroup
public ThreadGroup getThreadGroup()
- このメソッドを呼び出したときに作成される、任意の新しいスレッドのインスタンスを生成するための、スレッドグループを返します。デフォルトでは、現在のスレッドのスレッドグループを返します。適切なスレッドグループを返すには、特定のセキュリティーマネージャーでこのメソッドをオーバーライドしてください。
- 戻り値:
- 新しいスレッドのインスタンスを生成する ThreadGroup
- 導入されたバージョン:
- JDK1.1
- 関連項目:
ThreadGroup
Copyright 2006 Sun Microsystems, Inc. All Rights Reserved. Use of this specification is subject to license terms.