業務で、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/AJS3導入ガイド」の次を読めばなんとなくわかる。そんなに難しくない。
- http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3S0231/AJSF0126.HTM
- http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3S0231/AJSF0127.HTM
具体的な構築手順は、「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 などを参照のこと。