JP1ユーザ設計で大事なコト

業務で、JP1/AJS3(JP1/Automatic Job Management System 3) をよくさわっている。とてもよくさわっている。愛でている(ウソ)。周囲になぜか有識者がいない。まるでいない。で、色々とつまずいているので整理しておく。今回は、JP1ユーザのお話。

JP1ユーザとは

JP1ユーザとは、まぁそのまんまだが、JP1で用いるユーザのこと。OSでもRDBMSでもなく、JP1で用いるユーザのこと。JP1/AJS3 を動作させるには、JP1 Base というプロダクトが必要で、この JP1 Base にてJP1ユーザは管理される。この JP1 Base(のうち、認証サーバに指定されたトコ)が認証や、認可の基本的なところを行ってくれる。
JP1ユーザのユーザ設計時には、次の2つを検討することになる。

  • アクセス権限 ⇒ JP1ユーザに権限を与える。認証サーバに設定する
  • ユーザマッピング ⇒ OSユーザとJP1ユーザをマッピング*1する。マネージャとエージェントに設定する

このあたり「JP1/AJS3導入ガイド」の次を読めばなんとなくわかる。そんなに難しくない。

具体的な構築手順は、「JP1/AJS3構築ガイド1」の次が詳しい。

しかし、(きちんと理解しないまま)実装してみると、ポロポロと製品のクセが出てくる。

つまずいたとこ

知っていたので、回避できたのが次。

UNIXの場合は,OSユーザー名だけでOSユーザーとして実行できますが,Windowsの場合は,OSユーザー名とパスワードが必要なため,OSユーザーのパスワードも管理します。このため,WindowsでOSユーザーのパスワードを変更した場合,JP1/Baseのパスワード情報も変更してください。

http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3R7130/BASE0012.HTM

えっと、本当です。Windowsの場合、パスワードは二重管理するのです。なので、原則として(パスワード漏えいの可能性がある場合以外は)パスワード変更をしないユーザのみをマッピングしたい。今回もそうするつもり。


で、最初に軽くつまずいたのが次。これは知らなかった。

ジョブ実行制御のコマンドを使用してジョブを実行・操作する場合,コマンドを実行するOSユーザーと同名のJP1ユーザーを登録しておく必要があります。

http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3S0531/AJSX0142.HTM

『ジョブ実行制御のコマンド』ってのは、jpqjobsub のような、ジョブの実行を指示するコマンド。たぶんけっこう使う。
これはまぁ、OSユーザと同名のJP1ユーザを作成すれば解決する。既存の命名規則があったから、ちょっと面倒だったけど。


しんどいのは、ユーザマッピングとアクセス権限における次。ちなみに、今もつまずきっぱなし。

JP1ユーザーに,管理者権限のあるOSユーザーをマッピングすると,操作権限の設定に関係なく,すべてのJP1資源を操作できます。このため,JP1ユーザーに対してJP1資源に対する操作制御をしたい場合は,JP1ユーザーに管理者権限以外の権限を持つOSユーザーをマッピングしてください。

http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3R7130/BASE0012.HTM

JP1ユーザでアクセス制御をしたいなら、OSの管理者をマッピングするなと。rootやAdministratorでジョブを実行するなと。
いあ、、業務のジョブはいいけど、システム運用で使うジョブはどうするの?

どうするのさ(Linux編)

Apache HTTP Server の停止や起動のように、rootユーザで実行しなければならないジョブがあるわけで。オペレータさんには、ジョブの参照と実行のみを許可したいわけで。
でもこれは、sudo*2 を用いて解決した。rootユーザのパスワードなしで sudo 可能な、一般ユーザを用いればよい。注意するところは、sudo の設定ファイル /etc/sudoers の次の行をコメントアウトして、TTYなしでも実行できるようにしておくこと。

Defaults    requiretty

これをやっておかないと、次のように謝られてしまう。いや、恐縮だから。

sudo: sorry, you must have a tty to run sudo

どうするのさ(Windows編)

Windows Server 2008 は楽だろうと思っていた。AdministratorsグループなどのOSユーザを使えばよいからだ。でもダメだった。例えば、PowerShell の Clear-EventLog コマンドレットがどうしてもエラーで落ちる。リファレンスを見てみると、次のようにあった。

To use Clear-EventLog on Windows Vista and later versions of Windows, start Windows PowerShell with the "Run as administrator" option.

http://technet.microsoft.com/en-us/library/dd347552.aspx

色々実験してみたが、どうも、Administratorユーザでないとダメみたいだ。
コレ、どうするのさ?

余談ではあるが、JP1/AJS3 から PowerShellスクリプトファイルを実行する場合には、次のようにする。こうしないと、戻り値が Boolean なので。

powershell -command "ファイル名.ps1; exit $LASTEXITCODE"

あー、どうしよう。

2011/11/10追記

その後、色々わかってきたので、新規でエントリする予定。

2011/12/06追記

(続)JP1ユーザ設計で大事なコト - あしのあしあと」に補足を記載した。

*1:実行指示を送信するホストも設定する。

*2:sudo については http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec05/unix_sec01.html などを参照のこと。