Hitachi

JP1 Version 12 JP1/Automatic Job Management System 3 設計ガイド(システム構築編)


2.5.3 ジョブ実行時のOSユーザー環境の検討

ジョブの実行環境を検討する際は,次の内容に注意してください。

〈この項の構成〉

(1) ジョブ実行時のユーザーアカウント

JP1/AJS3では,ジョブを実行する際に実行先のエージェントホストの,OSユーザーのアカウントを使用します。OSユーザーのアカウントを使用するには,実行先のエージェントホストにユーザーマッピング定義が必要です。実行先のエージェントホストのユーザーマッピング定義に従って,ジョブを実行するためにジョブを実行登録したJP1ユーザーからOSユーザーに変換します。そのため,ジョブはそのOSユーザーの権限で実行されます。また,ジョブプロセスから参照または更新するリソースについては,OSのセキュリティに依存します。

なお,ユーザーアカウントはジョブの実行ごとに参照します。そのため,定義を変更したあとに実行されたジョブから有効になります。

Windows版のJP1/AJS3では,ジョブを実行する際にJP1/AJS3のサービスを起動したアカウントと異なるユーザーアカウントでジョブを実行する場合,ジョブプロセスを起動するために必要なユーザーの情報を取得しています。ユーザーの情報を取得するためには,ユーザーが所属するセキュリティグループや権限に関する情報などを含んだユーザー情報(以降,アクセストークンと呼びます)が必要になります。

JP1/AJS3では,ジョブを起動するたびにアクセストークンを取得し,ジョブの実行が終了すると解放しています。アクセストークンの取得および解放には,Win32API関数を使用しています。この関数でエラーが発生し,アクセストークンの取得に失敗した場合にはジョブが「起動失敗」状態になり,アクセストークンの解放に失敗した場合にはジョブが「異常検出終了」状態になります。

アクセストークンはドメイン名,ユーザー名,およびパスワードが同じであれば,一度取得した情報を保持して再利用できます。

アクセストークンを再利用することで,アクセストークンの取得および解放の回数を最小限に減らし,Win32API関数の一時的エラーを回避してジョブが異常終了となる頻度を抑えることができます。詳細については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 6.2.17 ジョブ実行時にアクセストークンを再利用するための設定」を参照してください。

(2) ジョブ実行時に有効になるOSユーザー環境

ジョブを実行する際に有効になるOSユーザー環境は,プラットフォームによって異なります。

実行先のエージェントホストがWindowsの場合,通常はシステム環境変数が有効になり,ユーザープロファイル情報は無効になりますが,ジョブ実行制御の環境設定によって,ユーザープロファイル情報を有効にすることもできます。詳細については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 6.2.16 ユーザープロファイルを必要とするジョブを実行するための設定」を参照してください。

実行先のエージェントホストがUNIXの場合,ジョブを実行する際にユーザーマッピングで変換された実行OSユーザーのローカルログインスクリプトが読み込まれます。また,ジョブの実行シェルは,特にスクリプトファイルやコマンド文の先頭行で明記していないかぎり,その実行OSユーザーのログインシェルが設定されます。

なお,OSユーザー環境については,ジョブの実行単位ごとに読み込まれます。すでに実行登録中のジョブがあっても,定義を変更したあとに実行されたジョブから有効になります。

(3) HP-UXのOSユーザーのグループについて

ジョブを実行するOSユーザーが複数のグループに属し,それらのグループすべてに対するアクセスを有効にする場合は,「/etc/logingroup」の設定が必要になります。「/etc/logingroup」の設定がないと,「/etc/passwd」で定義されているグループIDだけが有効となります。

複数のグループに対するアクセスを有効にするには,「/etc/logingroup」に「/etc/group」のグループ定義をコピーするか,「/etc/logingroup」と「/etc/group」をシンボリックリンクする必要があります。詳細については,OSのマニュアルを参照してください。

注意事項

JP1/AJS3サービスのプロセスがジョブの結果ファイルや一時ファイルにアクセスする際に,複数のグループに対するアクセスを有効にする場合は,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 15.2.18 ジョブ実行時のファイル権限チェックでアクセス制御リストやセカンダリーグループの設定を有効にする」に記載の設定を参照してください。

設定しない場合,「/etc/logingroup」を設定することでセカンダリーグループからのアクセスが有効になるのは,ジョブプロセスだけです。JP1/AJS3サービスのプロセスがジョブの結果ファイルや一時ファイルにアクセスする際には有効になりません。JP1/AJS3サービスのプロセスが結果ファイルにアクセスできない場合は,結果ファイルがあるディレクトリの権限をセカンダリーグループでもアクセスできる権限に変更するか,ディレクトリまたは指定した結果ファイルの所有グループをジョブ実行ユーザーのセカンダリーグループからプライマリーグループに変更してください。一時ファイルの場合は,ワークディレクトリの権限をセカンダリーグループでもアクセスできる権限に変更してください。

詳細については,マニュアル「JP1/Automatic Job Management System 3 トラブルシューティング 2.6.2(3) 標準ジョブ,アクションジョブ,およびカスタムジョブを実行すると異常終了となる」を参照してください。

(4) ジョブの実行ファイルおよびスクリプトファイルのアクセス権

実行先のエージェントホストがWindowsの場合は,JP1/AJS3のサービスのアカウントに実行ファイルのアクセス権を設定してください。ジョブを実行するOSユーザーに対するアクセス権は不要です。

実行先のエージェントホストがUNIXの場合は,ジョブを実行するOSユーザーに実行するスクリプトファイルのアクセス権を設定してください。

(5) ジョブ起動時のログインシェル(UNIXジョブ,フレキシブルジョブ,HTTP接続ジョブ,アクションジョブ)

実行ホスト(エージェント)がUNIXの場合,ジョブの起動時に,実行先のエージェントホストの実行OSユーザーのログインシェル(/etc/passwdファイルの内容)を実行します。ログインシェルが定義されていない場合は,/bin/shを実行します。JP1/AJS3では,ログインシェルとしてshcshkshが使用できます(Linuxの場合は,cshのほかにbashも使用できます)。これら以外のシェルを使用した場合のログインシェルの注意事項を次に示します。

(a) UNIXジョブ,フレキシブルジョブの場合の注意事項

ログインシェルにshcshkshbash以外を使用すると,OSによってはログインスクリプトが実行されない場合があります。その場合,ジョブの実行ユーザーの環境変数の設定が反映されないために,ジョブが異常終了したり,意図しない実行結果となったりすることがあります。この現象を回避するために,ジョブのスクリプトに必要な環境変数の設定を明記してください。

なお,ジョブ実行時に必要な環境変数が正しく設定されているかどうかを確認するには,envコマンドの実行結果をファイルに書き出すようなシェルスクリプトを作成し,そのスクリプトをジョブとして実行したときに出力されたファイルの内容を参照してください。

(b) ジョブ共通の注意事項

bashのように,一部のシェルではシグナル処理をデフォルトの状態に初期化しないものがあります。そのため,ジョブが異常終了したり,意図しない実行結果となったりすることがあります。その場合は,shcshkshのどれかを使用する運用方法に変更してください。

なお,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 15.2.17 JP1/AJS3から起動される子プロセスを,SIGCHLDシグナルを受信する設定(SIG_DFL)に変更する方法」に従って設定することで,シグナル処理をデフォルト状態に設定できます。08-00以降のJP1/AJS2またはJP1/AJS3を新規インストールした場合は,SIGCHLDシグナルを受信するデフォルト(SIG_DFL)でジョブを実行する設定になっているため,変更の必要はありません。