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.getPrincipalInfoorg.jboss.security.SecurityAssociation getPrincipal()とgetCredential()メソッドにアクセスを提供します。このランタイム権限を使用する場合のリスクは、現在のスレッド呼び出し側と資格情報を見ることができることです。org.jboss.security.SecurityAssociation.getSubjectorg.jboss.security.SecurityAssociation getSubject()メソッドにアクセスを提供します。org.jboss.security.SecurityAssociation.setPrincipalInfoorg.jboss.security.SecurityAssociation setPrincipal()、setCredential()、setSubject()、pushSubjectContext()およびpopSubjectContext()メソッドにアクセスを提供します。このランタイム権限を使用する場合のリスクは、現在のスレッド呼び出し側と資格情報を設定できることです。org.jboss.security.SecurityAssociation.setServerorg.jboss.security.SecurityAssociation setServerメソッドにアクセスを提供します。このランタイム権限を使用する場合のリスクは、呼び出し側のプリンシパルと資格情報の複数スレッドのストレージを有効または無効にできることです。org.jboss.security.SecurityAssociation.setRunAsRoleorg.jboss.security.SecurityAssociation pushRunAsRole、popRunAsRole、pushRunAsIdentityおよびpopRunAsIdentityメソッドにアクセスを提供します。このランタイム権限を使用する場合のリスクは、現在の呼び出し側の run-as role プリンシパルを変更できることです。org.jboss.security.SecurityAssociation.accessContextInfoorg.jboss.security.SecurityAssociation accessContextInfo, "Get"とaccessContextInfo, "Set"メソッドにアクセスを提供し、これにより現在のセキュリティコンテキスト情報を設定、取得できます。org.jboss.naming.JndiPermission- 指定された JNDI ツリーパスのファイルとディレクトリ、または再帰的にすべてのファイルとサブディレクトリに特別なパーミッションを提供します。JndiPermission はファイルまたはディレクトリに関連するパス名と有効なパーミッションのセットで構成されます。使用可能なパーミッションは
bind、rebind、unbind、lookup、list、listBindings、createSubcontextおよびallです。/*で終わるパス名は、特定のパーミッションがパス名のすべてのファイルとディレクトリに適用することを意味しています。/-で終わるパス名は、パス名のすべてのファイルとサブディレクトリへの再帰的なパーミッションを意味しています。特別なトークン<<ALL BINDINGS>>で構成されるパス名は、すべてのディレクトリのすべてのファイルと一致します。 org.jboss.security.srp.SRPPermission- 秘密セッションキーや秘密キーのような機密 SRP 情報へのアクセスを保護するカスタムのパーミッションクラスです。このパーミッションではアクションを定義しません。getSessionKey ターゲットは SRP 交渉の結果得られる秘密セッションキーへのアクセスを提供します。このキーへのアクセスにより、セッションキーで暗号化したメッセージを暗号化、復号化できます。
org.hibernate.secure.HibernatePermission- このパーミッションクラスは基本的なパーミッションを提供し、Hibernate セッションをセキュアにします。このプロパティのターゲットはエンティティ名です。使用可能なアクションには insert、delete、update、read および * (すべて) があります。
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、すべてのエリアへのアクセスを示す * があります。