public final class SecurityPermission extends BasicPermission
ターゲット名には、セキュリティー構成パラメータの名前 (下記を参照) を指定します。現在、SecurityPermission オブジェクトを使うと、Policy、Security、Provider、Signer、Identity オブジェクトへのアクセスを保護できます。
次の表に、可能な SecurityPermission ターゲット名のすべてと、そのターゲット名のそれぞれについてアクセス権が許可する内容、およびコードにアクセス権を与えるリスクについての説明の一覧を示します。
アクセス権ターゲット名 | アクセス権により許可される操作 | このアクセス権を許可した場合のリスク |
---|---|---|
createAccessControlContext | createAccessControlContext の作成。 | このアクセス権は DomainCombiner を使用して AccessControlContext をインスタンス化する。このアクセス権を付与するときは、十分な注意を払う必要があります。悪意のあるコードは、コードに与えるアクセス権のセットを拡張したり、コード AllPermission さえも付与したりする DomainCombiner を作成する可能性があります。 |
getDomainCombiner | AccessControlContext の DomainCombiner を取得。 | このアクセス権は AccessControlContext の DomainCombiner を取得する。DomainCombiner には重要な情報があるので、プライバシの漏洩につながる可能性があります。 |
getPolicy | システム全体のセキュリティーポリシー (具体的には、現在インストールされている Policy オブジェクト) の取得。 | 特定の CodeSource に対してどのようなアクセス権が与えられているかを知ることができる getPermissions の呼び出しにより、システム全体のセキュリティーポリシーに対して問い合わせができるようになります。ポリシー情報が盗まれてもシステムのセキュリティーが脅かされるわけではありませんが、攻撃の狙いをより正確に定めるための追加情報を悪意のあるコードに与えてしまいます。必要以上の情報は公開しないようにする必要があります。 |
setPolicy | システム全体のセキュリティーポリシー (具体的には、Policy オブジェクト) の設定。 | このアクセス権を与えると、悪意のあるコードは、システムを攻撃するのに必要なアクセス権のすべてを自らに与えることができるようになるため、極めて危険です。 |
createPolicy.{policy type} | プロバイダから Policy 実装のインスタンスを取得。 | このアクセス権を付与すると、コードは Policy オブジェクトを取得できるようになります。悪意のあるコードが、Policy オブジェクトを照会することにより、自分以外のコードに付与されているアクセス権を特定しようとする場合があります。 |
getProperty.{key} | 鍵を指定してのセキュリティープロパティーの取得。 | 指定した鍵により可能になるアクセスの種類によっては、コードから、システム全体のポリシーとユーザーセキュリティーポリシーの場所のほか、セキュリティープロバイダのリストにもアクセスできるようになります。この情報が盗まれてもシステムのセキュリティーが脅かされるわけではありませんが、攻撃の狙いをより正確に定めるための追加情報を悪意のあるコードに与えてしまいます。 |
setProperty.{key} | 鍵を指定してのセキュリティープロパティーの設定。 | これには、セキュリティープロバイダの設定と、システム全体のセキュリティーポリシーの場所の定義が含まれます。新しいセキュリティープロバイダを設定するアクセス権が与えられた悪意のあるコードは、暗号化非公開鍵などの機密情報を盗むプロバイダを設定する可能性があります。また、システム全体のセキュリティーポリシーの場所を設定するアクセス権が与えられた悪意のあるコードは、システムを攻撃するのに必要なアクセス権のすべてを攻撃者に与えるセキュリティーポリシーの場所をその場所に設定する可能性があります。 |
insertProvider.{provider name} | 指定した新しいプロバイダの追加。 | 悪意のあるプロバイダ (受け取った非公開鍵を暴露するプロバイダなど) を、もっとも高い優先順位を持つプロバイダとして追加できるようになります。これは、インストールされているプロバイダを管理する現在の Security オブジェクトは、プロバイダを追加する前に、その整合性や信頼性のチェックは行わないためです。 |
removeProvider.{provider name} | 指定したプロバイダの削除。 | プログラムの他の部分の動作を変更したり、その実行を無効にすることができるようになります。プログラムが要求したプロバイダがすでに削除されてしまった場合、実行が異常終了する可能性があります。また、削除されたプロバイダがプログラムの残りの部分で要求されていなくても、そのプロバイダが、通常、暗号化サービスが要求されたときに選ばれるプロバイダである場合は (プロバイダのリストで前の方にあるため)、代わりに別のプロバイダが選ばれるか、適切なプロバイダが見つからない場合はエラーになります。 |
clearProviderProperties.{provider name} | Provider によって実装されているサービスの参照に使用されるプロパティーが空になるように、Provider を「クリア」する。 | プロバイダによって実装されているサービスの参照が無効になります。したがって、アクセス権「removeProvider.{provider name}」の部分で説明しているように、通常はその Provider を利用しているプログラムの他の部分の動作が変更されたり、その実行が無効になったりする可能性があります。 |
putProviderProperty.{provider name} | 指定した Provider のプロパティーの設定。 | プロバイダのプロパティーは、そのプロバイダによって実装されている特定のサービスの名前と場所を指定します。このアクセス権を与えると、コードからサービスの指定を変更し、別の実装を指定できるようになります。 |
removeProviderProperty.{provider name} | 指定した Provider からのプロパティーの削除。 | プロバイダによって実装されているサービスの参照が無効になります。プロバイダの名前と場所を指定したプロパティーが削除されるため、そのプロバイダにはアクセスできなくなります。したがって、アクセス権「removeProvider.{provider name}」の部分で説明しているように、通常はその Provider を利用しているプログラムの他の部分の動作が変更されたり、その実行が無効になったりする可能性があります。 |
次のアクセス権は、推奨されなくなったクラスに関連付けられています。Identity
, IdentityScope
, Signer
。それらの使用は推奨されません。詳細については、該当するクラスを参照してください。
アクセス権ターゲット名 | アクセス権により許可される操作 | このアクセス権を許可した場合のリスク |
---|---|---|
setSystemScope | システムのアイデンティティースコープの設定。 | 攻撃者は、信頼されるべきでない証明書を使用してシステムのアイデンティティースコープを構成し、そのような証明書を使用して署名されたアプレットやアプリケーションのコードに、システムの元のアイデンティティースコープでは拒否されていた特権を与えることができます。 |
setIdentityPublicKey | Identity の公開鍵の設定。 | アイデンティティーが「信頼できるもの」としてマークされている場合、攻撃者は、システムのアイデンティティースコープが信頼していない別の公開鍵 (独自の公開鍵など) を設定し、その公開鍵を使用して署名されたアプレットやアプリケーションのコードに、本来なら否定されていた特権を与えることができます。 |
setIdentityInfo | Identity の概要を表す文字列の設定。 | 攻撃者は、アイデンティティーの概要を表す文字列を設定できるようになります。これにより攻撃者は、アプリケーションを騙して目的のものとは異なるアイデンティティーを使用させるようにしたり、特定のアイデンティティーを見つけることができないようにしたりできます。 |
addIdentityCertificate | Identity の証明書の追加。 | 攻撃者は、アイデンティティーの公開鍵に証明書を設定できるようになります。システム全体の信頼関係に影響するため、このアクセス権は危険です。この公開鍵は、本来よりも広い範囲のコードに対して急に信頼性を持つようになります。 |
removeIdentityCertificate | Identity の証明書の削除。 | 攻撃者は、アイデンティティーの公開鍵のための証明書を削除できるようになります。システム全体の信頼関係に影響するため、このアクセス権は危険です。この公開鍵は、急に本来よりも信頼性が低く見なされるようになります。 |
printIdentity | アイデンティティーの本人の名前、および必要に応じてそのアイデンティティーが使用されるスコープ、そのアイデンティティーがスコープ内で「信頼できる」と見なされているかどうかを表示する。 | 出力されるスコープがファイル名の場合、ローカルシステムの情報が伝達されてしまうことがあります。たとえば、「carol」という名前のアイデンティティーのサンプル出力を示します。「carol」は、ユーザーのアイデンティティーデータベースでは「信頼されない」としてマーク付けされています。carol[/home/luehe/identitydb.obj][not trusted] |
getSignerPrivateKey | 署名者の非公開鍵の取得。 | 非公開鍵へのアクセスを許可するのは非常に危険です。非公開鍵は、ほかに知られないようにしておくことが前提になっています。非公開鍵が知られてしまうと、コードはその非公開鍵を使用してさまざまなファイルに署名し、署名がその署名者のものであると主張できるようになります。 |
setSignerKeyPair | 署名者の鍵のペア (公開鍵と非公開鍵) の設定。 | 攻撃者は、他人 (標的) の鍵のペアを、それよりも弱い鍵のペア (キーサイズの小さいものなど) と置き換えることができるようになります。また、標的とその通信相手との間の暗号化されたやりとりを傍受できるようにもなります。標的の通信相手が、標的の「新しい」公開鍵を使用して暗号化セッション鍵をラップしても、攻撃者 (対応する非公開鍵の所有者) は、「新しい」公開鍵を使用してそのセッション鍵のラップを解除し、そのセッション鍵を使用して暗号化された通信データを解読できます。 |
コンストラクタと説明 |
---|
SecurityPermission(String name)
新しい SecurityPermission を指定された名前で作成します。
|
SecurityPermission(String name, String actions)
指定された名前を持つ新しい SecurityPermission オブジェクトを作成します。
|
equals, getActions, hashCode, implies, newPermissionCollection
checkGuard, getName, toString
public SecurityPermission(String name)
name
- セキュリティーアクセス権の名前NullPointerException
- name
が null
の場合。IllegalArgumentException
- name
が空である場合。public SecurityPermission(String name, String actions)
name
- セキュリティーアクセス権の名前actions
- null でなければならない。NullPointerException
- name
が null
の場合。IllegalArgumentException
- name
が空である場合。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.