25.7. Java のセキュリティーマネージャー
25.7.1. Java Security Manager リンクのコピーリンクがクリップボードにコピーされました!
Java Security Manager は、Java 仮想マシン (JVM) サンドボックスの外部の境界を管理するクラスで、JVM 内で実行しているコードと JVM 外のリソースとの連携方法を制御します。Java Security Manager がアクティブになると、Java API は安全でない多様な動作を実行する前に Security Manager と承認を確認します。
25.7.2. Java Security Manager のポリシー リンクのコピーリンクがクリップボードにコピーされました!
コードの様々なクラスに対して定義されたパーミッションのセットです。Java Security Manager はセキュリティーポリシーとアプリケーションから要求されたアクションを比較します。ポリシーがアクションを許可している場合は、Java Security Manager はそのアクションが行われることを許可します。ポリシーがアクションを許可していない場合は、Java Security Manager はそのアクションを拒否します。セキュリティポリシーは、コードの場所またはコードのシグニチャー、またはサブジェクトのプリンシパルに基づいてパーミッションを定義できます。
java.security.manager や java.security.policy を使用して設定されます。
セキュリティーポリシーのエントリーは、policytool に関係のある以下の設定要素から構成されています。
- CodeBase
- コードの元の URL の場所 (ホストとドメインの情報以外)。オプションのパラメーターです。
- SignedBy
- コードを署名するためにプライベートキーが使用された署名者を参照するキーストアで使用されたエイリアス。これは、単一値またはカンマ区切りの値リストになります。オプションのパラメーターです。省略された場合は、署名の有無に関わらず Java Security Manager に影響はありません。
- Principals
principal_typeとprincipal_nameのペアのリスト。これは、実行スレッドのプリンシパルセット内に存在する必要があります。Principals エントリーは任意です。このエントリーを省略すると、実行スレッドのプリンシパルによる Java Security Manager への影響はありません。- Permissions
- パーミッションは、コードに与えられるアクセス権です。多くのパーミッションは、Java Enterprise Edition 6 (Java EE 6) 仕様の一部として提供されます。本書では、JBoss EAP 6 で提供される追加のパーミッションについてのみ説明します。
重要
25.7.3. Java Security Manager ポリシーの記述 リンクのコピーリンクがクリップボードにコピーされました!
ほとんどの JDK および JRE ディストリビューションには、Java Security Manager セキュリティーポリシーを作成および編集するための policytool という名前のアプリケーションが含まれます。policytool の詳細については、http://docs.oracle.com/javase/6/docs/technotes/tools/ を参照してください。
手順25.1 新しい Java Security Manager ポリシーの設定
policytoolを起動します。policytoolツールを次のいずれかの方法で起動します。Red Hat Enterprise Linux
GUI またはコマンドプロンプトで、/usr/bin/policytoolを実行します。Microsoft Windows Server
スタートメニューまたは Java インストールのbin\から、policytool.exeを実行します。場所は異なることがあります。
ポリシーを作成します。
ポリシーを作成するには、 を選択します。必要なパラメーターを追加し、 をクリックします。既存のポリシーを編集します。
既存のポリシーのリストからポリシーを選択し、 ボタンを選択します。必要に応じてパラメーターを編集します。既存のポリシーを削除します。
既存のポリシーのリストからポリシーを選択し、 ボタンを選択します。
25.7.4. Java Security Manager 内での Red Hat JBoss Data Grid Server の実行 リンクのコピーリンクがクリップボードにコピーされました!
standalone.sh スクリプトにパラメーターをオプションとして渡すことはできません。次の手順を実行すると、インスタンスが Java Security Manager ポリシー内で実行されるように設定できます。
前提条件
- この手順を実行する前に、Java Development Kit (JDK) に含まれる
policytoolコマンドを使用してセキュリティーポリシーを記述する必要があります。この手順では、ポリシーがJDG_HOME/bin/server.policyにあることを前提としています。この代わりに、テキストエディターを使用してセキュリティーポリシーを書き、JDG_HOME/bin/server.policyとして手作業で保存することもできます。 - 設定ファイルを編集する前に、JBoss Data Grid サーバーを完全に停止する必要があります。
手順25.2 JBoss Data Grid Server の Security Manager の設定
設定ファイルを開きます。
編集のために設定ファイルを開きます。このファイルの場所は OS で以下のように一覧表示されます。これはサーバーを起動するために使用される実行可能ファイルではなく、ランタイムパラメーターを含む設定ファイルであることに注意してください。- Linux の場合:
JDG_HOME/bin/standalone.conf - Windows の場合:
JDG_HOME\bin\standalone.conf.bat
ファイルに Java オプションを追加します。
確実に Java オプションが使用されるようにするため、以下で始まるコードブロックに Java オプションを追加します。if [ "x$JAVA_OPTS" = "x" ]; then
if [ "x$JAVA_OPTS" = "x" ]; thenCopy to Clipboard Copied! Toggle word wrap Toggle overflow -Djava.security.policyの値を編集して、セキュリティーポリシーの場所を指定できます。改行を入れずに 1 行で指定する必要があります。-Djava.security.policyプロパティーを設定するときに==を使用して指定すると、セキュリティーマネージャーは指定されたポリシーファイルのみを使用します。=を使用して指定すると、セキュリティーマネージャーは指定されたポリシーとJAVA_HOME/lib/security/java.securityのpolicy.urlセクションに指定されたポリシーを一緒に使用します。重要
JBoss Enterprise Application Platform 6.2.2 およびそれ以降のリリースでは、システムプロパティーjboss.modules.policy-permissionsを true に設定する必要があります。例25.5 standalone.conf
JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy==$PWD/server.policy -Djboss.home.dir=$JBOSS_HOME -Djboss.modules.policy-permissions=true"
JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy==$PWD/server.policy -Djboss.home.dir=$JBOSS_HOME -Djboss.modules.policy-permissions=true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例25.6 standalone.conf.bat
set "JAVA_OPTS=%JAVA_OPTS% -Djava.security.manager -Djava.security.policy==\path\to\server.policy -Djboss.home.dir=%JBOSS_HOME% -Djboss.modules.policy-permissions=true"
set "JAVA_OPTS=%JAVA_OPTS% -Djava.security.manager -Djava.security.policy==\path\to\server.policy -Djboss.home.dir=%JBOSS_HOME% -Djboss.modules.policy-permissions=true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow サーバーを起動します。
サーバーを通常どおりに起動します。