第14章 Java セキュリティマネージャー
- Java セキュリティマネージャー
- Java セキュリティマネージャー は Java Virtual Machine (JVM) サンドボックスの外部の境界を管理するクラスで、JVM 内で実行しているコードと JVM 外のリソースとの連携方法を制御します。Java セキュリティマネージャーがアクティブになると、Java API は潜在的に安全でない多様な動作を実行する前にセキュリティマネージャーと承認を確認します。
- セキュリティポリシー
- コードの様々なクラスに対して定義されたパーミッションのセットです。Java セキュリティーマネージャーはセキュリティポリシーとアプリケーションから要求されたアクションを比較します。ポリシーがアクションを許可している場合は、セキュリティマネージャーはそのアクションが行われることを許可します。ポリシーがアクションを許可していない場合は、セキュリティマネージャーはそのアクションを拒否します。セキュリティポリシーはコードの場所またはコードのシグネチャに基づきパーミッションを定義することができます。
java.security.manager と java.security.policy を使用して設定されます。
セキュリティマネージャー関連のオプション
- java.security.manager
- セキュリティマネージャーを使用し、使用するセキュリティマネージャーをオプションで指定します。引数がこのオプションにない場合は、デフォルトの JDK セキュリティマネージャー
java.lang.SecurityManagerが使用されます。別のセキュリティマネージャー実装を使用するには、java.lang.SecurityManagerのサブクラスの完全修飾クラス名にこのオプションを提供します。 - java.security.policy
- ポリシーファイルを指定して、VM に対するデフォルトのセキュリティポリシーを補強または置換します。このオプションは 2 つの形式を取ります。
java.security.policy=policyFileURL- policyFileURL により参照されたポリシーファイルは、VM により設定されたデフォルトのセキュリティポリシーを 補強 します。
java.security.policy==policyFileURL- policyFileURL により参照されたポリシーファイルは、VM により設定されたデフォルトのセキュリティポリシーを 置換 します。
policyFileURL 値は URL またはファイルパスとなります。
14.1. セキュリティマネージャーの使用 リンクのコピーリンクがクリップボードにコピーされました!
jboss-as/bin/server.policy.cert は開始点として含まれています。
ファイル run.conf (Linux) または run.conf.bat (Windows) を使用して、Security Manager とセキュリティポリシーを設定します。このファイルは jboss-as/bin ディレクトリにあります。
run.conf または run.conf.bat ファイルを jboss-as/bin/ からサーバープロファイル (例えば jboss-as/server/production/run.conf ) にコピーすることを選択でき、そこで設定変更が可能です。サーバープロファイルが開始された場合、サーバープロファイルの設定ファイルはグローバルな run.conf / run.conf.bat ファイルより優先されます。
手順14.1 セキュリティマネージャーをアクティブにする
run.conf (Linux) または run.conf.bat (Windows)、なければ jboss-as/bin を参照します。このファイルの場所の詳細は 設定ファイル を参照してください。
JBoss ホームディレクトリを指定します
ファイルrun.conf(Linux) またはrun.conf.bat(Windows) を編集します。jboss.home.dirオプションを追加し、インストール環境のjboss-asディレクトリへのパスを指定します。LinuxJAVA_OPTS="$JAVA_OPTS -Djboss.home.dir=/path/to/jboss-eap-5.1/jboss-as"
JAVA_OPTS="$JAVA_OPTS -Djboss.home.dir=/path/to/jboss-eap-5.1/jboss-as"Copy to Clipboard Copied! Toggle word wrap Toggle overflow WindowsJAVA_OPTS="%JAVA_OPTS% -Djboss.home.dir=c:\path\jboss-eap-5.1\jboss-as"
JAVA_OPTS="%JAVA_OPTS% -Djboss.home.dir=c:\path\jboss-eap-5.1\jboss-as"Copy to Clipboard Copied! Toggle word wrap Toggle overflow サーバーホームディレクトリを指定します
jboss.server.home.dirオプションを追加し、サーバープロファイルへのパスを指定します。LinuxJAVA_OPTS="$JAVA_OPTS -Djboss.server.home.dir=path/to/jboss-eap-5.1/jboss-as/server/production"
JAVA_OPTS="$JAVA_OPTS -Djboss.server.home.dir=path/to/jboss-eap-5.1/jboss-as/server/production"Copy to Clipboard Copied! Toggle word wrap Toggle overflow WindowsJAVA_OPTS="%JAVA_OPTS% -Djboss.server.home.dir=c:\path\to\jboss-eap-5.1\jboss-as\server\production"
JAVA_OPTS="%JAVA_OPTS% -Djboss.server.home.dir=c:\path\to\jboss-eap-5.1\jboss-as\server\production"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Protocol Handler を指定します
java.protocol.handler.pkgsオプションを追加し、JBoss スタブハンドラを指定します。LinuxJAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.jboss.handlers.stub"
JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.jboss.handlers.stub"Copy to Clipboard Copied! Toggle word wrap Toggle overflow WindowsJAVA_OPTS="%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.jboss.handlers.stub"
JAVA_OPTS="%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.jboss.handlers.stub"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用するセキュリティポリシーを指定します
$POLICY変数を追加し、使用するセキュリティポリシーを指定します。セキュリティマネージャーをアクティブにする行の前に変数定義を追加します。例14.1 Platform に含まれるセキュリティポリシーの使用
POLICY="server.policy.cert"
POLICY="server.policy.cert"Copy to Clipboard Copied! Toggle word wrap Toggle overflow セキュリティマネージャーをアクティブにする
最初の#を削除して、次の行を非コメントします。Linux#JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy=$POLICY"
#JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy=$POLICY"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Windows#JAVA_OPTS="%JAVA_OPTS% -Djava.security.manager -Djava.security.policy=%POLICY%"
#JAVA_OPTS="%JAVA_OPTS% -Djava.security.manager -Djava.security.policy=%POLICY%"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 結果これで JBoss Enterprise Application Platform はセキュリティマネージャーをアクティブにして開始するよう設定できました。
オプション : Red Hat の JBoss 署名キーのインポート
含まれているセキュリティポリシーは JBoss 署名コードにパーミッションを付与します。含まれているポリシーを使用する場合は、JBoss 署名キーを JDKcacertsキーストアにインポートする必要があります。次のコマンドでは、環境変数JAVA_HOMEが JBoss Enterprise Application Platform 5 でサポートされている JDK の場所に設定されていると仮定します。最初に JBoss Enterprise Application Platform 5 をインストールするときにJAVA_HOMEを設定します。詳細は 『Installation Guide』 を参照してください。注記
正しい JVM を選択するには、alternativesコマンドを使用して、ご使用の Linux システムにインストールされている JDK から選択することができます。付録A/usr/sbin/alternativesユーティリティによるデフォルト JDK の設定 を参照してください。ターミナルで次のコマンドを実行し、JAVA_HOME を Java インストールのディレクトリがある場所に置き換えます。Linuxsudo JAVA_HOME/bin/keytool -import -alias jboss -file JBossPublicKey.RSA \ -keystore JAVA_HOME/lib/security/cacerts
[~]$ sudo JAVA_HOME/bin/keytool -import -alias jboss -file JBossPublicKey.RSA \ -keystore JAVA_HOME/lib/security/cacertsCopy to Clipboard Copied! Toggle word wrap Toggle overflow WindowsC:> JAVA_HOME\bin\keytool -import -alias jboss -file JBossPublicKey.RSA -keystore JAVA_HOME\lib\security\cacerts
C:> JAVA_HOME\bin\keytool -import -alias jboss -file JBossPublicKey.RSA -keystore JAVA_HOME\lib\security\cacertsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 本書では上記のコマンドは 2 行に渡って書かれていますが、ターミナルでは 1 行で入力します。注記
cacerts キーストアのデフォルトパスワードはchangeitです。結果これで JBoss Enterprise Application Platform コードを署名するために使用するキーがインストールされました。