JavaTM 2
Platform
Std. Ed. v1.4.0

java.security
クラス SecurityPermission

java.lang.Object
  |
  +--java.security.Permission
        |
        +--java.security.BasicPermission
              |
              +--java.security.SecurityPermission
すべての実装インタフェース:
Guard, Serializable

public final class SecurityPermission
extends BasicPermission

このクラスはセキュリティアクセス権のために用意されています。SecurityPermission は名前 (「ターゲット名」とも呼ばれる) を持ちますが、アクションリストは持ちません。ユーザは名前付きアクセス権を持つ場合と、持たない場合があります。

ターゲット名はセキュリティ設定パラメータの名前です (下記を参照)。現在、SecurityPermission オブジェクトを使うと、Policy、Security、Provider、Signer、Identity オブジェクトへのアクセスを保護できます。

以下の表に、可能な SecurityPermission ターゲット名のすべてと、そのターゲット名のそれぞれについてアクセス権が許可する内容、およびコードにアクセス権を与えるリスクについての説明の一覧を示します。

アクセス権ターゲット名 アクセス権により許可される機能 このアクセス権を許可した場合のリスク
createAccessControlContext AccessControlContext の作成 このアクセス権は DomainCombiner を使用して AccessControlContext をインスタンス化する。DomainCombiners は現在スタックにある ProtectionDomains を参照できるので、DomainCombiner に悪意があるとプライバシの漏洩につながる可能性がある
getDomainCombiner AccessControlContext の DomainCombiner の取得 このアクセス権は AccessControlContext の DomainCombiner を取得する。DomainCombiner には重要な情報があるので、プライバシの漏洩につながる可能性がある
getPolicy システム全体のセキュリティポリシーの取得 (特に、現在インストール済みの Policy オブジェクトが対象) このアクセス権は、ユーザが getPermissions 呼び出しを経由してポリシーを照会することを許可する。これによって、指定された CodeSource にどのアクセス権が与えられるかを知ることができる。ポリシーが知られてもそれだけでシステムのセキュリティが危険にさらされるわけではないが、攻撃を目的とするための追加情報を悪意のあるコードに与えることになる。必要以上の情報を公開しないほうが賢明である
setPolicy システム全体のセキュリティポリシーの設定 (特に、Policy オブジェクトが対象) このアクセス権を与えるのは非常に危険である。このアクセス権によって、悪意のあるコードがシステムを攻撃するのに必要なさまざまなアクセス権をそれ自身に与えることが可能になるからである
getProperty.{key} 指定された鍵を使ったセキュリティプロパティの取得 アクセスが許可されている特定の鍵に基づいて、コードが、システム全体およびユーザセキュリティポリシーの位置だけでなく、セキュリティプロバイダのリストにもアクセスすることができる。この情報が知られてもそれだけでシステムのセキュリティが危険にさらされるわけではないが、攻撃を目的とするための追加情報を悪意のあるコードに与えることになる
getProperty.{key} 指定された鍵を使ったセキュリティプロパティの取得 このアクセス権があれば、セキュリティプロバイダを設定したり、システム全体のセキュリティポリシーの位置を定義したりできる。新しいセキュリティプロバイダを設定するアクセス権を悪意のあるコードが持つと、暗号非公開鍵のような機密情報を横取りする悪意のあるプロバイダを設定する危険がある。さらに、システム全体のセキュリティポリシーの位置を設定するアクセス権を悪意のあるコードが持つと、その位置を、システムに攻撃を行うのに必要なすべてのアクセス権を攻撃者に与えるようなセキュリティポリシーを指すようにする可能性もある
insertProvider.{プロバイダ名} 指定された名前を使った新しいプロバイダの追加 このアクセス権は、悪意のある可能性のあるプロバイダ (たとえば、渡された非公開鍵を明らかにしてしまうもの) を優先順位のもっとも高いプロバイダとして導入する許可をユーザに与えてしまう。これが可能になるのは、Security オブジェクト (インストール済みプロバイダを管理する) が現在、プロバイダの接続前にその整合性や信頼性をチェックしないためである
removeProvider.{プロバイダ名} 指定されたプロバイダの削除 このアクセス権は、プログラムのほかの部分の動作を変更したり、その実行を無効にする。今後プログラムからの要求を受けるプロバイダが削除された場合、実行は失敗する。また、削除済みプロバイダがプログラムの残りからの明示的な要求を受けていない場合、これは通常、暗号サービスが (プロバイダリストの従来の順番に基づいて) 要求されたときに選択されるプロバイダになるが、別のプロバイダが選ばれたり、適したプロバイダが見つからないこともあるので、プログラムの失敗につながる
setSystemScope システム識別情報スコープの設定 このアクセス権は、信頼できない証明書でシステムのアイデンティティの有効範囲を設定することを攻撃者に許可するので、システムのアイデンティティの元の有効範囲では拒否されるはずの証明書特権で署名されたアプレットやアプリケーションコードを認めることになる
setIdentity 公開鍵 Identity の公開鍵の設定 アイデンティティが「信頼できる」としてマークされている場合、このアクセス権は、システムのアイデンティティの有効範囲によって信頼されていない異なる公開鍵 (たとえば、それ自身) を導入することを攻撃者に許可するので、本来は拒否されるはずの公開鍵特権で署名されたアプレットやアプリケーションコードを認めることになる
setIdentityInfo Identity の汎用情報文字列の設定 このアクセス権は、アイデンティティの汎用記述を設定することを攻撃者に許可する。これによりアプリケーションは、意図したものとは違うアイデンティティを使用させられたり、特定のアイデンティティを見つけることを妨害されたりする可能性がある
addIdentityCertificate Identity の証明書の追加 このアクセス権は、アイデンティティの公開鍵の証明書を設定することを攻撃者に許可する。これは、システム全体に渡る信頼関係に影響を及ぼすので危険である。この公開鍵は、突然、本来よりも幅広いユーザに信頼されるようになる
removeIdentityCertificate Identity の証明書の削除 このアクセス権は、アイデンティティの公開鍵の証明書を削除することを攻撃者に許可する。これは、システム全体に渡る信頼関係に影響を及ぼすので危険である。この公開鍵は、突然、本来よりも信頼に足らないと見なされるようになる
printIdentity アイデンティティの本人の名前、および必要に応じてそのアイデンティティが使用されるスコープ、そのアイデンティティがスコープ内で「信頼できる」と見なされているかどうかを表示する 表示されるスコープはファイル名となる場合があり、その場合には、ローカルシステムの情報も付随する。たとえば、「carol」という名前のアイデンティティがユーザアイデンティティデータベースで「信頼できない」としてマークされている場合の表示は次のようになる
carol[/home/luehe/identitydb.obj][not trusted]
clearProviderProperties.{プロバイダ名} Provider を「クリア」することで、そのプロバイダが実装するサービスを検索するのに使うプロパティを持たないようにする このアクセス権は、プロバイダによって実装されたサービスの検索を無効にする。そのため、通常その Provider を利用するプログラムのほかの部分の動作を変更したり、その実行を無効にしたりできる (「removeProvider.{provider name}」アクセス権の説明を参照)
putProviderProperty.{プロバイダ名} 指定した Provider のプロパティの設定 プロバイダプロパティはそれぞれ、プロバイダが実装する特定サービスの名前と位置を指定する。このアクセス権を与えることによって、コードがサービス仕様をほかのものと置き換えることで、異なる実装を指定できるようになる
removeProviderProperty.{プロバイダ名} 指定した Provider からのプロパティの削除 このアクセス権は、プロバイダが実装するサービスの検索を無効にする。サービスの名前と位置を指定しているプロパティの削除によって、それ以上サービスを利用できなくなる。そのため、通常その Provider を利用するプログラムのほかの部分の動作を変更したり、その実行を無効にしたりできる (「removeProvider.{provider name}」アクセス権の説明を参照)
getSignerPrivateKey Signer の非公開鍵の取得 非公開鍵は秘密に保管すべきものであり、非公開鍵へのアクセスを許可することは非常に危険である。アクセスを許可してしまうと、コードは、非公開鍵を使ってさまざまなファイルに署名したり、Signer からの署名を要求したりすることができる
setSignerKeyPair Signer の鍵のペア (公開鍵と非公開鍵) の設定 このアクセス権は、ターゲットである他者の鍵ペアを弱い鍵ペア (たとえば、サイズの小さい鍵ペア) に置き換えることを攻撃者に許可する。これは同時に、ターゲットとそのピアとの暗号通信を盗聴することも攻撃者に許可する。ターゲットのピアは、ターゲットの「新しい」公開鍵で暗号セッション鍵をラップする可能性がある。この「新しい」公開鍵によって、攻撃者 (対応する非公開鍵を持つ) がセッション鍵のラップを解除して、そのセッション鍵で暗号化された通信データの暗号を解読できるようになる

関連項目:
BasicPermission, Permission, Permissions, PermissionCollection, SecurityManager, 直列化された形式

コンストラクタの概要
SecurityPermission(String name)
          新しい SecurityPermission を指定された名前で作成します。
SecurityPermission(String name, String actions)
          新しい SecurityPermission オブジェクトを、指定された名前で作成します。
 
クラス java.security.BasicPermission から継承したメソッド
equals, getActions, hashCode, implies, newPermissionCollection
 
クラス java.security.Permission から継承したメソッド
checkGuard, getName, toString
 
クラス java.lang.Object から継承したメソッド
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

SecurityPermission

public SecurityPermission(String name)
新しい SecurityPermission を指定された名前で作成します。この名前は SecurityPermission のシンボル名です。名前の末尾に「.」に続けて、または単独でアスタリスクを置くことでワイルドカードマッチングを表すことができます。

パラメータ:
name - セキュリティアクセス権の名前

SecurityPermission

public SecurityPermission(String name,
                          String actions)
新しい SecurityPermission オブジェクトを、指定された名前で作成します。この名前は SecurityPermission のシンボル名で、String のアクションは現在未使用で null でなければなりません。このコンストラクタは、Policy オブジェクトが使うために用意され、新しい Permission オブジェクトのインスタンスを生成します。

パラメータ:
name - セキュリティアクセス権の名前
actions - null でなければならない

JavaTM 2
Platform
Std. Ed. v1.4.0

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

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.