LifeKeeper の GUI は、ポリシーベースのアクセス制御を使用します。GUI クライアントのロード時に、現在有効なセキュリティポリシーに基づいて権限がGUI クライアントに割り当てられます。ポリシーはさまざまな署名者 / 場所からのコードに提供される権限を指定し、外部から設定可能なポリシーファイルから初期化されます。
デフォルトでは、システム全体のポリシーファイルとオプションのユーザポリシーファイルが 1 つずつあります。システム全体でコードに権限を付与するシステムポリシーファイルが先にロードされ、次にユーザポリシーファイルが追加されます。LifeKeeper GUI がアプリケーションとして起動される場合は、これらのポリシーファイルに加えて、LifeKeeper GUI のポリシーファイルもロードされることがあります。
ポリシーファイルの場所
デフォルトでは、システムポリシーファイルは以下の場所にあります。
<JAVA.HOME>/lib/security/java.policy (Linux)
<JAVA.HOME>\lib\security\java.policy (Windows)
注記: JAVA.HOME は、システムのプロパティ「JAVA.HOME」の値を指し、JRE または JDK がインストールされたディレクトリの場所を指定します。
ユーザポリシーファイルは「.」の文字で始まり、デフォルトでは以下の場所にあります。
<USER.HOME>\.java.policy
注記: USER.HOME は、システムのプロパティ「user.home」の値を指し、ユーザのホームディレクトリを指定します。例えば、Windows NT ワークステーション上にあるユーザ Paul のホームディレクトリは、「paul.000」です。
Windows システムの場合、user.home のプロパティ値のデフォルト値は以下のとおりです。
C:\WINNT\Profiles\<USER> (マルチユーザ Windows NT システム)
C:\WINDOWS\Profiles\<USER> (マルチユーザ Windows 95/98 システム)
C:\WINDOWS (シングル-ユーザ Windows 95/98 システム)
デフォルトでは、LifeKeeper GUI のポリシーファイルは以下の場所にあります。
/opt/LifeKeeper/htdoc/java.policy (Linux)
ポリシーファイルの作成と管理
デフォルトでは、LifeKeeper GUI がアプリケーションとして起動される場合に LifeKeeper GUI のポリシーファイルが使用されます。LifeKeeper GUI をアプレットとして実行する場合、ホームディレクトリにユーザポリシーファイルを作成する必要があります (存在しない場合)。ユーザポリシーファイルは、LifeKeeper GUI を実行するために必要な最低限の権限を指定する必要があります。このトピックの「ポリシーファイルの例」セクションで後述します。
ポリシーファイルの作成と管理は、単純なテキストエディタ、または Java 実行時環境 (JRE) や Java 開発キット (JDK) に含まれるグラフィカルな Policy Tool ユーティリティから行うことができます。Policy Tool を使用すると、入力が簡略化され、ポリシーファイルに必要な構文の知識が不要になります。Policy Tool の使用方法の詳細については、http://docs.oracle.com/javase/8/docs/technotes/tools/ にある Policy Tool のドキュメンテーションを参照してください。
LifeKeeper GUI を実行するために必要な最低限の権限を持つ ユーザポリシーファイルを作成する最も簡単な方法 は、 /opt/LifeKeeper/htdoc/java.policy にある LifeKeeper GUI のポリシーファイルをホームディレクトリにコピーし、ファイル名を .java.policy に変更することです (ファイル名の前にあるドットは必須)。Windows システムでは、ファイル http://<server name>:81/java.policy (<server name> は LifeKeeper サーバのホスト名) を開いてホームディレクトリに .java.policy の名前を付けて保存することで、LifeKeeper GUI のポリシーファイルをコピーできます。ユーザポリシーファイルの正しい場所を特定する必要がある場合は、Java のコントロールパネルを使用して Java コンソールを有効にし、LifeKeeper GUI をアプレットとして起動します。ユーザポリシーファイルのホームディレクトリのパスが、Java コンソールに表示されます。
ポリシーファイルでの権限の付与
権限は、システムリソースへのアクセスを表します。アプレットにリソースへのアクセスを許可するには、対応する権限を、アクセスを試行するコードに明示的に付与する必要があります。権限は通常、名前を持ち (「ターゲット名」として参照される)、場合によっては、1 つ以上の動作を含むカンマ区切りリストを持ちます。例えば、以下のコードは、 /tmp ディレクトリのファイル abc に対する読み取りアクセスを表す FilePermission オブジェクトを作成します。
perm = new java.io.FilePermission("/tmp/abc","read");
この例では、ターゲット名は「 /tmp/abc 」、動作文字列は「 read 」です。
ポリシーファイルは、指定したコードソースからのコードに許可する権限を指定します。この例で、 /home/sysadmin ディレクトリのコードにファイル /tmp/abc への読み取りアクセスを付与するポリシーファイルのエントリは以下のとおりです。
grant codeBase "file:/home/sysadmin/" { permissionjava.io.FilePermission "/tmp/abc", "read"; };
ポリシーファイルの例
このポリシーファイルの例には、LifeKeeper GUI の実行に必要な最小限の権限があります。このポリシーファイルは、LifeKeeper GUI パッケージにより /opt/LifeKeeper/htdoc/java.policy にインストールされます。
/*
* LifeKeeper GUI に必要な権限。コードベースで
* これを制限することもできます。ただし、そのようにする場合は、リカバリキットが
* 任意のコードベース付きの任意の jar コンポーネントを持つことができることに
* 注意してください。したがって、これらも含めるには
* grant 文を変更する必要があります。
*/
grant {
/*
* LifeKeeper クラスタ内のすべてのマシンに対して
* これを行うことができなければなりません。それに合わせてネットワーク仕様を
* 制限することもできます。
*/
permission java.net.SocketPermission"*", "accept,connect,resolve";
/*
* リモートプロパティファイルおよび
* jar ファイルを取得するには、URLClassLoaders を使用してください。
*/
permission java.lang.RuntimePermission"createClassLoader";
/*
* GUI をアプリケーションとして実行する場合のみ以下が必要です
* (デフォルトの RMI セキュリティマネージャは、
* ブラウザがアプレット用にインストールするセキュリティマネージャよりも
* 制限あり)。
*/
permission java.util.PropertyPermission "*","read";
permission java.awt.AWTPermission "*";
permission java.io.FilePermission "<<ALL FILES>>","read,execute";
};
このトピックへフィードバック