ServiceNow開発部ブログ第4回目です。
ACLでNobody権限を設定する方法についてです。
ACLでNobody権限を設定する
通常、ACLの権限にはRoleを指定しますが(このテーブルのWrite権限者はAdminだけ、とか)
誰にも操作させたくない場合はnobodyを指定する事で対応可能です。
ですがnobodyを簡単に設定する方法は無く(多分)、以下のようなちょっと面倒な手順が必要です。
手順1.元ACL作成
nobodyを設定する元となるACLを1つ作成する(既にあれば2に進んでOK)
![](https://alpcom.co.jp/cms/wp-content/uploads/snb_ACL01-1024x572.png)
手順2.元ACLのsys_idコピー
フィルターナビゲーターにsys_security_acl_role.listと打って実行。このテーブルから1で作ったレコードを探し、sys_idをコピーする。
![](https://alpcom.co.jp/cms/wp-content/uploads/snb_ACL02-1024x326.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();
}
と、ここまで書きましたが同じことはACLのAdvancedにチェックをつけScriptで常にfalseをreturnする、という形でも対応できるので、そちらの方が無難かもしれません。(簡単に設定できないという事はnobodyの使用はあまり推奨されていない…?ただ一応、この方法でも挙動に問題は無さそうでした)
![](https://alpcom.co.jp/cms/wp-content/uploads/snb_ACL03-1024x577.png)
参考(コミュニティ記事)