JunshuO
ServiceNow Employee

ServiceNow でプロ開発者のように ACL をデバッグする方法

 

アクセス制御リスト (ACL) は、ServiceNow において最も強力であり、最も誤解されがちで、トラブルシューティングが最も難しい機能の 1 つです。

 

この投稿では、ACL の実際の仕組み、ACL を段階的にデバッグする方法、セキュリティやパフォーマンスの問題につながる可能性のあるよくある間違いを回避する方法について説明します。

 


1. ACL 評価順序を理解する

ACL をデバッグする前に、ServiceNow が ACL を評価する方法を理解することが重要です。

 

ACL 評価順序:

  1. テーブル ACL
    • `table.None`
    • `table.read | write | create | delete`
  2. フィールド ACL
    • `table.field.read | write`
  3. ロール
  4. 条件
  5. スクリプト
  6. すべてが必要 (AND) vs 1 つが必要 (OR)

注: いずれかの時点での失敗 = アクセス拒否

 

ヒント:

この順序がわからない場合、ACL のデバッグは、コードがどのように実行されるかを知らずにデバッグするのと同じように、非常に困難になります。

 

 

 

2. セキュリティデバッグツールをオンにする

セキュリティデバッグを有効化

ACL のデバッグを開始するには、アプリケーションナビゲーターに移動します。

システムセキュリティ > デバッグ > セキュリティルールのデバッグ

 

または

URL に &sysparm_debug=security を追加してデバッグをオンにすることもできます。

 

 

表示される内容

セキュリティデバッグでは次のことが示されます。

  • どの ACL がチェックされたか

  • どの ACL が失敗したか

  • 次のような ACL が失敗した理由:

    • 必要なロールがありません

    • 条件が満たされなかったため

    • スクリプトが false を返したため

 

ヒント:
キャッシュされたロールを使用しないように、常に新しいブラウザーウィンドウまたはシークレットモードで ACL をテストしてください。

 

 

3. どの ACL がブロックしているかを特定する

多くの開発者が犯しがちな間違いは、次のような考え方です。

「スクリプトが間違っています」

 

実際には、上位レベルの ACL がすでに失敗しているため、スクリプトがまったく実行されない可能性があります。

例文

次の ACL をデバッグしている可能性があります:

incident.short_description.read

 

しかし、本当の問題はこの ACL である可能性があります。

incident.read

 

ヒント:

ServiceNow がフィールドレベルの ACL をチェックする前に、テーブルレベルの ACL に合格する必要があります。

 

 

4. gs.log() または gs.info() は慎重に使用してください

ACL スクリプトを使用すると、問題のデバッグに役立つログを追加できます。

 

ACL スクリプトの例:

(function () {
gs.log('*** ACL check for user line no 2: ' + gs.getUserName(), 'ACL_DEBUG_INFO');
return gs.hasRole('itil');
})();

 

テストを実行した後、アプリケーションナビゲーターに移動してシステムログを確認できます。

システムログ > すべて

およびフィルター条件:

ソース = ACL_DEBUG_INFO

 


ヒント:

本番環境の ACL にはログを残すべきではありません。ACL は頻繁に実行され、パフォーマンスに影響を与えるためです。

 

 

 

5. 「ユーザーの代理操作」機能を正しく使用する

ACL をテストするときは、テストアドミンやその他のアカウントではなく、実際のユーザーとして代理操作していることを確認してください。

 

代理操作中は、必ず次の点を確認してください。

  • ユーザーのロール

  • ユーザーのグループ

  • ユーザーのドメイン (インスタンスでドメインセパレーションを使用している場合に適用)

 

ヒント:

アドミンユーザーは ACL をバイパスするため、アドミンの代理操作をしても正しいテスト結果は得られません。

 

 

 

まとめ

ACL は試行錯誤ではありません。正しく使用すると、明確なルールに従い、予測可能な方法で機能します。

 

ACL のデバッグ方法を真に理解している開発者:

  • より安全なアプリケーションのビルド

  • システムパフォーマンスの向上

  • エンタープライズおよび規制対象プロジェクトで信頼を獲得

ACL を深く理解することは、ServiceNow の開発者とアーキテクトにとって重要なスキルです。

 

 

参照: 製品ドキュメント - アクセス制御リストの詳細

 

この記事がお役に立ちましたら、ぜひ「役に立った」とマークし、ブックマークしてください。

 

ありがとうございました。

サガル・パガー


この記事は機械翻訳されております。最新は元となる記事をご覧ください: https://www.servicenow.com/community/developer-blog/how-to-debug-the-acls-like-a-pro-developer-in-se...。

免責事項: 一部の日本語は、翻訳ソフトウェアを使用してお客様の便宜のために翻訳されています。正確な翻訳をご提供できるよう相当な努力を払っておりますが、いかなる自動翻訳も人間の翻訳者に代わすることはなく、そのようなことは意図されておりません。翻訳は「現状のまま」提供されています。他言語への翻訳の的確性、信頼性または正確性については、明示または黙示を問わず、いかなる保証も行われません。翻訳ソフトには限界があるため、一部のコンテンツが正確に翻訳されていない場合があります。これらの資料の公用言語は英語です。翻訳の際に生じる相違または不一致は、コンプライアンスまたは履行の目的に関しては拘束力を有さず、法的効力はないものとします。

This article was machine translated and replicated from the original source: https://www.servicenow.com/community/developer-blog/how-to-debug-the-acls-like-a-pro-developer-in-se...。