LoginSignup
1

ServiceNow ACLでNobody権限を設定する

Last updated at Posted at 2022-11-24

ACLでNobody権限を設定する

通常、ACLの権限にはRoleを指定しますが(このテーブルのWrite権限者はAdminだけ、とか)
誰にも操作させたくない場合はnobodyを指定する事で対応可能です。
ですがnobodyを簡単に設定する方法は無く(多分)、以下のようなちょっと面倒な手順が必要です。弊社ブログへも同様の記事を投稿しております。

手順1.元ACL作成

nobodyを設定する元となるACLを1つ作成する(既にあれば2に進んでOK)
ACL01.PNG

手順2.元ACLのsys_idコピー

フィルターナビゲーターにsys_security_acl_role.listと打って実行。このテーブルから1で作ったレコードを探し、sys_idをコピーする。
ACL02.PNG

手順3.nobodyに上書き

System Definition > Scripts - Backgroundで下記スクリプトを実行すると、1で作成したACLがnobodyに上書きされる
※nobodyのroleはOOTBレコードなのでsys_idはどの環境でも同一な筈(下記スクリプトb0594…の部分)
※この処理は更新セットにも記録されるので、そのまま移送も可能です

 var rec = new GlideRecord("sys_security_acl_role");
 rec.get("手順2でコピーしたsys_id");
 if (rec){
  rec.sys_user_role = 'b05940500a0a0aa70090a4893f6ff35d'; /* nobody role */
  rec.update();
 }
ACL03.PNG

と、ここまで書きましたが同じことはACLのAdvancedにチェックをつけScriptで常にfalseをreturnする、という形でも対応できるので、そちらの方が無難かもしれません。(簡単に設定できないという事はnobodyの使用はあまり推奨されていない…?ただ一応、この方法でも挙動に問題は無さそうでした)

参考(コミュニティ記事)
How We can use Nobody Role ?

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
1