LoginSignup
0
1

More than 1 year has passed since last update.

JS7® JobSchedulerクレデンシャルストア機能

Last updated at Posted at 2022-06-15

JS7®JobSchedulerは独SOS社(Software- und Organisations-Service GmbH)によって開発されている、ジョブ管理システムです。
クレデンシャルストア機能とは、ジョブの中から外部ホストやメールサーバー、データベースなどにログイン認証が必要な場合、いちいちアカウント認証情報をジョブに記載したり公開鍵情報を外部ファイルに記録することなく、ジョブからアクセス可能にする仕組みです。
またクレデンシャルストアを使用することによって、認証情報を秘匿しながら集中管理を可能にします。
本記事では、JS7®JobSchedulerでクレデンシャルストアを利用する方法を記載しています。

詳細な情報については、以下をご覧下さい。

1. 前提条件

JS7® JobScheduler V.2.3以上がインストール済みであること
ワークフローの作成/実行が一通りできること
JS7® JobSchedulerの概要及びインストール方法については以下を参照ください
Dockerでのインストール手順 https://qiita.com/satoruf/items/360fee5293611433ed33
Windowsでのインストール手順 https://qiita.com/Yoshitami/items/6804584592956a483364
Linux/CLIでのインストール手順 https://qiita.com/satoruf/items/fa9846f4376d1a50a67e
JS7® JobSchedulerクイックスタートhttps://qiita.com/satoruf/items/96f21ef25bcb35e47b21

2. はじめに

(1) KeePassについて

KeePassは、フリーかつオープンソースのパスワードマネージャーであり、WindowsやLinuxやmacOS、Androidなど様々なプラットフォームに移植され、1Password、Dashlane、LastPassと並んで最も広く使用されています。
JS7®JobSchedulerでは、KeePassで作成した暗号化されたデータベースファイルをクレデンシャルストアとして利用し、下記のジョブで使用できます。

(2) KeePassのインストール

本記事ではKeePassプロジェクトからフォークされたKeePassXC V.2.7.1(2022/6時点の最新版)を使用します。
KeePassXCのダウンロードサイトから使用するプラットフォームを選択しダウンロードします。Windows版の場合は、"Portable ZIP archive"にするとUSBメモリーなどに保存展開でき複数のPCで使用できます。

(3) KeePassデータベースファイルの作成、配布

インストール後初めてKeePassを起動すると下記ダイアログが表示されるので、「新しいデータベースを作成する」をクリックします。
スクリーンショット 2022-06-10 14.47.25.png
データベース名は適当に入力して続きをクリックし、データベースの形式を「KDBX 3」を選択します。
※JS7 V.2.3では、KDBX 4形式はエラーになります。
スクリーンショット 2022-06-14 15.16.33.png
続きをクリックするとマスターパスワード入力画面になりますが、パスワードは入力せずに「保護を追加」をクリックします。
※パスワードを使用することもできますが、ジョブの設定や引数にパスワードを記載することが必要になります。
スクリーンショット 2022-06-14 15.18.21.png
キーファイルの名前を入力し、生成をクリックしてキーファイルを保存して終了します。
スクリーンショット 2022-06-14 15.19.18.png
これでデータベースファイル(.kdbx)とキーファイル(.keyx)が作成できましたので、次はエントリーを作成します。
スクリーンショット 2022-06-14 15.20.07.png
まず左側に表示されている「ルート」フォルダをクリックして適当な名称(本記事ではdemo)に変更します。KeePassではサブフォルダーを作成してエントリーをグルーピングすることができます。
次にエントリーメニューから新しいエントリーを選択し項目を入力していきます。
スクリーンショット 2022-06-14 15.21.57.png

  • タイトル: ホスト名などキーとなるエントリー名
  • ユーザー名: ログインアカウント
  • パスワード: ログインパスワード
  • URL: IPアドレス、FQDN、URL
  • タグ: 分類用
    パスワードを使用せず公開鍵認証することも可能です。その場合は詳細設定を選択し添付ファイルに公開鍵ファイルを登録します。
    スクリーンショット 2022-06-14 15.34.57.png
    OKをクリックし、正しく登録されたことを確認します。
    スクリーンショット 2022-06-14 15.36.44.png
    以下必要な認証情報を順次追加し終わったらアプリケーションを終了します。
    作成したデータベースファイル(.kdbx)とキーファイル(.keyx)は、ジョブを実行するエージェントからアクセスできるところに配置します。ファイル転送ジョブによる各エージェントへの配布やNFSやクラウド上の共有ファイルでも構いません。
    各ファイルをエージェントの任意のディレクトリに配置し、パーミッションがエージェント実行ユーザーになっていることを確認します。

3. JS7 - Shellジョブからの利用

JS7エージェントでは、クレデンシャルストアを読み出すshellスクリプト/bin/agent_credential_value.sh が提供されています。
ジョブスクリプトサンプル:

echo $JS7_AGENT_HOME
JS7_CREDENTIAL_VALUE=`"$JS7_AGENT_HOME/bin/agent_credential_value.sh" "cs://demo/js7centos7@attachment?file=$JS7_AGENT_CONFIG_DIR/demo.kdbx&key_file=$JS7_AGENT_CONFIG_DIR/demo.keyx"`
RC=$?
if [ $RC -ne 0 ]
then
    exit $RC
fi
echo $JS7_CREDENTIAL_VALUE
  • $JS7_AGENT_HOME:ジョブリソースDefaultで定義されているエージェントのホームディレクトリパス変数
  • $JS7_AGENT_CONFIG_DIR:ジョブリソースDefaultで定義されているエージェントのconfigディレクトリパス変数
  • cs://[entry_path]@[property_name]:クレデンシャルストアの問い合わせ先エントリーパス
     [entry_path]はフォルダーパス+タイトル
     [property_name]は取得するデータ属性(title, user, password, url, attachmentなどKeePassで登録した内容)
  • ?以降は引数、複数ある場合は&で繋ぎます。
     file=: データベースファイルのパス(必須)
     key_file=: キーファイルのパス(オプション)
     password=: データベースのマスターパスワード(オプション)

上記ジョブのログ出力例

2022-06-14 15:42:39.997+09:00 [MAIN] [OrderStarted] id=#2022-06-14#T18895988603-root, pos=0
2022-06-14 15:42:40.094+09:00 [MAIN] [OrderProcessingStarted] id=#2022-06-14#T18895988603-root, pos=0, Job=shell_cs, Agent(url=http://js7-agent-standalone:4445, name=primaryAgent, time=2022-06-14 15:42:39.997+09:00)
2022-06-14 15:42:39.997+09:00 [MAIN]    [Start] Job=shell_cs, Agent (url=http://js7-agent-standalone:4445, id=js7-agent-standalone, name=primaryAgent)
2022-06-14 15:42:40.431+09:00 [STDOUT]  /var/sos-berlin.com/js7/agent
2022-06-14 15:42:42.475+09:00 [STDOUT]  -----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAweXfI2dW0jrWUkbUqNmPBWvNbg4ZZXvi6p3I82UYoHlOWeke ..... -----END RSA PRIVATE KEY-----
2022-06-14 15:42:42.480+09:00 [MAIN]    [End] [Success] returnCode=0
2022-06-14 15:42:42.587+09:00 [SUCCESS] [OrderProcessed] id=#2022-06-14#T18895988603-root, pos=0, Job=shell_cs, Agent(time=2022-06-14 15:42:42.480+09:00), returnCode=0
2022-06-14 15:42:42.750+09:00 [MAIN] [OrderFinished] id=#2022-06-14#T18895988603-root, pos=1

4. JS7 -JITLジョブからの利用

頻繁に使用するジョブ機能をテンプレートとしてJavaのクラスが提供されているものをJITLと呼び、前記のようなさまざまなJITLジョブでクレデンシャルストアが使用できます。
本記事では代表的なJS7 - SSHジョブを例にとって説明します。

(1) JITL - SSHジョブの作成

JOCコックピットのジョブ定義画面から新規ワークフロー作成を選択し、ジョブを作成します。
ジョブクラスをJITLを選択しウイザードをクリックします。
jitlsshjob.png
JITLジョブの一覧が表示されるので、SSHJobを選択し次をクリックします。
jitlsshjob2.png

(2) 引数の設定

パラメーターが表示されるので、下記の項目を有効にして入力します。
スクリーンショット 2022-06-15 11.05.31.png
引数の概略

引数 説明
host SSH接続先、KeePassで登録したurl cs://@url
user KeePassで登録したログインユーザー名 cs://@user
password KeePassで登録したログインパスワード cs://@password
credential_store_file *.kdbxファイルパス ./config/demo.kdbx
credential_store_key_file *.keyxファイルパス ./config/demo.keyx
credential_store_entry_path KeePassで登録したフォルダーパス+エントリー名、省略した場合はcs://以降にエントリーパスを入力必要 demo/js7centos7
credential_store_password KeePassデータベースのマスターパスワード 省略可
auth_method SSH認証方法、publickey or password password
auth_file 公開鍵ファイル名 cs://@attachment
command SSH サーバ上で実行されるコマンドを指定 任意のコマンド
command_script スクリプトファイルとしてリモートホストに転送され、そこで実行されるコマンドを指定 任意のコマンド
command_script_file リモートホストに転送され、そこで実行されるローカルスクリプトファイルのファイル名を指定 任意のファイル名
command_delimiter 複数のコマンドを指定する場合の区切り文字 %%
proxy_host, proxy_port, proxy_user, proxy_password 踏み台サーバーのホスト、ポート、ユーザー、パスワードを指定 -
connect_timeout コネクションタイムアウト秒、デフォルトは0 10
その他 ウイザードのドキュメント表示をクリックすると詳細説明が表示されます -

引数が設定されているか確認し、配置します。

スクリーンショット 2022-06-15 11.05.49.png

(3) ジョブの実行

ワークフローメニューから作成したワークフローを実行します。
上記ワークフローのログ出力例

2022-06-15 11:06:07.375+09:00 [MAIN] [OrderStarted] id=#2022-06-15#T25876728413-root, pos=0
2022-06-15 11:06:07.480+09:00 [MAIN] [OrderProcessingStarted] id=#2022-06-15#T25876728413-root, pos=0, Job=ssh_cs, Agent(url=http://js7-agent-standalone:4445, name=primaryAgent, time=2022-06-15 11:06:07.375+09:00)
2022-06-15 11:06:07.375+09:00 [MAIN]    [Start] Job=ssh_cs, Agent (url=http://js7-agent-standalone:4445, id=js7-agent-standalone, name=primaryAgent)
2022-06-15 11:06:07.795+09:00 [STDOUT]  [INFO]Job Parameterization:
[INFO]Resulting Arguments:
[INFO]    command_script=hostname&&date (source=JOB)
[INFO]    auth_method=PASSWORD (source=JOB SSHProviderArguments)
[INFO]    host=cs://@url (source=JOB SSHProviderArguments)
[INFO]    user=cs://@user (source=JOB SSHProviderArguments)
[INFO]    password=******** (source=JOB SSHProviderArguments)
[INFO]    credential_store_file=./config/demo.kdbx (source=JOB SOSCredentialStoreArguments)
[INFO]    credential_store_key_file=./config/demo.keyx (source=JOB SOSCredentialStoreArguments)
[INFO]    credential_store_entry_path=demo/js7centos7 (source=JOB SOSCredentialStoreArguments)
2022-06-15 11:06:08.263+09:00 [STDOUT]  [INFO][connect]192.168.110.249:22 ...
2022-06-15 11:06:08.713+09:00 [STDOUT]  [INFO][connected][192.168.110.249:22]Server Identity=OpenSSH_7.4, OS=Linux, Shell=UNIX
[INFO][execute command script]hostname&&date
[INFO][tmp commandScript file locally][tmp command script file remote] [/tmp/sos-ssh-script-14589767935839188322.sh] : [./sos-ssh-script-14589767935839188322.sh]
[INFO]command: ./sos-ssh-script-14589767935839188322.sh
[INFO][stdOut]js7centos7
2022年  6月 15日 水曜日 11:06:08 JST
[INFO][exitCode]0
[INFO][disconnected]192.168.110.249:22
2022-06-15 11:06:08.714+09:00 [MAIN]    [End] [Success] returnCode=0
2022-06-15 11:06:08.818+09:00 [SUCCESS] [OrderProcessed] id=#2022-06-15#T25876728413-root, pos=0, Job=ssh_cs, Agent(time=2022-06-15 11:06:08.714+09:00), returnCode=0
2022-06-15 11:06:08.977+09:00 [MAIN] [OrderFinished] id=#2022-06-15#T25876728413-root, pos=1

参考 @saitamanokusaさんがそのほかのSSH接続方法を記事にしていただいています。

5. JS7 - ファイル転送からの利用

JS7 ファイル転送機能を参照

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1