5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ServiceNowでACL(Access Control Lists)を利用して特定の項目をユーザー毎に表示/非表示にする

Last updated at Posted at 2021-03-04

version: Paris

やること

ServiceNowで特定の項目をユーザー毎に表示/非表示にします

ACL(Access Control Lists)というものを使います

ServieNowで特定の項目へのアクセス可否を設定するにはACL(Access Control Lists)というものを使います

以下ドキュメントへのリンクです
[Access control list rules | ServiceNow Docs]
https://docs.servicenow.com/bundle/paris-platform-administration/page/administer/contextual-security/concept/access-control-rules.html

※ACLの他にも同様のことを実現出来る機能があると思います例えばこちらの記事( https://qiita.com/20_percent_cooler/items/6d5b4c4e6c1994df9f78#%E7%89%B9%E5%AE%9A%E3%81%AE%E6%9D%A1%E4%BB%B6%E5%8B%95%E7%9A%84%E3%81%A7%E5%BF%85%E9%A0%88%E3%81%AE%E8%A8%AD%E5%AE%9A )ではUI Policyで特定ユーザーに画面項目のMandatoryの設定をしていますが同じ個所でVisibilityという設定をするとFormで項目の表示/非表示を設定することが出来ます(がListでは表示されてしまったかもなど厳密な権限設定が出来なかった様な気がするので本記事ではACLの利用をお勧めします)

事前準備

※操作はdeveliperインスタンスに最初に作成されているadminユーザーで行います
CCCというテスト用のTableを作成してAAA, BBBという項目を追加します
image.png
aaa, bbbというユーザーを作成します
image.png
aaa_role, bbb_roleというroleを追加して
image.png
aaaユーザーにはaaa_role, bbbユーザーにはbbb_roleを設定します(以下の画面はaaaユーザーにaaa_roleを設定した画面です)
image.png

ACLを操作する前にsecurity adminにElevateする

ACLを操作するにはsecurity adminという特別なroleを利用します画面右上のユーザーの名前が表示されているメニューを選択してメニューから[Elevate Roles]を選択します
image.png
security adminをチェックして[OK]をクリックします
image.png
これでACLを操作できるようになりました

TableにACLを設定

レコード全体をread出来るように設定

CCCテーブルの設定画面の画面下部にAccess ControlsというRelated ListがありますTableを新規作成すると自動でcreate, read, write, deleteの4行が作成されていますこれらはレコード全体のcreate, read, write, deleteそれぞれの権限の設定です
image.png
readの行の(i)アイコンをクリックしてレコードプレビュー画面を表示してから[Open Record]をクリックします
image.png
Tableを作成すると自動で出来るu_ccc_userというroleが設定されています
image.png
u_ccc_userの下にaaa_roleとbbb_roleを追加して[Update]します
image.png
u_ccc_roleの他にaaa_roleとbbb_roleを持っている人がCCCテーブルのレコード全体をreadをすることが出来るようになりました
image.png

recordの特定の項目をread出来るように設定

ACLのRelated Listの[New]ボタンをクリックしてOperationをread, Nameのテーブル名の右にAAA項目, Roleにaaa_roleを設定して[Submit]して[Continue]します
image.png
u_ccc_u_aaaというACLが追加されました
image.png
同様の手順でBBB項目にbbb_roleを設定してu_ccc_u_bbbというACLを追加します
image.png

動作確認

確認用レコードの追加

Filter navigatorにcccと入力して絞り込んだメニューからCCCsを選択してレコード一覧を表示して[New]ボタンをクリックします
image.png
Formが表示されるのでAAA項目に"aaa", BBB項目に"bbb"を入力して[Submit]します
image.png

ユーザーを切り替えて表示確認

画面右上のユーザー名が表示されているメニューを選択して[Impersonate User]を選択して
image.png
aaaユーザーを選択して
image.png
aaaユーザーに切り替えて
image.png
Filter navigatorに"u_ccc.list"と入力してCCCテーブルのレコードリストを表示します(メニューの権限設定をしなかったので直接テーブルリストにアクセスしました)
image.png
リストの項目の表示/非表示のダイアログの中にBBB項目が無いことが確認出来ます
image.png
レコードの(i)アイコンでレコードをプレビューして[Open record]をクリックしてFormに遷移します
image.png
FormにAAA項目しか表示されていないことを確認出来ました
image.png
bbbユーザーにImpersonateして同様にAAA項目が表示されないことを確認出来ました
image.png

5
6
6

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
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?