カスタムの暗号化ルールを定義する

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む5読むのに数分
  • 場合によっては、HTTP 要求の中で、要求がインスタンスに送られる途中で機密情報を特定して暗号化する必要があります。このような要求のデータを識別、解釈し、暗号化するための暗号化ルールを記述して、要求内のフィールドをインスタンスのテーブルフィールド名にマップすることができます。

    暗号化ルールとは

    暗号化ルールは、エッジ暗号化 プロキシサーバーで実行され、要求内のフィールドを ServiceNow インスタンス上のテーブル内のフィールドにマップするスクリプトです。暗号化ルールでは、カスタム ペイロードでのデータの暗号化方法を エッジ暗号化 プロキシサーバーに指示します。
    注:
    暗号化ルールでは ECMAScript 3 またはそれ以前のみがサポートされています。

    どのような場合にカスタム ルールを使用するか

    エッジ暗号化 プラグインの一部として、1 組の暗号化ルールが組み込まれています。これらのルールは、次のような多くのコアプラットフォームのユースケースを処理します。

    • リスト編集フォームからのフィールドの編集
    • レコードフォームからのレコードの更新
    • ダイレクト Web サービスの管理
    • REST アプリケーションプログラムインターフェイス (API) からのデータの処理

    標準のフォームとリストを使用して作成されたアプリケーションは、カスタム暗号化ルールがなくても機能します。

    暗号化を必要とするデータが含まれているスクリプトを開発する場合は、データを検索して Glide テーブルフィールド名にマップするための暗号化ルールを作成します。例:

    • スクリプトプロセッサー
    • スクリプト化 Web サービス
    • Scripted REST API、UI、または Ajax スクリプト

    暗号化ルールの形式

    ルールには 3 つの要素が含まれています。
    • 条件:要求のタイプを識別します。
    • アクション:要求内のフィールドをテーブル内のフィールドにマップし、暗号化設定が定義されたフィールドにマップされる値を暗号化します。
    • 順序:ルールの優先度。優先度が最も低く、条件が満たされたルールのみが実行されます。ビジネスルールと同様に、ルールは最低から最高の順に実行されます。

    添付ファイル要求を除き、HTTP 要求は エッジ暗号化 プロキシサーバーによって評価されます。エッジ暗号化 プロキシサーバーは、すべての条件が False を返すか、または 1 つの条件が True を返すまで、暗号化ルールのすべての条件を優先度順に評価します。条件が True を返すと、要求に対してアクションが実行され、結果がインスタンスに転送されます。他の条件は評価されません。したがって、暗号化ルールの条件はできるだけ具体的にする必要があります。汎用的なルールでは、別のルールによる処理を想定した要求に対して True と評価され、正しくないアクションによって要求が処理される可能性があります。汎用的な条件が避けられない場合は、より具体的なルールが先に評価されるように、ルールを高い優先度の値でマークする必要があります。

    暗号化ルールを作成する際のガイドライン

    効率的で最適化された暗号化ルールを作成することで、スクリプトの検証処理の時間を短縮できます。

    全体的なガイドライン:ルールが長くなる場合は、ブロック数を最小限に抑え、可能な限りルールを分割してください。理想的には、カスタムルールで複数のケースを網羅するのではなく、特定のユースケースに適用し、アクションスクリプトで if ステートメントや switch ステートメントを使用します。

    1. ルールを可能な限り分割します。例を次に示します。
      • テーブルごとに異なるルールを作成し、それぞれのルールがそれぞれのテーブルでのみ実行されるようにします。
      • ターゲットとするレコードプロデューサーごとに、または少なくともレコードプロデューサーのサブセットごとに、異なるルールを作成します。1 つのルールで数十もの sys_ids を対象にするのではなく、より少数のレコードプロデューサーを対象にした複数の異なるルールを作成できます。sys_id ごとに 1 つずつルールを作成することもできます。
        注:
        複数のルールを作成すると、それだけ多くのメンテナンスが必要になります。複数のシンプルなルールの方が、長く複雑なルールよりも効率的に検証できます。
    2. ブロック数を最小限に抑えます。スクリプトの評価中は処理エンジンによって個々のブロックがスキャンされます。そのため、ブロックが多数あると検証が遅れる原因になります。例を次に示します。
      • すべての if ブロックを配列参照に置き換え、配列参照内のすべてのブロックをただ 1 つの if ブロックに置き換えます。
      • 可能な限り、if ブロックを結合してグループ化します。

    暗号化ルール API

    暗号化ルールは JavaScript で記述されており、エッジ暗号化 の API を利用して、要求の本体に含まれている機密情報を検索して暗号化します。API は、xPath に似た式を使用して、JSON と XML の両方のコンテンツを参照します。

    エッジ暗号化 API は、要求が出力ストリームに書き込まれているときはストリームから離れて要求を処理します。ストリームを解析することにより、暗号化ルールをネットワークで実行することができます。ただし、本体から複数回コンテンツを取得して解析した場合、予期しない結果につながる可能性があります。この潜在的な問題を回避するには、アクションによる要求の処理は 1 回のパスで行う必要があります。

    暗号化ルールを作成する際、Glide API、スクリプトインクルード、ビジネス ルール、または current などのグローバルパラメーターは使用できません。ルールは HTTP オブジェクトに対して作成されるため、グローバルの request オブジェクトを使用できます。

    暗号化ルールを作成する際は、許可リストマネージャーやスコープ対象のアプリケーションから API を使用することはできません。

    エラー処理

    暗号化ルールの条件またはアクションから例外がスローされた場合は、プロキシのログでトラブルシューティング情報がないか確認してください。