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 | 新しいプロバイダの追加 | 悪意のあるプロバイダ(受け取った非公開鍵を暴露するプロバイダなど)を、もっとも高い優先順位を持つプロバイダとして追加できるようになります。これは、インストールされているプロバイダを管理する現在のSecurityオブジェクトは、プロバイダを追加する前に、その整合性や信頼性のチェックは行わないためです。「insertProvider」アクセス権は、「insertProvider.{provider name}」アクセス権を包含しています(詳細は次の項を参照)。 |
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
。それらの使用は非推奨です。詳細については、該当するクラスを参照してください。
アクセス権ターゲット名 | アクセス権により許可される操作 | このアクセス権を許可した場合のリスク |
---|---|---|
insertProvider.{provider name} | 指定した新しいプロバイダの追加。 | Provider.getName() メソッドをオーバーライドすることで名前制約を回避できる可能性があるため、このアクセス権の今後の使用は非推奨です。また、特定の名前または選択された名前を持つプロバイダを挿入するアクセス権をコードに付与することに関しても、同等レベルのリスクがあります。ユーザーは、かわりに「insertProvider」アクセス権を使用するようにしてください。
悪意のあるプロバイダ(受け取った非公開鍵を暴露するプロバイダなど)を、もっとも高い優先順位を持つプロバイダとして追加できるようになります。これは、インストールされているプロバイダを管理する現在のSecurityオブジェクトは、プロバイダを追加する前に、その整合性や信頼性のチェックは行わないためです。 |
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, 2014, Oracle and/or its affiliates. All rights reserved.