|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectjava.security.Permission
java.security.BasicPermission
java.security.SecurityPermission
public final class SecurityPermission
このクラスはセキュリティアクセス権のために用意されています。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.{provider name} | 指定された名前を使った新しいプロバイダの追加 | このアクセス権は、悪意のある可能性のあるプロバイダ (たとえば、渡された非公開鍵を明らかにしてしまうもの) を優先順位のもっとも高いプロバイダとして導入する許可をユーザに与えてしまう。これが可能になるのは、Security オブジェクト (インストール済みプロバイダを管理する) が現在、プロバイダの接続前にその整合性や信頼性をチェックしないためである |
removeProvider.{provider name} | 指定されたプロバイダの削除 | このアクセス権は、プログラムのほかの部分の動作を変更したり、その実行を無効にする。今後プログラムからの要求を受けるプロバイダが削除された場合、実行は失敗する。また、削除済みプロバイダがプログラムの残りからの明示的な要求を受けていない場合、これは通常、暗号サービスが (プロバイダリストの従来の順番に基づいて) 要求されたときに選択されるプロバイダになるが、別のプロバイダが選ばれたり、適したプロバイダが見つからないこともあるので、プログラムの失敗につながる |
setSystemScope | システム識別情報スコープの設定 | このアクセス権は、信頼できない証明書でシステム識別情報の有効範囲を設定することを攻撃者に許可するので、システム識別情報の元の有効範囲では拒否されるはずの証明書特権で署名されたアプレットやアプリケーションコードを認めることになる |
setIdentityPublicKey | Identity の公開鍵の設定 | アイデンティティが「信頼できる」としてマークされている場合、このアクセス権は、システムのアイデンティティの有効範囲によって信頼されていない異なる公開鍵 (たとえば、それ自身) を導入することを攻撃者に許可するので、本来は拒否されるはずの公開鍵特権で署名されたアプレットやアプリケーションコードを認めることになる |
setIdentityInfo | Identity の汎用情報文字列の設定 | このアクセス権は、アイデンティティの汎用記述を設定することを攻撃者に許可する。これによりアプリケーションは、意図したものとは違うアイデンティティを使用させられたり、特定のアイデンティティを見つけることを妨害されたりする可能性がある |
addIdentityCertificate | Identity の証明書の追加 | このアクセス権は、アイデンティティの公開鍵の証明書を設定することを攻撃者に許可する。これは、システム全体に渡る信頼関係に影響を及ぼすので危険である。この公開鍵は、突然、本来よりも幅広いユーザに信頼されるようになる |
removeIdentityCertificate | Identity の証明書の削除 | このアクセス権は、アイデンティティの公開鍵の証明書を削除することを攻撃者に許可する。これは、システム全体に渡る信頼関係に影響を及ぼすので危険である。この公開鍵は、突然、本来よりも信頼に足らないと見なされるようになる |
printIdentity | アイデンティティの本人の名前、および必要に応じてそのアイデンティティが使用されるスコープ、そのアイデンティティがスコープ内で「信頼できる」と見なされているかどうかを表示する | 表示されるスコープはファイル名となる場合があり、その場合には、ローカルシステムの情報も付随する。たとえば、「carol」という名前のアイデンティティがユーザアイデンティティデータベースで「信頼できない」としてマークされている場合の表示は次のようになる。 carol[/home/luehe/identitydb.obj][not trusted] |
clearProviderProperties.{provider name} | Provider を「クリア」することで、そのプロバイダが実装するサービスを検索するのに使うプロパティを持たないようにする | このアクセス権は、プロバイダによって実装されたサービスの検索を無効にする。そのため、通常その Provider を利用するプログラムのほかの部分の動作を変更したり、その実行を無効にしたりできる (「removeProvider.{provider name}」アクセス権の説明を参照) |
putProviderProperty.{provider name} | 指定した Provider のプロパティの設定 | プロバイダプロパティはそれぞれ、プロバイダが実装する特定サービスの名前と位置を指定する。このアクセス権を与えることによって、コードがサービス仕様をほかのものと置き換えることで、異なる実装を指定できるようになる |
removeProviderProperty.{provider name} | 指定した 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 |
コンストラクタの詳細 |
---|
public SecurityPermission(String name)
name
- セキュリティアクセス権の名前public SecurityPermission(String name, String actions)
name
- セキュリティアクセス権の名前actions
- null でなければならない
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。