5.2. Java のセキュリティーポリシーについて

Java セキュリティーポリシーは、さまざまなクラスのコードに対する定義されたパーミッションのセットです。Java Security Manager は、アプリケーションによって要求されたアクションをセキュリティーポリシーと比較します。ポリシーがアクションを許可した場合、Security Manager はそのアクションの実行を許可します。ポリシーによりアクションが許可されない場合、セキュリティーマネージャーはそのアクションを拒否します。

重要

以前のバージョンの JBoss EAP では、外部ファイル (例: EAP_HOME/bin/server.policy) を使用してポリシーが定義されていました。JBoss EAP 7 では、security-manager サブシステムと、個別のデプロイメントで XML ファイルを使用するという 2 つの方法で Java セキュリティーポリシーを定義します。Security-manager サブシステムは、ALL ディプロイメントの最小および最大パーミッションを定義します。一方、XML ファイルは、個別のディプロイメントによって要求されたパーミッションを指定します。

5.2.1. Security Manager サブシステムでのポリシーの定義

security-manager サブシステムを使用すると、すべてのデプロイメントの共有のパーミッションまたは共通のパーミッションを定義できます。これは、最小および最大のパーミッションセットを定義することで実行できます。すべてのデプロイメントには、最小パーミッションで定義された少なくともすべてのパーミッションが付与されます。このデプロイメントプロセスは、最大パーミッションセットで定義されたものを超えるパーミッションを要求すると失敗します。

例: 最小パーミッションセットを更新する管理 CLI コマンド

/subsystem=security-manager/deployment-permissions=default:write-attribute(name=minimum-permissions, value=[{class="java.util.PropertyPermission", actions="read", name="*"}])

例: 最大パーミッションセットを更新する管理 CLI コマンド

/subsystem=security-manager/deployment-permissions=default:write-attribute(name=maximum-permissions, value=[{class="java.util.PropertyPermission", actions="read,write", name="*"}, {class="java.io.FilePermission", actions="read,write", name="/-"}])

注記

最大パーミッションセットが定義されていない場合、その値のデフォルトが java.security.AllPermission に設定されます。

関連情報

  • security-manager サブシステムの完全リファレンスは、JBoss EAP設定ガイド にあります。

5.2.2. デプロイメントでのポリシーの定義

JBoss EAP 7 では、デプロイメントに META-INF/permissions.xml を追加できます。このファイルでは、デプロイメントに必要なパーミッションを指定できます。

最低限のパーミッションセットが security-manager サブシステムに定義され、META-INF/permissions.xml がデプロイメントに追加されると、これらのパーミッションの結合が許可されます。permissions.xml で要求されるパーミッションが security-manager サブシステムで定義された最大ポリシーを超える場合、そのデプロイメントは成功しません。META-INF/permissions.xmlMETA-INF/jboss-permissions.xml の両方がデプロイメントにある場合は、META-INF/jboss-permissions.xml で要求されるパーミッションのみが付与されます。

この仕様は 、permission.xml がアプリケーション全体またはトップレベルのデプロイメントモジュールに対応するように指定します。サブデプロイメントに特定のパーミッションを定義する必要がある場合は、JBoss EAP 固有の META-INF/jboss-permissions.xml を使用できます。これは、permission.xml と同じ形式に従います。また、宣言されるデプロイメントモジュールにのみ適用されます。

例: permissions.xml のサンプル

<permissions version="7">
  <permission>
    <class-name>java.util.PropertyPermission</class-name>
    <name>*</name>
    <actions>read</actions>
  </permission>
</permissions>

5.2.3. モジュールにおけるポリシーの定義

<permissions> 要素を module.xml ファイルに追加してモジュールのパーミッションを制限できます。<permissions> 要素には、モジュールに付与するパーミッションを定義する、ゼロまたはそれ以上の <grant> 要素が含まれます。<grant> 要素には以下の属性が含まれます。

permission
付与するパーミッションの修飾クラス名。
name
パーミッションクラスのコンストラクターに提供するパーミッション名。
actions
一部のパーミッションタイプで必要なアクションの (オプション) リスト。

例: 定義されたポリシーを含む module.xml

<module xmlns="urn:jboss:module:1.5" name="org.jboss.test.example">
  <permissions>
    <grant permission="java.util.PropertyPermission" name="*" actions="read,write" />
    <grant permission="java.io.FilePermission" name="/etc/-" actions="read" />
  </permissions>
  ...
</module>

<permissions> 要素が存在する場合、モジュールはリストしたパーミッションのみに制限されます。<permissions> 要素が存在しない場合は、モジュールには制限がつきません。