こんにちは。SCSK星です。
Zurichバージョンを行う際にConditional Script Writerに振り回されたため、
今回はその時の学びと記録を書いていこうと思います。
Conditional Script Writerとは
Conditional Script WriterはZurichバージョンから追加されたグループになります。
このグループは少なくともロールを一つ以上持っている人が自動的に所属し、Zurichバージョン時にロールを所持していた人は自動的にこのグループに追加されます。「Script Writer」と書いてある通り、スクリプトを書くためにロールを付与するためのグループとなります。そのため、全員が所属する必要はありません。
今回でわかったことのまとめ
先にわかったことを記載いたします。
①HTMLタイプの入力欄もスクリプト扱いになるため、Conditional Script Writerグループは運用者も必要になる場合がある。
②Conditional Script Writerグループはユーザに直接ロールを付与した場合は即時所属するが、他のグループに所属させることでロールを付与した場合は即時反映されない。
③自動所属されるためにはシステムプロパティの「glide.security.scripting_role.auto_provisioning」の値がtrueになっている必要があるが、こちらはfalseにしてしまうと元に戻せないので検証目的で変更してはならない。
④security_adminに昇格することでConditional Script Writerグループに関する「Scripting Governance Tool」というモジュールを参照することができる。
⑤他のグループに所属させることでロールを付与した場合はsys_triggerテーブルにある「Update Users in Conditional Script Writer Group」ジョブが動くのを待つ必要がある。
これ以降は上記5点がどんな流れで分かったかを記載していきます。経緯も含めた備忘録のようなものなので、
ご興味あればご覧いただく程度でよいと思います。
わかった経緯
①HTMLタイプの入力欄もスクリプト扱いになるため、Conditional Script Writerグループは運用者も必要になる場合がある。
ServiceNowのバージョンアップを行う際は、開発環境を用いて動作確認を行い、必要に応じて修正を加える形式で行っておりました。この際に現在の運用が問題なく行えるように動作確認としてバージョンアップテストを行っています。
今回のZurichバージョンアップも同様にバージョンアップテスト・軽微な修正を行い、運用側へ動作確認を依頼しました。
しかし、運用担当から「問題管理に使用している項目が記入できなくなった」と報告を受けました。
それが以下のような項目です。ServiceNowでは「HTML」タイプの入力欄と名付けているようです。
②Conditional Script Writerグループはユーザに直接ロールを付与した場合は即時所属するが、他のグループに所属させることでロールを付与した場合は即時反映されない。
なぜバックアップテスト時にこちらに気付けなかったかというと、バージョンテスト用のユーザを作成し動作確認していたのですが、このロールの付与の仕方が良くなかったからです。
テストユーザとして「運用者ロールを持つユーザ」を作ってこれらのユーザを使ってテストしていたのですが、この運用者ロールを持つユーザはグループに所属によるロール付与ではなく、ユーザに直接itilロールなどを付与していました。
この際に運用者ロールを持つユーザはConditional Script Writerグループに所属されていたのです。
よってテストユーザはConditional Script Writerグループに所属した状態でテストしたことになります。そのため、問題なく今まで通り運用が行えると判断したという経緯になります。
また、動作確認を行っている中で、Conditional Script Writerという新たなグループが追加されていることにも気づき、調査をしスクリプトを書くためのロールということで認識いたしました。
スクリプトを書くのは開発者のみの運用だったため、開発者のみがこのグループに所属していればよいと思い、
Zurichバージョン後に多数のユーザがConditional Script Writerグループに所属していましたが、
わざと開発者のみが所属するように設定しました。(運用担当らのユーザは所属を外してしまいました。)
運用担当からの不具合報告を受け、Conditional Script Writerを運用者にも付与する方向で修正・再検証を行いました。
その際にもう一つ課題が出てきました。それが「他のグループに所属させることでロールを付与した場合はConditional Script Writerグループに自動所属されない」というものです。
普段の運用ではグループに所属させることでロールを与えていたため、グループ所属でConditional Script Writerグループに自動所属されない(運用者に必要なロールが揃わない)のは非常にまずく、何とか解決できないかと調査をしました。
③自動所属されるためにはシステムプロパティの「glide.security.scripting_role.auto_provisioning」の値がtrueになっている必要があるが、こちらは一度falseにしてしまうと元に戻せないので検証目的で変更してはならない。
グループなどに自動所属させるためにはシステムプロパティの「glide.security.scripting_role.auto_provisioning」の値がtrueになっている必要があると調査の結果分かりました。しかし、この値は元々trueだったためここが原因ではなかったです。
また、この値は一度falseにしてしまうとsecurity_adminでも戻せないので絶対に触らないことをおススメします。
④security_adminに昇格することでConditional Script Writerグループに関する「Scripting Governance Tool」というモジュールを参照することができる。
調査していく中でConditional Script Writerに関する「Scripting Governance Tool」モジュールがあることもわかりました。
発見した際は早速、インスタンスで見てみようと検索をかけましたが、出てこず。何かしらのPluginかとも思いましたがそういうわけでもなく。頭を抱えながら調査していたらsecurity_adminへの昇格が必要とのこと。(さりげなく書かれていて気づきませんでした…)
「Scripting Governance Tool」モジュールを表示すると以下のような画面に遷移します。

こちらの「自動アサイン」トグルがOFFなのが原因かと思って、アクティブにしようとしましたがONにできず。
結局原因はここではなかったので、これ以上の情報は持ち合わせていませんが、こちらのページもConditional Script Writerに関わるものなのでご参考になれば。
⑤他のグループに所属させることでロールを付与した場合はsys_triggerテーブルにある「Update Users in Conditional Script Writer Group」ジョブが動くのを待つ必要がある。
「他のグループに所属させることでロールを付与した場合はConditional Script Writerグループに自動所属されない」
という問題を解決したのは、sys_triggerテーブルにある「Update Users in Conditional Script Writer Group」ジョブでした。

こちらはデフォルトで月曜日の20時にConditional Script Writerグループに所属資格のあるユーザをそのグループに所属させるようなものでした。ですので実際は「他のグループに所属させることでロールを付与した場合はConditional Script Writerグループに自動所属されない」ではなく「他のグループに所属させることでロールを付与した場合はUpdate Users in Conditional Script Writer Groupが起動するまで自動所属されない」が正確なところでした。
運用上資格がある場合は即時、Conditional Script Writerグループに所属させてほしいのですがそのためにFlowやスクリプトを書くのも管理工数がかかりそうなので、とりあえずはこのスケジュールの頻度を上げて対応しました。
以上になります。
丁寧にやったつもりですが、バージョンアップは丁寧に慎重にやっていかないとダメですね。

