JS7®JobSchedulerは独SOS社(Software- und Organisations-Service GmbH)によって開発されている、ジョブ管理システムです。
OSSジョブ管理ツールの定番JobSchedulerをリニューアルし、従来より耐障害性、大規模環境対応を強化し、ミッションクリティカルな要求に対応しました。
V.2.2.2よりLDAPディレクトリサーバによる認証のサポートが追加されました。
参考)
https://kb.sos-berlin.com/display/PKB/Release+2.2.2
本書では、WindowsServerとのAD連携方法について記載します。
JobScheduler V.1系でのLDAP連携機能を利用する際は以下の記事をご参照ください。
https://qiita.com/Yoshitami/items/15fcea4d79ce4058c053
また、HashiCorp Vault®連携を利用する際は以下の記事をご参照ください。
https://qiita.com/Yoshitami/items/6920e747e512e6fa348b
LDAPとJOCコックピットの連携は以下のタイプがあります。
※LDAPのサービスは、複数の指定ができないため以下のタイプから1つ選択する必要があります。
-
LDAP-JOC:
- ユーザアカウント/パスワードはLDAPサーバにて管理します。
- ユーザアカウントのロールの割り当ては、JOCで行います。
-
LDAP:
- ユーザアカウント/パスワードはLDAPサーバにて管理します。
- LDAPセキュリティグループのメンバーシップからJOCコックピットの役割への自動マッピングが行われます。
参考)
https://kb.sos-berlin.com/display/PKB/JS7+-+LDAP+Identity+Service
V.2.2.2ではLDAPサーバが以下を使用している場合はログインできないバグがあります。
・属性memberOfで使用している場合
・startTLSを使用している場合
このバグはV.2.2.3でFixされておりますが、V.2.2.2を使用する場合、パッチ(sos_ldap_for_2.2.2_patch.jar)も提供されております。
参考)
https://change.sos-berlin.com/browse/JOC-1235?src=confmacro
詳細な情報については、以下をご覧下さい。
- ナレッジベース(英語) https://kb.sos-berlin.com/display/PKB/JS7
- 日本語紹介資料 https://www.ossl.co.jp/
- フォーラム https://groups.google.com/forum/?hl=ja#!forum/jobscheduler-ja
- Facebook https://www.facebook.com/Jobscheduler-Japan-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97-594469610565511/timeline/
- 日本JobSchedulerユーザーグループ https://sites.google.com/site/jobschedulerja/
- JIRA(英語) https://change.sos-berlin.com/secure/Dashboard.jspa
- User Forum(英語) http://sourceforge.net/projects/jobscheduler/forums/forum/486122
- SOS社ホームページ http://www.sos-berlin.com
1.前提条件
JS7® JobScheduler V.2.2.2以上がインストール済みであること
JS7® JobSchedulerの概要及びインストール方法については以下を参照ください
Dockerでのインストール手順 https://qiita.com/satoruf/items/360fee5293611433ed33
Windowsでのインストール手順 https://qiita.com/Yoshitami/items/6804584592956a483364
Linux/CLIでのインストール手順 https://qiita.com/satoruf/items/fa9846f4376d1a50a67e
2.JS7/ADインストール環境
●Jobschedulerサーバ
・CentOS 7.9
・PostgreSQL 13.5
・openjdk 11
・JS7 2.2.3
・SELinuxはDisabled、Firewalldは停止されていること
・ldapsearchコマンドがインストールされていること※ADユーザ確認のため使用
※ldapsearchコマンドがインストールされていない場合は以下のコマンドでインストールします。
# yum install openldap-clients
●ADサーバ
・WindowsServer 2019 Standard Evaluation
・ADで使用するポート=389
・OU=js7
・ドメイン=test.local
※ADサーバの基本設定、OU、ドメインは作成されているものとします。
3.SHIROの無効化/JOCの作成手順
JS7 V.2.2.0よりIDサービスタイプ:SHIROは非推奨となり、V.2.3.0ではサポートされなくなります。
また、V.2.4.0ではSHIROのサービスは削除されます。
そのため本書では、SHIROのサービスを無効化し、IDサービスタイプ:JOCを作成します。
SHIROではユーザ/ロール情報は「shiro.ini」ファイルに登録さておりましたが、JOCではDB上にユーザ/ロール情報が登録されます。
詳細は以下をご参照ください。
※本作業はLDAP連携とは関係がないため、そのままSHIROを利用する場合は作業不要です。
参考)
https://kb.sos-berlin.com/display/PKB/JS7+-+Identity+Services
(1)IDサービス(SHIRO)の無効化
JOCのWebUIにrootアカウントでログインし、
http://<IPアドレス>:4446
ユーザ:root
パスワード:root
JobSchedulerメニューからroot > アカウント管理 の順で移動し、「IDサービス作成」を選択し、SHIROのサービスを無効化します。
(2)IDサービス(JOC)の作成
JOCのWebUIにrootアカウントでログインし、
http://<IPアドレス>:4446
ユーザ:root
パスワード:root
JobSchedulerメニューからroot > アカウント管理 の順で移動し、「IDサービス作成」を選択し、JOCのサービスを登録します。
IDサービス名:JOC
IDサービスタイプ:JOC
順位:1
サービス認証スキーム:単一要素
単一要素認証パスワード:チェックを入れる
※サービス認証スキームは「単一要素」、「二要素」のいずれかを選択します。
・単一要素認証:LDAP IdentityServiceでのログイン用にユーザーアカウントとパスワードが指定されます。
・二要素認証:ユーザーアカウントとパスワードに加えて、クライアント認証証明書が必要です。JS7-証明書ベースの認証をご参照ください。
参考)https://kb.sos-berlin.com/display/PKB/JS7+-+Certificate+based+Authentication
単一要素認証証明書:単一要素認証スキームが選択されている場合、証明書の使用(ユーザーアカウントとパスワードを指定せずに)がログインを許可するかどうかを指定します。
詳細は以下をご参照ください。
参考)
https://kb.sos-berlin.com/display/PKB/JS7+-+JOC+Identity+Service
(3)ロール/アカウントの作成
作成した「JOC」のサービスを選択し、ロール管理の順で移動し、ロールを作成します。
※本書では全権限付与するものとします。
ロール/権限の詳細は以下をご参照ください。
https://kb.sos-berlin.com/display/PKB/JS7+-+Management+of+User+Accounts%2C+Roles+and+Permissions
作成したロール「all」のコントローラ:defaultを選択します。
次にアカウントに移動し、ローカル認証を行うアカウント作成します。
アカウント:root
パスワード:root
ロール:all
(4)ログイン確認
JOCのWebUIにrootアカウントでログインできることを確認します。
http://<IPアドレス>:4446
ユーザ:root
パスワード:root
SHIRO認証からJOC認証へ変更しため、JOCのログも以下のように出力されます。
# tailf /var/log/sos-berlin.com/js7/joc/joc.log
2022-02-18T13:50:18,852 INFO qtp979294118-12 c.s.a.c.SOSServicePermissionIam - Client Certificate CN read from Login: n/a
2022-02-18T13:50:19,164 INFO qtp979294118-12 c.s.a.c.SOSServicePermissionIam - Login with Identity Service JOC successful.
4.ADユーザの作成手順
(1)ADユーザの作成
ADサーバにAdministrator権限アカウントでログインし、
スタートボタン > Windows管理ツール > Active Directoryユーザとコンピュータの順で移動し、
JobSchedulerとAD連携させるユーザを作成します。
※OU=js7上でユーザを新規作成します。
性:yamashita
ユーザログオン名:yamashita@test.local
※ユーザは次回ログオン時にパスワード変更が必要のチェックを外します。
(2)ADユーザの確認
JobSchedulerサーバより、作成したADユーザが検索できることを確認します。
# ldapsearch -x -D "yamashita@test.local" -w <パスワード> -h <ADサーバのIPアドレス> -b "ou=js7,dc=test,dc=local" "cn=yamashita"
# extended LDIF
#
# LDAPv3
# base <ou=js7,dc=test,dc=local> with scope subtree
# filter: cn=yamashita
# requesting: ALL
#
# yamashita, js7, test.local
dn: CN=yamashita,OU=js7,DC=test,DC=local
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: yamashita
sn: yamashita
distinguishedName: CN=yamashita,OU=js7,DC=test,DC=local
instanceType: 4
whenCreated: 20220217101959.0Z
whenChanged: 20220217101959.0Z
displayName: yamashita
uSNCreated: 24887
uSNChanged: 24892
name: yamashita
objectGUID:: 1FcDAeshH02/UAsqRy1z/A==
userAccountControl: 512
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 0
lastLogoff: 0
lastLogon: 0
pwdLastSet: 132895667990362980
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAA45Jv6chNpbHLsOmpYQQAAA==
accountExpires: 9223372036854775807
logonCount: 0
sAMAccountName: yamashita
sAMAccountType: 805306368
userPrincipalName: yamashita@test.local
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=test,DC=local
dSCorePropagationData: 16010101000000.0Z
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
上記コマンドの結果、
distinguishedName: CN=yamashita,OU=cmdbuild,DC=test,DC=local
CN=yamashita
がJOCとのAD連携するユーザ名となります。
5.JOCコックピット LDAP連携手順
ADサーバでユーザの作成を行えたため、JOCコックピットとLDAPを連携します。
上記にも記載しましたが、LDAPのサービスは、複数の指定ができないため以下のタイプから1つ選択する必要があります。
(複数LDAPのサービスを作成した場合は、無効化し、1つだけLDAPのサービスを有効にします。)
・LDAP-JOC
・LDAP
5-1.AD連携手順(IDサービスタイプ:LDAP-JOC)
本手順では、LDAPのサービスタイプのLDAP-JOCでの連携手順を記載します。
(1)IDサービス(LDAP-JOC)の作成
JOCのWebUIにrootアカウントでログインし、
http://<IPアドレス>:4446
ユーザ:root
パスワード:root
JobSchedulerメニューからroot > アカウント管理 の順で移動し、「IDサービス作成」を選択し、LDAP-JOCのサービスを登録します。
※本書ではJOCのローカル認証→LDAPの順で認証するものとします。
IDサービス名:LDAP-JOC
IDサービスタイプ:LDAP-JOC
順位:2
サービス認証スキーム:単一要素
作成した、「LDAP-JOC」のアクションボタンにて、設定管理を選択し、以下の項目を入力し、登録します。
※本書では以下のように登録します、環境に合わせて修正を行います。
LDAPホスト:<ADサーバのIPアドレス>
LDAPプロトコル:プレーンテキスト
LDAPポート:389
LDAP AD:チェックを入れる
LDAP with sAMAccountName:チェックを入れる
LDAP with memberOf:チェックを入れる
LDAP Search Base:OU=js7,DC=test,DC=local
LDAP User Search Filter:(cn=%s)
・LDAP AD:LDAPサーバーがActiveDirectoryによって実装されている場合の構成が簡素化されます。Active Directoryを使用すると、ユーザー検索とグループ検索の多くの属性が自動的に想定されます。
・LDAP with sAMAccountName:sAMAccountName属性は、ユーザーアカウントの一意の識別子です。ActiveDirectoryタイプのLDAPサーバーで頻繁に使用できます。
・LDAP with memberOf:memberOf属性は、ユーザーアカウントがメンバーシップを持っているセキュリティグループの検索を簡素化します。Active DirectoryタイプのLDAPサーバーで頻繁に使用できますが、他のLDAP製品でも同様にこの属性を実装できます。
詳細は以下をご参照ください。
参考)
https://kb.sos-berlin.com/display/PKB/JS7+-+LDAP+Identity+Service#JS7-LDAPIdentityService-SimpleModeConfiguration
(2)ロール/アカウントの作成
作成した「LDAP」のサービスを選択し、ロール管理の順で移動し、ロールを作成します。
※本書ではLDAP連携のアカウントは全権限付与するものとします。
ロール/権限の詳細は以下をご参照ください。
https://kb.sos-berlin.com/display/PKB/JS7+-+Management+of+User+Accounts%2C+Roles+and+Permissions
作成したロール「all」のコントローラ:defaultを選択します。
次にアカウントに移動し、ADサーバで作成したアカウント作成します。
設定完了後、「6.JOCコックピットLDAP認証確認」を実施し動作確認を行います。
5-2.AD連携手順(IDサービスタイプ:LDAP)
本手順では、LDAPのサービスタイプのLDAPでの連携手順を記載します。
(1)IDサービス(LDAP)の作成
JOCのWebUIにrootアカウントでログインし、
http://<IPアドレス>:4446
ユーザ:root
パスワード:root
JobSchedulerメニューからroot > アカウント管理 の順で移動し、「IDサービス作成」を選択し、LDAPのサービスを登録します。
※本書ではJOCのローカル認証→LDAPの順で認証するものとします。
IDサービス名:LDAP
IDサービスタイプ:LDAP
順位:2
サービス認証スキーム:単一要素
作成した、「LDAP」のアクションボタンにて、設定管理を選択し、以下の項目を入力し、登録します。
※本書では以下のように登録します、環境に合わせて修正を行います。
LDAPホスト:<ADサーバのIPアドレス>
LDAPプロトコル:プレーンテキスト
LDAPポート:389
LDAP AD:チェックを入れる
LDAP with sAMAccountName:チェックを入れる
LDAP with memberOf:チェックを入れる
LDAP Search Base:OU=js7,DC=test,DC=local
LDAP User Search Filter:(cn=%s)
(2)ロールの作成
作成した「LDAP」のサービスを選択し、ロール管理の順で移動し、ロールを作成します。
※本書ではLDAP連携のアカウントは全権限付与するものとします。
ロール/権限の詳細は以下をご参照ください。
https://kb.sos-berlin.com/display/PKB/JS7+-+Management+of+User+Accounts%2C+Roles+and+Permissions
作成したロール「all」のコントローラ:defaultを選択します。
(3)セキュリティグループの作成
ADサーバにAdministrator権限アカウントでログインし、
スタートボタン > Windows管理ツール > Active Directoryユーザとコンピュータの順で移動し、
セキュリティグループを作成します。
※OU=js7上でセキュリティグループを新規作成します。
グループ名:js7_admins
作成したセキュリティグループ「js7_admins」を選択し、3.ADユーザの作成手順にて作成したADユーザを追加します。
JobSchedulerサーバより、ADユーザを検索すると、セキュリティグループに所属されたことを確認できます。
# ldapsearch -x -D "yamashita@test.local" -w <パスワード> -h <ADサーバのIPアドレス> -b "ou=js7,dc=test,dc=local" "cn=yamashita" | grep memberOf
memberOf: CN=js7_admins,OU=js7,DC=test,DC=local
(4)LDAPグループロールマッピング
作成した、「LDAP」のアクションボタンにて、設定管理を選択し、「エキスパートモードe」に移行し、(4)セキュリティグループの作成で作成した「js7_admins」と、(3)ロールの作成で作成した「all」でLDAPグループロールマッピングを行います。
グループ:CN=js7_admins,OU=js7,DC=test,DC=local
※OU、DCの情報も必要のため指定します。
ロール:all
これで、ADサーバのセキュリティグループが、JOCロールへの自動マッピングが行われます。
設定完了後、「6.JOCコックピットLDAP認証確認」を実施し動作確認を行います。
6.JOCコックピットLDAP認証確認
JOCのWebUIに以下のLDAPで作成したユーザ/パスワードでログインできることを確認します。
http://<IPアドレス>:4446
ユーザ:<ADユーザアカウント名>
パスワード:<ADユーザアカウントパスワード>
本書ではJOCのローカル認証→LDAPの順で認証のため、JOCのログを確認するとJOC認証ではなく、LDAP認証でログインできていることを確認できます。
# tailf /var/log/sos-berlin.com/js7/joc/joc.log
2022-02-28T11:35:21,435 INFO qtp2006034581-17 c.s.a.c.SOSServicePermissionIam - Client Certificate CN read from Login: n/a
2022-02-28T11:35:21,743 INFO qtp2006034581-17 c.s.a.c.SOSServicePermissionIam - Login with Identity Service JOC failed. #JOC認証で失敗
2022-02-28T11:35:21,757 INFO qtp2006034581-17 c.s.a.c.SOSServicePermissionIam - Login with Identity Service LDAP successful. #LDAP認証でログイン成功
また、Windows Serverのセキュリティログを確認すると認証に成功していることを確認できます。
7.備考
JS7でもJobScheduler V.1系でも同様で、JOCでのAD連携のユーザはCNの値となります。
以下のユーザをAD認証させる場合はCNにスペースが入っているためJOCでのユーザ作成もスペースを入れ作成する必要があります。
性:yamashita
名:yoshitami
ユーザログオン名:yoshitami@test.local
ユーザは次回ログオン時にパスワード変更が必要のチェックを外す
※IDサービスタイプ:LDAPを選択している場合は、作成したセキュリティグループにユーザを所属させます。
JobSchedulerサーバより、作成したADユーザが検索できることを確認します。
# ldapsearch -x -D "yoshitami@test.local" -w <パスワード> -h <ADサーバのIPアドレス> -b "ou=js7,dc=test,dc=local" "cn=yamashita yoshitami"
# extended LDIF
#
# LDAPv3
# base <ou=js7,dc=test,dc=local> with scope subtree
# filter: cn=yamashita yoshitami
# requesting: ALL
#
# yamashita yoshitami, js7, test.local
dn: CN=yamashita yoshitami,OU=js7,DC=test,DC=local
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: yamashita yoshitami
sn: yamashita
givenName: yoshitami
distinguishedName: CN=yamashita yoshitami,OU=js7,DC=test,DC=local
instanceType: 4
whenCreated: 20220218021347.0Z
whenChanged: 20220218021347.0Z
displayName: yamashita yoshitami
uSNCreated: 28708
memberOf: CN=js7_admins,OU=js7,DC=test,DC=local
uSNChanged: 28714
name: yamashita yoshitami
objectGUID:: T2wJteL01k6AF02OM71bMw==
userAccountControl: 512
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 0
lastLogoff: 0
lastLogon: 0
pwdLastSet: 132896240277417013
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAA45Jv6chNpbHLsOmpZAQAAA==
accountExpires: 9223372036854775807
logonCount: 0
sAMAccountName: yoshitami
sAMAccountType: 805306368
userPrincipalName: yoshitami@test.local
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=test,DC=local
dSCorePropagationData: 16010101000000.0Z
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
上記コマンドの結果の以下の
distinguishedName: CN=yamashita yoshitami,OU=js7,DC=test,DC=local
cn: yamashita yoshitami
memberOf: CN=js7_admins,OU=js7,DC=test,DC=local
がJOCとのAD連携するユーザ名となります。
※IDサービスタイプ:LDAP-JOCの場合は、JOC上でもユーザ作成し、ロール権限を付与します。
ユーザ:yamashita yoshitami
ロール:all
JOCのWebUIに以下のLDAPで作成したユーザ/パスワードでログインできることを確認します。
http://<IPアドレス>:4446
ユーザ:yamashita yoshitami
パスワード:<ADユーザアカウントパスワード>