14.3. JBoss Enterprise Application Platform 向けのセキュリティポリシーを書く

含まれているファイル jboss-as/bin/server.policy.cert は JBoss Enterprise Application Platform 向けのセキュリティポリシーの一例です。このファイルをご自身のセキュリティポリシーの基礎として使用できます。
policytool アプリケーションは JDK に含まれており、セキュリティポリシーを編集、書くためのグラフィカルツールを提供します。

重要

どのパーミッションを付与するか注意深く検討してください。java.security.AllPermission を付与するにあたっては特にご注意ください。JVM ランタイム環境などのシステムバイナリへの変更を許可してしまう可能性があります。
セキュリティポリシーファイルと Java パーミッションの一般的な取扱いについては http://download-llnw.oracle.com/javase/6/docs/technotes/guides/security/PolicyFiles.html の公式 Java ドキュメントを参照してください。JBoss 固有の java.lang.RuntimePermissions は以下に記載されています。

JBoss 固有のランタイム権限

org.jboss.security.SecurityAssociation.getPrincipalInfo
org.jboss.security.SecurityAssociation getPrincipal() getCredential() メソッドにアクセスを提供します。このランタイム権限を使用する場合のリスクは、現在のスレッド呼び出し側と資格情報を見ることができることです。
org.jboss.security.SecurityAssociation.getSubject
org.jboss.security.SecurityAssociation getSubject() メソッドにアクセスを提供します。
org.jboss.security.SecurityAssociation.setPrincipalInfo
org.jboss.security.SecurityAssociation setPrincipal()setCredential()setSubject()pushSubjectContext() および popSubjectContext() メソッドにアクセスを提供します。このランタイム権限を使用する場合のリスクは、現在のスレッド呼び出し側と資格情報を設定できることです。
org.jboss.security.SecurityAssociation.setServer
org.jboss.security.SecurityAssociation setServer メソッドにアクセスを提供します。このランタイム権限を使用する場合のリスクは、呼び出し側のプリンシパルと資格情報の複数スレッドのストレージを有効または無効にできることです。
org.jboss.security.SecurityAssociation.setRunAsRole
org.jboss.security.SecurityAssociation pushRunAsRolepopRunAsRolepushRunAsIdentity および popRunAsIdentity メソッドにアクセスを提供します。このランタイム権限を使用する場合のリスクは、現在の呼び出し側の run-as role プリンシパルを変更できることです。
org.jboss.security.SecurityAssociation.accessContextInfo
org.jboss.security.SecurityAssociation accessContextInfo, "Get"accessContextInfo, "Set" メソッドにアクセスを提供し、これにより現在のセキュリティコンテキスト情報を設定、取得できます。
org.jboss.naming.JndiPermission
指定された JNDI ツリーパスのファイルとディレクトリ、または再帰的にすべてのファイルとサブディレクトリに特別なパーミッションを提供します。JndiPermission はファイルまたはディレクトリに関連するパス名と有効なパーミッションのセットで構成されます。
使用可能なパーミッションは bindrebindunbindlookuplistlistBindingscreateSubcontext および all です。
/* で終わるパス名は、特定のパーミッションがパス名のすべてのファイルとディレクトリに適用することを意味しています。/- で終わるパス名は、パス名のすべてのファイルとサブディレクトリへの再帰的なパーミッションを意味しています。特別なトークン <<ALL BINDINGS>> で構成されるパス名は、すべてのディレクトリのすべてのファイルと一致します。
org.jboss.security.srp.SRPPermission
秘密セッションキーや秘密キーのような機密 SRP 情報へのアクセスを保護するカスタムのパーミッションクラスです。このパーミッションではアクションを定義しません。getSessionKey ターゲットは SRP 交渉の結果得られる秘密セッションキーへのアクセスを提供します。このキーへのアクセスにより、セッションキーで暗号化したメッセージを暗号化、復号化できます。
org.hibernate.secure.HibernatePermission
このパーミッションクラスは基本的なパーミッションを提供し、Hibernate セッションをセキュアにします。このプロパティのターゲットはエンティティ名です。使用可能なアクションには insertdeleteupdateread および * (すべて) があります。
org.jboss.metadata.spi.stack.MetaDataStackPermission
カスタムのパーミッションクラスを提供し、呼び出し側がメタデータスタックと交信する方法を制御します。使用可能なパーミッションは modify (スタックにプッシュ / ポップする)、peek (スタックにピークする)、および * (すべて) があります。
org.jboss.config.spi.ConfigurationPermission
構成プロパティの設定をセキュアにします。アクションではなく、パーミッションのターゲット名だけを定義します。このプロパティのターゲットには、設定するパーミッションを持つコードのプロパティを示す <property name>、すべてのプロパティを示す * があります。
org.jboss.kernel.KernelPermission
カーネル設定へのアクセスをセキュアにします。アクションではなく、パーミッションのターゲット名だけを定義します。このプロパティのターゲットには、カーネル設定へのアクセスを示す access、カーネルの設定を示す (アクセスは暗黙的に行われます) configure、上記のすべてを示す * があります。
org.jboss.kernel.plugins.util.KernelLocatorPermission
カーネルへのアクセスをセキュアにします。アクションではなく、パーミッションのターゲット名だけを定義します。このプロパティのターゲットには、カーネルへのアクセスを示す kernel、すべてのエリアへのアクセスを示す * があります。