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

クラスSecurityManager

java.lang.Object
java.lang.SecurityManager
直系の既知のサブクラス:
RMISecurityManager

public class SecurityManager
extends Object
セキュリティ・マネージャとは、アプリケーションがセキュリティ・ポリシーを実装できるクラスです。 セキュリティ・マネージャを使えば、セキュリティを損なう恐れのある操作を実行する前に、操作が何であるかということと、セキュリティ・コンテキスト内でその操作の実行が許可されているかどうかがアプリケーションから判断できます。 アプリケーションは、そのような操作を禁止したり許可したりすることができます。

SecurityManagerクラスには、名前がcheckで始まるメソッドが多数あります。 これらのメソッドは、Javaライブラリ内の各種メソッドによって、セキュリティを損なう可能性のある操作を実行する前に呼び出されます。 このようなcheckメソッド呼出しの一般的な例を次に示します。

     SecurityManager security = System.getSecurityManager();
     if (security != null) {
         security.checkXXX(argument,  . . . );
     }
 

これにより、セキュリティ・マネージャには、例外をスローして操作の実行を回避する機会が与えられます。 セキュリティ・マネージャ・ルーチンは、操作が許可される場合は何も行わずに復帰します。操作が許可されない場合はSecurityExceptionをスローします。

セキュリティ・マネージャを使用する環境は通常、起動時にセキュリティ・マネージャを設定します。 JDKの実装では、これを行うために、コマンド行でシステム・プロパティjava.security.managerをセキュリティ・マネージャのクラス名に設定します。 空のString ("")または特別なトークン"default"に設定して、デフォルトのjava.lang.SecurityManagerを使用することもできます。 クラス名を指定する場合、java.lang.SecurityManagerまたはパブリック・サブクラスであり、パブリックで引数のないコンストラクタを持つ必要があります。 クラスはjava.lang.SecurityManagerでない場合、「組込みシステム・クラス・ローダー」によってロードされます。 java.security.managerシステム・プロパティが設定されていない場合、デフォルト値はnullです。つまり、起動時にセキュリティ・マネージャは設定されません。

Javaの実行時でも、setSecurityManagerメソッドを呼び出すことで、セキュリティ・マネージャを動的に設定することも可能ですが、許可する必要はありません。 JDK実装で、Java仮想マシンが特別なトークン"disallow"に設定されたjava.security.managerシステム・プロパティにより開始された場合、セキュリティ・マネージャは起動時に設定されず、動的に(setSecurityManagerメソッドがUnsupportedOperationExceptionをスロー)を設定できません。 java.security.managerシステム・プロパティが設定されていない場合、または特別なトークン"allow"に設定されている場合、起動時にセキュリティ・マネージャは設定されませんが、動的に設定することもできます。 最後に、java.security.managerシステム・プロパティがセキュリティ・マネージャのクラス名または空の文字列("")または特別なトークン"default"に設定されている場合、セキュリティ・マネージャは起動時に(前述のとおり)に設定され、続いて(または無効)動的(現在インストールされているセキュリティ・マネージャのポリシーに従う)に置換されます。 次の表に、java.security.managerシステム・プロパティの設定ごとのJDK実装の動作を示します:

プロパティ値SecurityManagerは起動時に設定され、動的にSecurityManagerを設定できます
プロパティ値 起動時のSecurityManagerセット System.set SecurityManager実行時の動作
null なし 現在インストールされているセキュリティ・マネージャによって許可されない場合は、SecurityExceptionを成功またはスロー
空の文字列("") java.lang.SecurityManager 現在インストールされているセキュリティ・マネージャによって許可されない場合は、SecurityExceptionを成功またはスロー
"default" java.lang.SecurityManager 現在インストールされているセキュリティ・マネージャによって許可されない場合は、SecurityExceptionを成功またはスロー
"disallow" なし 常にUnsupportedOperationExceptionをスロー
"allow" なし 現在インストールされているセキュリティ・マネージャによって許可されない場合は、SecurityExceptionを成功またはスロー
クラス名 指定されたクラス 現在インストールされているセキュリティ・マネージャによって許可されない場合は、SecurityExceptionを成功またはスロー

JDKの将来のリリースでは、java.security.managerシステム・プロパティのデフォルト値は"disallow"に変更される可能性があります。

現在のセキュリティ・マネージャは、getSecurityManagerメソッドによって返されます。

特殊メソッドcheckPermission(java.security.Permission)は、指定されたアクセス権によって示されるアクセス要求が許可されるか、拒否されるかを決定します。 デフォルトの実装では、次のメソッドが呼び出されます。

   AccessController.checkPermission(perm);
 

要求されたアクセス権が許可される場合、checkPermissionは何もしないで復帰します。 許可されない場合は、SecurityExceptionがスローされます。

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.FilePermissionjava.net.SocketPermissionjava.net.NetPermissionjava.security.SecurityPermissionjava.lang.RuntimePermissionjava.util.PropertyPermissionjava.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というアクセス権もあります。 これは、すべての(あるいは多くの)アクセス権を要求する複数のタスクを実行する必要がある、システム管理者の作業を単純化するためのアクセス権です。

権限関連の情報については、「Java Development Kit (JDK)の権限」を参照してください。 このドキュメントには、さまざまなSecurityManagerのcheckメソッドと、そのような各メソッドのデフォルトの実装に必要なアクセス許可を列挙した表が含まれています。 また、アクセス権を必要とするメソッドの表も含まれています。また、そのような各メソッドについて、必要なアクセス許可を指示します。

導入されたバージョン:
1.0
関連項目:
ClassLoader, SecurityException, getSecurityManager, setSecurityManager, AccessController, AccessControlContext, AccessControlException, Permission, BasicPermission, FilePermission, SocketPermission, PropertyPermission, RuntimePermission, Policy, SecurityPermission, ProtectionDomain
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ 説明
    SecurityManager()
    新しいSecurityManagerを構築します。
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    void checkAccept​(String host, int port)
    指定されたホストとポート番号からのソケット接続を受け取ることが、呼出し側スレッドに許可されていない場合に、SecurityExceptionをスローします。
    void checkAccess​(Thread t)
    呼出し側スレッドがスレッド引数の修正を許可されていない場合に、SecurityExceptionをスローします。
    void checkAccess​(ThreadGroup g)
    呼出し側スレッドが、スレッド・グループ引数の修正を許可されていない場合に、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 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 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オブジェクトを返します。

      戻り値:
      あとでセキュリティ・チェックを行えるように、現在の実行環境の十分な情報をカプセル化した、実装依存のオブジェクト。
      関連項目:
      checkConnect, checkRead, 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呼出しによって返されたセキュリティ・コンテキストである必要があります。アクセス制御の決定は、このセキュリティ・コンテキストに対して構成されているセキュリティ・ポリシーに基づいて行われます。

      contextAccessControlContextのインスタンスである場合、AccessControlContext.checkPermissionメソッドが指定されたアクセス権で呼び出されます。

      contextAccessControlContextのインスタンスでない場合は、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(), checkPermission
    • checkAccess

      public void checkAccess​(Thread t)
      呼出し側スレッドがスレッド引数の修正を許可されていない場合に、SecurityExceptionをスローします。

      このメソッドは、ThreadクラスのstopsuspendresumesetPrioritysetName、およびsetDaemonメソッドによって、現在のセキュリティ・マネージャに対して呼び出されます。

      スレッドの引数がシステム・スレッド(親がnullであるスレッド・グループに属するスレッド)の場合、このメソッドはRuntimePermission("modifyThread")アクセス権でcheckPermissionを呼び出します。 スレッドの引数がシステム・スレッドでない場合、このメソッドは何もしないで復帰します。

      より厳しいポリシーが必要なアプリケーションでは、このメソッドをオーバーライドする必要があります。 このメソッドをオーバーライドする場合、オーバーライド側のメソッドは、呼出し側スレッドがRuntimePermission("modifyThread")アクセス権を持つかどうかも確認する必要があります。アクセス権を持っている場合、このメソッドが何もせずに復帰するようにしてください。 これは、そのアクセス権を与えられたコード(JDK自体など)がどんなスレッドでも扱えるようにするためです。

      このメソッドをオーバーライドする場合は、オーバーライドされたメソッドの1番目の文でsuper.checkAccessを呼び出すか、オーバーライドされたメソッドに同等のセキュリティ・チェックを記述してください。

      パラメータ:
      t - チェック対象のスレッド。
      例外:
      SecurityException - 呼出し側スレッドに、このスレッドを変更するのに必要なアクセス権がない場合。
      NullPointerException - スレッド引数がnullの場合。
      関連項目:
      resume, setDaemon, setName, setPriority, stop, suspend, checkPermission
    • checkAccess

      public void checkAccess​(ThreadGroup g)
      呼出し側スレッドが、スレッド・グループ引数の修正を許可されていない場合に、SecurityExceptionをスローします。

      このメソッドは、子スレッドまたは子スレッド・グループが新しく作成されたときに、ThreadGroupクラスのsetDaemonsetMaxPrioritystopsuspendresumedestroyの各メソッドによって、現在のセキュリティ・マネージャに対して呼び出されます。

      スレッド・グループの引数がシステム・スレッド・グループ(親がnull)の場合、このメソッドは、RuntimePermission("modifyThreadGroup")アクセス権でcheckPermissionを呼び出します。 スレッド・グループの引数がシステム・スレッド・グループでない場合、このメソッドは何もしないで復帰します。

      より厳しいポリシーが必要なアプリケーションでは、このメソッドをオーバーライドする必要があります。 このメソッドをオーバーライドする場合、オーバーライド側のメソッドは、呼出し側スレッドがRuntimePermission("modifyThreadGroup")アクセス権を持つかどうかも確認する必要があります。アクセス権を持っている場合、このメソッドが何もせずに復帰するようにしてください。 これは、そのアクセス権を与えられたコード(JDK自体など)がどんなスレッドでも扱えるようにするためです。

      このメソッドをオーバーライドする場合は、オーバーライドされたメソッドの1番目の文でsuper.checkAccessを呼び出すか、オーバーライドされたメソッドに同等のセキュリティ・チェックを記述してください。

      パラメータ:
      g - チェック対象のスレッド・グループ。
      例外:
      SecurityException - 呼出し側スレッドに、このスレッド・グループを変更するのに必要なアクセス権がない場合。
      NullPointerException - スレッド・グループの引数がnullの場合。
      関連項目:
      destroy, resume, setDaemon, setMaxPriority, stop, suspend, checkPermission
    • checkExit

      public void checkExit​(int status)
      指定されたステータス・コードでJava仮想マシンを停止させる許可を、呼出し側のスレッドが持っていない場合に、SecurityExceptionをスローします。

      このメソッドは、Runtimeクラスのexitメソッドによって、現在のセキュリティ・マネージャに対して呼び出されます。 ステータス・コード0は成功を表し、その他の値は各種のエラーを表します。

      このメソッドは、アクセス権RuntimePermission("exitVM."+status)を指定してcheckPermissionを呼び出します。

      このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkExitが呼び出されるようにしてください。

      パラメータ:
      status - 終了のステータス。
      例外:
      SecurityException - 指定されたステータスでJava仮想マシンを停止させるアクセス権が、呼出し側スレッドにない場合。
      関連項目:
      exit, checkPermission
    • checkExec

      public void checkExec​(String cmd)
      サブプロセスの作成が呼出し側スレッドに許可されていない場合に、SecurityExceptionをスローします。

      このメソッドは、Runtimeクラスのexecメソッドによって、現在のセキュリティ・マネージャに対して呼び出されます。

      このメソッドは、cmdが絶対パスの場合はcheckPermissionFilePermission(cmd,"execute")アクセス権で呼び出し、それ以外の場合はcheckPermissionFilePermission("<<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[]), 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呼出しで返されたセキュリティ・コンテキストである必要があります。

      contextAccessControlContextのインスタンスである場合、AccessControlContext.checkPermissionメソッドがFilePermission(file,"read")で呼び出されます。

      contextAccessControlContextのインスタンスでない場合は、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アドレスを、呼出し側のメソッドが決定しようとしていることを表します。

      portが -1に等しくない場合、このメソッドはcheckPermissionSocketPermission(host+":"+port,"connect")アクセス権で呼び出します。 portが -1に等しい場合、これはcheckPermissionSocketPermission(host,"resolve")アクセス権で呼び出します。

      このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkConnectが呼び出されるようにしてください。

      パラメータ:
      host -接続先のホスト名ポート。
      port - 接続先のプロトコル・ポート。
      例外:
      SecurityException - 呼出し側スレッドに、指定されたhostおよびportへのソケット接続をオープンするためのアクセス権がない場合。
      NullPointerException - host引数がnullの場合。
      関連項目:
      checkPermission
    • checkConnect

      public void checkConnect​(String host, int port, Object context)
      指定されたセキュリティ・コンテキストが、指定されたホストとポート番号へのソケット接続をオープンするアクセス権を持っていない場合に、SecurityExceptionをスローします。

      ポート番号-1は、指定されたホスト名のIPアドレスを、呼出し側のメソッドが決定しようとしていることを表します。

      contextAccessControlContextのインスタンスでない場合は、SecurityExceptionがスローされます。

      そうでない場合は、ポート番号を確認します。 これが -1に等しい場合、contextcheckPermissionメソッドがSocketPermission(host+":"+port,"connect")アクセス権で呼び出されます。 portが -1に等しい場合、contextcheckPermissionメソッドがSocketPermission(host,"resolve")アクセス権で呼び出されます。

      このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置で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をスローします。

      このメソッドはcheckPermissionSocketPermission("localhost:"+port,"listen")で呼び出します。

      このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkListenが呼び出されるようにしてください。

      パラメータ:
      port - ローカル・ポート。
      例外:
      SecurityException - 呼出し側スレッドに、指定されたポートで待機するためのアクセス権がない場合。
      関連項目:
      checkPermission
    • checkAccept

      public void checkAccept​(String host, int port)
      指定されたホストとポート番号からのソケット接続を受け取ることが、呼出し側スレッドに許可されていない場合に、SecurityExceptionをスローします。

      このメソッドは、ServerSocketクラスのacceptメソッドによって、現在のセキュリティ・マネージャに対して呼び出されます。

      このメソッドは、アクセス権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の場合。
      導入されたバージョン:
      1.1
      関連項目:
      checkPermission
    • checkMulticast

      @Deprecated(since="1.4")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の場合。
      導入されたバージョン:
      1.1
      関連項目:
      checkPermission
    • checkPropertiesAccess

      public void checkPropertiesAccess()
      システム・プロパティのアクセスまたは変更が呼出し側スレッドに許可されていない場合に、SecurityExceptionをスローします。

      このメソッドはSystemgetPropertiesおよび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.checkPropertyAccessが呼び出されるようにしてください。

      パラメータ:
      key - システム・プロパティのキー。
      例外:
      SecurityException - 呼出し側スレッドに、指定されたシステム・プロパティへのアクセス権がない場合。
      NullPointerException - key引数がnullの場合。
      IllegalArgumentException - keyが空である場合。
      関連項目:
      System.getProperty(java.lang.String), checkPermission
    • checkPrintJobAccess

      public void checkPrintJobAccess()
      印刷ジョブ要求の開始が呼出し側スレッドに許可されていない場合に、SecurityExceptionをスローします。

      このメソッドは、アクセス権RuntimePermission("queuePrintJob")を指定してcheckPermissionを呼び出します。

      このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkPrintJobAccessが呼び出されるようにしてください。

      例外:
      SecurityException - 呼出し側スレッドに、印刷ジョブ要求を開始するためのアクセス権がない場合。
      導入されたバージョン:
      1.1
      関連項目:
      checkPermission
    • checkPackageAccess

      public void checkPackageAccess​(String pkg)
      呼び出し元のスレッドが指定されたパッケージにアクセスできない場合は、SecurityExceptionをスローします。

      クラス・ローディング中、このメソッドは、クラス・ローダーのloadClassメソッドとJava Virtual Machineによって呼び出され、呼び出し元がロードされているクラスのパッケージにアクセスできるようにします。

      このメソッドは、指定されたパッケージがpackage.accessセキュリティ・プロパティのいずれかのパッケージで始まるか等しいかどうかをチェックします。 実装はまた、以下に述べるように、制限されたパッケージの追加リストに対してパッケージをチェックするかもしれません。 パッケージが制限されている場合、RuntimePermission("accessClassInPackage."+pkg)の許可を得てcheckPermission(Permission)が呼び出されます。

      このメソッドをオーバーライドする場合は、オーバーライドされたメソッドの1行目で、super.checkPackageAccessへの呼出しを行う必要があります。

      実装上のノート:
      この実装はまた、「プラットフォーム・クラス・ローダー」またはその祖先によってロードされた、エクスポートされていないすべてのモジュールのパッケージを制限します。 "エクスポートされていないパッケージ"は、すべてのモジュールにエクスポートされていないパッケージを指します。 具体的には、パッケージを含むパッケージを意味し、そのパッケージを含むモジュールによってまったくエクスポートされないか、またはパッケージを含むモジュールによって修飾された方法でエクスポートされます。
      パラメータ:
      pkg - パッケージ名。
      例外:
      SecurityException - 呼出し側スレッドに、指定されたパッケージへのアクセス権がない場合。
      NullPointerException - パッケージ名の引数がnullの場合。
      関連項目:
      loadClass, getProperty, checkPermission
    • checkPackageDefinition

      public void checkPackageDefinition​(String pkg)
      呼び出し元のスレッドが指定されたパッケージ内のクラスを定義できない場合は、SecurityExceptionをスローします。

      このメソッドは、いくつかのクラス・ローダーのloadClassメソッドによって呼び出されます。

      このメソッドは、指定されたパッケージがpackage.definitionセキュリティ・プロパティのいずれかのパッケージで始まるか等しいかどうかをチェックします。 実装はまた、以下に述べるように、制限されたパッケージの追加リストに対してパッケージをチェックするかもしれません。 パッケージが制限されている場合、RuntimePermission("defineClassInPackage."+pkg)の許可を得てcheckPermission(Permission)が呼び出されます。

      このメソッドをオーバーライドする場合は、オーバーライドされたメソッドの1行目で、super.checkPackageDefinitionへの呼出しを行う必要があります。

      実装上のノート:
      この実装はまた、「プラットフォーム・クラス・ローダー」またはその祖先によってロードされた、エクスポートされていないすべてのモジュールのパッケージを制限します。 "エクスポートされていないパッケージ"は、すべてのモジュールにエクスポートされていないパッケージを指します。 具体的には、パッケージを含むパッケージを意味し、そのパッケージを含むモジュールによってまったくエクスポートされないか、またはパッケージを含むモジュールによって修飾された方法でエクスポートされます。
      パラメータ:
      pkg - パッケージ名。
      例外:
      SecurityException - 呼出し側スレッドに、指定されたパッケージ中のクラスを定義するためのアクセス権がない場合。
      NullPointerException - パッケージ名の引数がnullの場合。
      関連項目:
      ClassLoader.loadClass(String, boolean), getProperty, checkPermission
    • checkSetFactory

      public void checkSetFactory()
      ServerSocketまたはSocketが使用するソケット・ファクトリ、またはURLが使用するストリーム・ハンドラ・ファクトリを設定することが呼出し側スレッドに許可されていない場合に、SecurityExceptionをスローします。

      このメソッドは、アクセス権RuntimePermission("setFactory")を指定してcheckPermissionを呼び出します。

      このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkSetFactoryが呼び出されるようにしてください。

      例外:
      SecurityException - 呼出し側スレッドに、ソケット・ファクトリ、またはストリーム・ハンドラ・ファクトリを指定するためのアクセス権がない場合。
      関連項目:
      setSocketFactory, setSocketImplFactory, setURLStreamHandlerFactory, checkPermission
    • checkSecurityAccess

      public void checkSecurityAccess​(String target)
      指定されたアクセス権ターゲット名のアクセス権を許可するか、あるいは拒否するかを判定します。

      要求されたアクセス権を許可する場合、このメソッドは何もしないで復帰します。 拒否する場合は、SecurityExceptionがスローされます。

      このメソッドは、指定されたアクセス権ターゲット名のSecurityPermissionオブジェクトを生成し、次に、そのアクセス権を指定してcheckPermissionを呼び出します。

      指定できるアクセス権ターゲット名のリストについては、SecurityPermissionのドキュメントを参照してください。

      このメソッドをオーバーライドする場合は、オーバーライドされるメソッドが通常であれば例外をスローする位置でsuper.checkSecurityAccessが呼び出されるようにしてください。

      パラメータ:
      target - SecurityPermissionのターゲット名。
      例外:
      SecurityException - 呼出し側スレッドに、要求されたアクセスに必要なアクセス権がない場合。
      NullPointerException - targetがnullである場合。
      IllegalArgumentException - targetが空である場合。
      導入されたバージョン:
      1.1
      関連項目:
      checkPermission
    • getThreadGroup

      public ThreadGroup getThreadGroup()
      このメソッドを呼び出したときに作成される、任意の新しいスレッドのインスタンスを生成するための、スレッド・グループを返します。 デフォルトでは、現在のスレッドのスレッド・グループを返します。 適切なスレッド・グループを返すには、特定のセキュリティ・マネージャでこのメソッドをオーバーライドしてください。
      戻り値:
      新しいスレッドのインスタンスを生成するThreadGroup
      導入されたバージョン:
      1.1
      関連項目:
      ThreadGroup