9.9.4. Java Security Manager ポリシーの記述
はじめに
ほとんどの JDK および JRE ディストリビューションには、Java Security Manager セキュリティーポリシーを作成および編集するための policytool
という名前のアプリケーションが含まれます。policytool
の詳細については、http://docs.oracle.com/javase/6/docs/technotes/tools/ を参照してください。
基本情報
セキュリティーポリシーは、次の設定要素から構成されます。
- CodeBase
- コードの元の URL の場所 (ホストとドメイン情報を除外)。このパラメーターはオプションです。
- SignedBy
- コードを署名するためにプライベートキーが使用された署名者を参照するキーストアで使用されたエイリアス。これは、単一値またはカンマ区切りの値リストになります。このパラメーターはオプションです。省略された場合は、署名があってもなくても Java Security Manager に影響はありません。
- Principals
- principal_type/principal_name ペアのリスト。これは、実行スレッドのプリンシパルセット内に存在する必要があります。Principals エントリはオプションです。省略された場合は、「任意のプリンシパル」を意味します。
- Permissions
- パーミッションは、コードに与えられるアクセスです。多くのパーミッションは、Java Enterprise Edition 6 (Java EE 6) 仕様の一部として提供されます。本書では、JBoss Enterprise Application Platform で提供される追加のパーミッションについてのみ説明します。
手順9.10 タスク
policytool
を起動します。policytool
ツールを次のいずれかの方法で起動します。Red Hat Enterprise Linux
GUI またはコマンドプロンプトで、/usr/bin/policytool
を実行します。Microsoft Windows Server
スタート メニューまたは Java インストールのbin\
から、policytool.exe
を実行します。場所は異なることがあります。
新しいポリシーを作成します。
新しいポリシーを作成するには、Add Policy Entry を選択します。必要なパラメーターを追加し、Done をクリックします。既存のポリシーの編集
既存のポリシーのリストからポリシーを選択し、Edit Policy Entry ボタンを選択します。必要に応じて、パラメーターを編集します。既存のポリシーを削除します。
既存のポリシーのリストからポリシーを選択し、Delete Policy Entry ボタンを選択します。
JBoss Enterprise Application Platform に固有なパーミッション
- org.jboss.security.SecurityAssociation.getPrincipalInfo
org.jboss.security.SecurityAssociation
メソッドとgetPrincipal()
andgetCredential()
メソッドにアクセスを提供します。このランタイムパーミッションを使用する危険は、現在のスレッド呼び出し元とクレデンシャルを見ることができることです。- 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
pushRunAsRole
メソッド、popRunAsRole
メソッド,pushRunAsIdentity
メソッド、およびpopRunAsIdentity
メソッドにアクセスを提供します。このランタイムパーミッションを使用する危険は、現在の呼び出し元の run-as ロールプリンシパルを変更できることです。- org.jboss.security.SecurityAssociation.accessContextInfo
org.jboss.security.SecurityAssociation
accessContextInfo
およびaccessContextInfo
の getter および setter メソッドにアクセスを提供します。これにより、現在のセキュリティーコンテキスト情報を設定および取得できます。- org.jboss.naming.JndiPermission
- 特別なパーミッションを、指定された JNDI ツリーパスのファイルおよびディレクトリーに提供するか、またはすべてのファイルとディレクトリーに対して再帰的に提供しjます。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
- * (all)
- org.jboss.metadata.spi.stack.MetaDataStackPermission
- 読み出し元がメタデータスタックと対話する方法を制御するカスタムパーミッションクラスを提供します。利用可能なパーミッションは以下のとおりです。
- modify
- push (スタックに対する)
- pop (スタックから)
- peek (スタックに対する)
- * (all)
- org.jboss.config.spi.ConfigurationPermission
- 設定プロパティーの設定をセキュアにします。パーミッションターゲット名のみを定義し、アクションを定義しません。このプロパティーのターゲットには以下のものが含まれます。
- <property name> (このコードが設定するパーミッションを持つプロパティー)
- * (すべてのプロパティー)
- org.jboss.kernel.KernelPermission
- カーネル設定へのアクセスをセキュアにします。パーミッションターゲット名のみを定義し、アクションを定義しません。このプロパティーのターゲットには以下のものが含まれます。
- access (カーネル設定に対する)
- 設定 (アクセスを暗黙的に)
- * (all)
- org.jboss.kernel.plugins.util.KernelLocatorPermission
- カーネルへのアクセスをセキュアにします。パーミッションターゲット名のみを定義し、アクションを定義しません。このプロパティーのターゲットには以下のものが含まれます。
- kernel
- * (all)