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 タスク

  1. policytool を起動します。

    policytool ツールを次のいずれかの方法で起動します。
    • Red Hat Enterprise Linux

      GUI またはコマンドプロンプトで、/usr/bin/policytool を実行します。
    • Microsoft Windows Server

      スタート メニューまたは Java インストールの bin\ から、policytool.exe を実行します。場所は異なることがあります。
  2. 新しいポリシーを作成します。

    新しいポリシーを作成するには、Add Policy Entry を選択します。必要なパラメーターを追加し、Done をクリックします。
  3. 既存のポリシーの編集

    既存のポリシーのリストからポリシーを選択し、Edit Policy Entry ボタンを選択します。必要に応じて、パラメーターを編集します。
  4. 既存のポリシーを削除します。

    既存のポリシーのリストからポリシーを選択し、Delete Policy Entry ボタンを選択します。

JBoss Enterprise Application Platform に固有なパーミッション

org.jboss.security.SecurityAssociation.getPrincipalInfo
org.jboss.security.SecurityAssociation メソッドと getPrincipal() and getCredential() メソッドにアクセスを提供します。このランタイムパーミッションを使用する危険は、現在のスレッド呼び出し元とクレデンシャルを見ることができることです。
org.jboss.security.SecurityAssociation.getSubject
org.jboss.security.SecurityAssociationgetSubject() メソッドにアクセスを提供します。
org.jboss.security.SecurityAssociation.setPrincipalInfo
org.jboss.security.SecurityAssociationsetPrincipal() メソッド、setCredential(), setSubject() メソッド、pushSubjectContext() メソッド、および popSubjectContext() メソッドにアクセスを提供します。このランタイムパーミッションを使用する危険は、現在のスレッド呼び出し元とクレデンシャルを設定できることです。
org.jboss.security.SecurityAssociation.setServer
org.jboss.security.SecurityAssociationsetServer メソッドにアクセスを提供します。このランタイムパーミッションを使用する危険は、呼び出し元プリンシパルとクレデンシャルのマルチスレッドストレージを有効または無効にできることです。
org.jboss.security.SecurityAssociation.setRunAsRole
org.jboss.security.SecurityAssociationpushRunAsRole メソッド、popRunAsRole メソッド, pushRunAsIdentity メソッド、および popRunAsIdentity メソッドにアクセスを提供します。このランタイムパーミッションを使用する危険は、現在の呼び出し元の run-as ロールプリンシパルを変更できることです。
org.jboss.security.SecurityAssociation.accessContextInfo
org.jboss.security.SecurityAssociationaccessContextInfo および 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)