Foundation 1.1.2

java.security
クラス SecurityPermission

java.lang.Object
  上位を拡張 java.security.Permission
      上位を拡張 java.security.BasicPermission
          上位を拡張 java.security.SecurityPermission
すべての実装されたインタフェース:
Serializable, Guard

public final class SecurityPermission
extends BasicPermission

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

ターゲット名には、セキュリティー構成パラメータの名前 (下記を参照) を指定します。現在、SecurityPermission オブジェクトを使うと、Policy、Security、Provider、Signer、Identity オブジェクトへのアクセスを保護できます。注:java.security.Signerjava.security.Identity は、J2ME Foundation Profile などの J2ME CDC プロファイルに入っています。 

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

アクセス権ターゲット名 アクセス権により許可される機能 このアクセス権を許可した場合のリスク
createAccessControlContext createAccessControlContext の作成。 このアクセス権は DomainCombiner を使用して AccessControlContext をインスタンス化します。現在スタックにある ProtectionDomains へのリファレンスが DomainCombiners に与えられるので、悪意のある DomainCombiners である場合、プライバシーが漏出する危険性があります。
getDomainCombiner AccessControlContext の DomainCombiner を取得。 このアクセス権は AccessControlContext の DomainCombiner を取得します。DomainCombiner には重要な情報があるので、プライバシーの漏洩につながる可能性があります。
getPolicy システム全体のセキュリティーポリシー (具体的には、現在インストールされている Policy オブジェクト) の取得。 特定の CodeSource に対してどのようなアクセス権が与えられているかを知ることができる getPermissions の呼び出しにより、システム全体のセキュリティーポリシーに対して問い合わせができるようになります。ポリシー情報が盗まれてもシステムのセキュリティーが脅かされるわけではありませんが、攻撃の狙いをより正確に定めるための追加情報を悪意のあるコードに与えてしまいます。必要以上の情報は公開しないようにする必要があります。
setPolicy システム全体のセキュリティーポリシー (具体的には、Policy オブジェクト) の設定。 このアクセス権を与えると、悪意のあるコードは、システムを攻撃するのに必要なアクセス権のすべてを自らに与えることができるようになるため、きわめて危険です。
getProperty.{key} 鍵を指定してのセキュリティープロパティーの取得。 指定した鍵により可能になるアクセスの種類によっては、コードから、システム全体のポリシーとユーザーセキュリティーポリシーの場所のほか、セキュリティープロバイダのリストにもアクセスできるようになります。この情報が盗まれてもシステムのセキュリティーが脅かされるわけではありませんが、攻撃の狙いをより正確に定めるための追加情報を悪意のあるコードに与えてしまいます。
setProperty.{key} 鍵を指定してのセキュリティープロパティーの設定。 これには、セキュリティープロバイダの設定と、システム全体のセキュリティーポリシーの場所の定義が含まれます。新しいセキュリティープロバイダを設定するアクセス権が与えられた悪意のあるコードは、暗号化非公開鍵などの機密情報を盗むプロバイダを設定する可能性があります。また、システム全体のセキュリティーポリシーの場所を設定するアクセス権が与えられた悪意のあるコードは、システムを攻撃するのに必要なアクセス権のすべてを攻撃者に与えるセキュリティーポリシーの場所をその場所に設定する可能性があります。
insertProvider.{provider name} 指定した新しいプロバイダの追加。 悪意のあるプロバイダ (受け取った非公開鍵を暴露するプロバイダなど) を、もっとも高い優先順位を持つプロバイダとして追加できるようになります。これは、インストールされているプロバイダを管理する現在の Security オブジェクトは、プロバイダを追加する前に、その整合性や信頼性のチェックは行わないためでです。
removeProvider.{provider name} 指定したプロバイダの削除。 プログラムのほかの部分の動作を変更したり、その実行を無効にすることができるようになります。プログラムが要求したプロバイダがすでに削除されてしまった場合、実行が異常終了する可能性があります。また、削除されたプロバイダがプログラムの残りの部分で要求されていなくても、そのプロバイダが、通常、暗号化サービスが要求されたときに選ばれるプロバイダである場合は (プロバイダのリストで前の方にあるため)、代わりに別のプロバイダが選ばれるか、適切なプロバイダが見つからない場合はエラーになります。
setSystemScope システムのアイデンティティースコープの設定。 攻撃者は、信頼されるべきでない証明書を使用してシステムのアイデンティティースコープを設定し、そのような証明書を使用して署名されたアプレットやアプリケーションのコードに、システムの元のアイデンティティースコープでは拒否されていた特権を与えることができます。
setIdentityPublicKey Identity の公開鍵の設定。注: java.security.Identity は、J2ME Foundation Profile などの J2ME CDC プロファイルに入っています。 アイデンティティーが「信頼できるもの」としてマークされている場合、攻撃者は、システムのアイデンティティースコープが信頼していない別の公開鍵 (独自の公開鍵など) を設定し、その公開鍵を使用して署名されたアプレットやアプリケーションのコードに、本来なら否定されていた特権を与えることができます。
setIdentityInfo Identity の概要を表す文字列の設定。注: java.security.Identity は、J2ME Foundation Profile などの J2ME CDC プロファイルに入っています。 攻撃者は、アイデンティティーの概要を表す文字列を設定できるようになります。これにより攻撃者は、アプリケーションを騙して目的のものとは異なるアイデンティティーを使用させるようにしたり、特定のアイデンティティーを見つけることができないようにしたりできます。
addIdentityCertificate Identity の証明書の追加。注: java.security.Identity は、J2ME Foundation Profile などの J2ME CDC プロファイルに入っています。 攻撃者は、アイデンティティーの公開鍵に証明書を設定できるようになります。システム全体の信頼関係に影響するため、このアクセス権は危険です。この公開鍵は、本来よりも広い範囲のコードに対して急に信頼性を持つようになります。
removeIdentityCertificate Identity の証明書の削除。注: java.security.Identity は、J2ME Foundation Profile などの J2ME CDC プロファイルに入っています。 攻撃者は、アイデンティティーの公開鍵のための証明書を削除できるようになります。システム全体の信頼関係に影響するため、このアクセス権は危険です。この公開鍵は、急に本来よりも信頼性が低くみなされるようになります。
printIdentity アイデンティティーの本人の名前、および必要に応じてそのアイデンティティーが使用されるスコープ、そのアイデンティティーがスコープ内で「信頼できる」とみなされているかどうかを表示。 出力されるスコープがファイル名の場合、ローカルシステムの情報が伝達されてしまうことがあります。たとえば、「carol」という名前のアイデンティティーのサンプル出力を示します。「carol」は、ユーザーのアイデンティティーデータベースでは「信頼されない」としてマーク付けされています。
carol[/home/luehe/identitydb.obj][not trusted]
clearProviderProperties.{provider name} Provider によって実装されているサービスの参照に使用されるプロパティーが空になるように、Provider を「クリア」。 プロバイダによって実装されているサービスの参照が無効になります。したがって、アクセス権「removeProvider.{provider name}」の部分で説明しているように、通常はその Provider を利用しているプログラムのほかの部分の動作が変更されたり、その実行が無効になったりする可能性があります。
putProviderProperty.{provider name} 指定した Provider のプロパティーの設定。 プロバイダのプロパティーは、そのプロバイダによって実装されている特定のサービスの名前と場所を指定します。このアクセス権を与えると、コードからサービスの指定を変更し、別の実装を指定できるようになります。
removeProviderProperty.{provider name} 指定した Provider からのプロパティーの削除。 プロバイダによって実装されているサービスの参照が無効になります。プロバイダの名前と場所を指定したプロパティーが削除されるため、そのプロバイダにはアクセスできなくなります。したがって、アクセス権「removeProvider.{provider name}」の部分で説明しているように、通常はその Provider を利用しているプログラムのほかの部分の動作が変更されたり、その実行が無効になったりする可能性があります。
getSignerPrivateKey 署名者の非公開鍵の取得。 非公開鍵へのアクセスを許可するのは非常に危険です。非公開鍵は、ほかに知られないようにしておくことが前提になっています。非公開鍵が知られてしまうと、コードはその非公開鍵を使用してさまざまなファイルに署名し、署名がその署名者のものであると主張できるようになります。注:java.security.Signer は、J2ME Foundation Profile などの J2ME CDC プロファイルに入っています。
setSignerKeyPair 署名者の鍵のペア (公開鍵と非公開鍵) の設定。 攻撃者は、他人 (標的) の鍵のペアを、それよりも弱い鍵のペア (キーサイズの小さいものなど) と置き換えることができるようになります。また、標的とその通信相手との間の暗号化されたやりとりを傍受できるようにもなります。標的の通信相手が、標的の「新しい」公開鍵を使用して暗号化セッション鍵をラップしても、攻撃者 (対応する非公開鍵の所有者) は、「新しい」公開鍵を使用してそのセッション鍵のラップを解除し、そのセッション鍵を使用して暗号化された通信データを解読できます。

関連項目:
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 オブジェクトを作成します。name は SecurityPermission の記号名です。actions の文字列は現在使用されておらず、null になります。

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

Foundation 1.1.2

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

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。