Permissions

Permissions は、Ant が動作している JVM 内で特定部分のコードの実行を許可または無効とするセキュリティパーミッションの集合を表現します。 実際のパーミッションは、ネストしたパーミッションを表す項目である <grant> もしくは <revoke> のセットによって定義します。

通常の状態では、パーミッションの基本セットが許可されています。追加でパーミッションを許可することもできます。許可されているパーミッションは、無効化するパーミッションによって上書きされます。Permissions によって設定されたセキュリティマネージャは、Permissions の影響下にあるコードが許可されていなかったり無効になっているパーミッションを使おうとする場合、 SecurityException をスローします。

ネストした要素

grant

特定のパーミッションが常に与えられることを指示します。この要素の属性は、許可するパーミッションを表します。

属性 説明 必須
class パーミッションクラスの完全修飾名。 Yes
name パーミッションの名前。実際の内容は、パーミッションクラスに依存します。 No
actions 許可するアクション。実際の内容は、パーミッションクラスと名前に依存します。 No

暗黙的にパーミッションが許可されています。

幾つかのパーミッションクラスは、実際に name 及び(または) actions を適切に機能するために必要とするかもしれないことに注意してください。 name 及び actions は、実際のパーミッションクラスによって解析されます。

revoke

特定のパーミッションを無効にすることを指示します。

属性 説明 必須
class パーミッションクラスの完全修飾名。 Yes
name パーミッションの名前。実際の内容は、パーミッションクラスに依存します。 No
actions 許可するアクション。実際の内容は、パーミッションクラスと名前に依存します。 No

暗黙のうちにあるパーミッションは解決しません。それゆえ、無効にもなりません。

name は、名前の最後にある * ワイルドカードを処理することができます。これは、 指定された(* を除いた)名前から始まる名前の、指定されたクラスのすべてのパーミッションが無効になります。 name が空のままの場合、すべての名前はマッチして無効になります。 actions がからのままの場合、すべてのアクションはマッチして無効になります。

基本セット

パーミッションセットには、以下のようなパーミッションが暗黙的に含まれています:
<grant class="java.net.SocketPermission" name="localhost:1024-" actions="listen">
<grant class="java.util.PropertyPermission" name="java.version" actions="read">
<grant class="java.util.PropertyPermission" name="java.vendor" actions="read">
<grant class="java.util.PropertyPermission" name="java.vendor.url" actions="read">
<grant class="java.util.PropertyPermission" name="java.class.version" actions="read">
<grant class="java.util.PropertyPermission" name="os.name" actions="read">
<grant class="java.util.PropertyPermission" name="os.version" actions="read">
<grant class="java.util.PropertyPermission" name="os.arch" actions="read">
<grant class="java.util.PropertyPermission" name="file.encoding" actions="read">
<grant class="java.util.PropertyPermission" name="file.separator" actions="read">
<grant class="java.util.PropertyPermission" name="path.separator" actions="read">
<grant class="java.util.PropertyPermission" name="line.separator" actions="read">
<grant class="java.util.PropertyPermission" name="java.specification.version" actions="read">
<grant class="java.util.PropertyPermission" name="java.specification.vendor" actions="read">
<grant class="java.util.PropertyPermission" name="java.specification.name" actions="read">
<grant class="java.util.PropertyPermission" name="java.vm.specification.version" actions="read">
<grant class="java.util.PropertyPermission" name="java.vm.specification.vendor" actions="read">
<grant class="java.util.PropertyPermission" name="java.vm.specification.name" actions="read">
<grant class="java.util.PropertyPermission" name="java.vm.version" actions="read">
<grant class="java.util.PropertyPermission" name="java.vm.vendor" actions="read">
<grant class="java.util.PropertyPermission" name="java.vm.name" actions="read">
これらのパーミッションは、もし必要なら <revoke> 要素によって無効にすることができます。

<permissions>
  <grant class="java.security.AllPermission"/>
  <revoke class="java.util.PropertyPermission"/>
</permissions>

コードにプロパティを操作するものを除いてすべてのパーミッションを許可します。

<permissions>
  <grant class="java.net.SocketPermission" name="foo.bar.com" action="connect"/>
  <grant class="java.util.PropertyPermission" name="user.home" action="read,write"/>
</permissions>

パーミッションの基本セットに加えて foo.bar.com へコネクトするための SoketPermission と user.home システムプロパティへの読み書きのパーミッションを許可します。


Copyright © 2003-2004 The Apache Software Foundation. All rights Reserved.

[訳注: これは浦本 和則が翻訳しました。日本語訳に対するコメントがあれば、 report@jajakarta.orgに送って下さい。]