アクセス制御リスト API - ServiceNow Fluent

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:11分
  • アクセス制御リスト API は、アプリケーションの一部を保護するアクセス制御リスト [sys_security_acl] を定義します。

    アクセス制御リスト (ACL) に関する一般的な情報については、「 Access Control List Rules」を参照してください。

    ACL オブジェクト

    新しいオブジェクトへのアクセスを保護するため、またはデフォルトのセキュリティ動作を変更するため、カスタム ACL ルール [sys_security_acl] を構成します。

    ACL には、1 つ以上のロール、セキュリティ属性、条件、またはスクリプトが含まれている必要があります。

    表 : 1. プロパティ
    名前 タイプ 説明
    $id 文字列または数値 必須。メタデータオブジェクトの一意の ID。アプリケーションをビルドすると、この ID は一意のsys_idにハッシュされます。詳細については、「ServiceNow Fluent 言語構成」を参照してください。

    形式: Now.ID['string' or number]

    操作 文字列 必須。この ACL ルールが保護する操作。ACL ルールは 1 つの操作のみを保護できます。複数の操作を保護するには、それぞれに個別の ACL ルールを作成します。

    type プロパティが client_callable_flow_object、client_callable_script_include、graphql、processor、または rest_endpoint の場合は、操作を実行する必要があります。

    有効な値:
    • execute:ユーザーがレコードまたは UI ページでスクリプトを実行できるようにします。
    • create:ユーザーが新しいレコード (行) をテーブルに挿入できるようにします。
    • read:ユーザーがテーブルのレコードを表示できるようにします。
    • 書き込み:ユーザーがテーブル内のレコードを更新できるようにします。
    • delete:ユーザーがテーブルからレコードを削除したり、テーブルを削除したりできるようにします。
    • conditional_table_query_range:読み取り ACL に基づいてユーザーが部分的な ACL アクセス権を付与できるようにします。データ条件とスクリプトのない読み取り ACL を持つテーブルに対して作成されます。
    • data_fabric:ユーザーがデータファブリックコネクタに特定のテーブルのデータへのアクセスを許可できるようにします。
    • query_match:ユーザーが一致クエリ (「次の値に等しい」、「次の値ではない」、「空である」など) を送信できるようにします。
    • query_range:ユーザーが範囲クエリ (「次の値で始まる」、「次の値で終わる」、「次の値を含む」など) を送信できるようにします。ソートは無制限です。
    • edit_task_relations:ユーザーがタスク [task] テーブルを拡張できるようにします。
    • edit_ci_relations:ユーザーが構成アイテム [cmdb_ci] テーブルを拡張できるようにします。
    • save_as_template:ユーザーがレコードをテンプレートとして保存できるようにします。
    • add_to_list:ユーザーがリストメカニズムの特定の列を表示またはカスタマイズできないようにします。条件とスクリプトはサポートされていません。
    • report_on:ユーザーがテーブルでレポートできるようにします。
    • list_edit:ユーザーがリストからレコード (行) を更新できるようにします。
    • report_view:ユーザーがフィールド ACL でレポートできるようにします。
    • personalize_choices:ユーザーがテーブルまたはフィールドを設定できるようにします。
    タイプ 文字列 必須。この ACL ルールが保護するオブジェクトのタイプ。タイプによって、使用可能な操作が決まります。

    ACL ルールを作成した後、タイプを変更する場合は、ACL を削除し、正しいタイプで新しい ACL を作成する必要があります。

    有効な値:
    • レコード
    • rest_endpoint
    • ui_page
    • プロセッサ
    • GraphQL
    • pd_action
    • ux_data_broker
    • ux_page
    • ux_route
    • client_callable_flow_object
    • client_callable_script_include

    デフォルト:record

    active ブーリアン ACL ルールが適用されるかどうかを示すフラグ。
    有効な値:
    • true:ACL ルールが適用されます。
    • false:ACL ルールは適用されません。

    デフォルト:true

    adminOverrides ブール admin ロールを持つユーザーがこの ACL ルールの権限チェックに自動的に合格するかどうかを示すフラグ。
    有効な値:
    • true:アドミニストレーターは自動的に権限チェックに合格します。

      true の場合、アドミンユーザーは、適用されるスクリプトまたはロールに関係なく権限チェックに合格します。ただし、ServiceNow の担当者のみがアサインできる nobody ロールは、アドミン上書きオプションよりも優先されます。ACL に nobody ロールが割り当てられている場合、 adminOverrides が true の場合でもアドミンユーザーはリソースにアクセスできません。詳細については、「ベースシステムのロール」を参照してください。

    • false:アドミニストレーターは、保護されたオブジェクトにアクセスするために、この ACL ルールで定義された権限を満たす必要があります。条件またはスクリプトのプロパティを使用して、アドミニストレーターが合格する必要がある権限チェックを作成します。

    デフォルト:true

    スクリプト スクリプト オブジェクトへのアクセスに必要な権限を定義するカスタムスクリプト。 このプロパティは、JavaScript モジュールからの関数、スクリプトを含むアプリケーション内の別のファイルへの参照、またはインライン JavaScript をサポートします。

    ACL には、1 つ以上のロール、セキュリティ属性、条件、またはスクリプトが含まれている必要があります。

    注:
    type プロパティが graphql の場合、スクリプトはサポートされません。
    スクリプトは、current および previous のグローバル変数、およびシステムプロパティの値を使用できます。スクリプトは、次の 2 つの方法のいずれかで true または false の応答を生成する必要があります。
    • true または false の値に設定された回答変数を返します。
    • true または false に評価します。
    いずれの場合も、スクリプトが true と評価され、ユーザーが ACL ルールの条件を満たしている場合にのみ、ユーザーはオブジェクトにアクセスできます。ユーザーがオブジェクトにアクセスするには、条件とスクリプトの両方が true と評価される必要があります。
    注:
    評価されたアイテムが関連リストにある場合、現在のポイントは、ACL の現在のアイテムではなく、関連リストがあるアイテムを指します。ただし、ACL を評価しているアイテムが関連リストにない場合、現在のポイントは実際のアイテムを指します。
    Format (形式):
    • 関数には、JavaScript モジュールからエクスポートされた関数、関数式、またはデフォルト関数の名前を使用し、 .now.ts ファイルにインポートします。JavaScript モジュールの詳細については、「 JavaScript モジュールとサードパーティライブラリ」を参照してください。
    • 別のファイルのテキストコンテンツを使用するには、 Now.include('path/to/file') の形式を使用してアプリケーションでファイルを参照します。詳細については、「ServiceNow Fluent 言語構成」を参照してください。
    • インラインスクリプトを指定するには、複数行のコードに文字列リテラルまたはテンプレートリテラルを使用します ( 「スクリプト」または「スクリプト」)
    説明 文字列 この ACL ルールによって保護されるオブジェクトまたは権限の説明。
    localOrExisting 文字列 適用するセキュリティ属性のタイプ。
    有効な値:
    • ローカル:作成された ACL に対してのみ保存される 条件 プロパティに基づくセキュリティ属性。
    • 既存: security_attribute プロパティで参照する既存のセキュリティ属性。

    デフォルト:Local

    意思決定タイプ 文字列 ACL でアクセスを許可するか拒否するかのオプション。
    有効な値:
    • allow:ACL はアクセスを許可します。
    • deny:ACL はアクセスを拒否します。

    デフォルト:allow

    ステータス 文字列 ユーザーがオブジェクトにアクセスするために true でなければならないフィールドと値を指定するフィルタークエリ。詳細については、「Operators available for filters and queries」を参照してください。

    ACL には、1 つ以上のロール、セキュリティ属性、条件、またはスクリプトが含まれている必要があります。

    ロール アレイ ユーザーがオブジェクトにアクセスするために必要な ロール オブジェクトまたはロールのsys_ids変数識別子のリスト。詳細については、「ロール API - ServiceNow Fluent」を参照してください。

    ACL には、1 つ以上のロール、セキュリティ属性、条件、またはスクリプトが含まれている必要があります。

    注:
    admin ロールを持つユーザーは、他のすべてのロールが自動的に付与されるため、常にこの権限チェックに合格します。
    セキュリティ属性 文字列 使用する ACL の事前定義された条件。たとえば、ユーザーが別のユーザーの代理操作を行っているかどうかなどです。セキュリティ属性の詳細については、「OOB (Out-of-Box) Security Attributes」を参照してください。

    ACL には、1 つ以上のロール、セキュリティ属性、条件、またはスクリプトが含まれている必要があります。

    注:
    Is localizedフィールドが true に設定されているセキュリティ属性の場合は、ACL の localOrExisting プロパティを Local に設定する必要があります。Is localizedフィールドが false の場合、localOrExisting プロパティを Existing に設定する必要があります。
    テーブル 文字列 ACL が適用されるテーブルの名前。

    このプロパティは、type プロパティが ux_data_broker、ux_page、ux_route、pd_action、または record のいずれかの値である場合にのみ適用され、必須です。

    フィールド 文字列 保護するテーブルのフィールドの名前。ワイルドカード文字 ("*") を使用して、すべてのフィールドを選択できます。
    名前 文字列 ACL の名前。

    このプロパティは、type プロパティが rest_endpoint、ui_page、processor、graphql、client_callable_flow_object、または client_callable_script_include のいずれかの値である場合にのみ適用され、必須です。

    $meta オブジェクト アプリケーションメタデータのメタデータ。
    installMethod プロパティを使用すると、特定の状況でのみロードされる出力ディレクトリにアプリケーションメタデータをマップできます。
    $meta: {
          installMethod: 'String'
    }
    installMethod の有効な値:
    • demo:[デモデータのロード] オプションが選択されている場合、アプリケーションメタデータを metadata/unload.demo ディレクトリに出力して、アプリケーションとともにインストールします。
    • 初回インストール:アプリケーションがインスタンスに初めてインストールされたときにのみインストールされるように 、アプリケーションメタデータをメタデータ/アンロード ディレクトリに出力します。
    import { Acl } from "@servicenow/sdk/core";
    
    export default Acl({
        $id: Now.ID['task_delete_acl'],
        active: true,
        adminOverrides: true,
        type: 'record',
        table: 'task',
        field: 'description',
        operation: 'delete',
        roles: [adminRole, managerRole],
    })
    参照されるロールは、Role オブジェクトを使用して定義されます。
    import { Role } from "@servicenow/sdk/core";
    
    const managerRole = Role({ 
       $id: Now.ID['manager_role'], 
       name: 'x_snc_example.manager' 
    })
    
    const adminRole = Role({ 
       $id: Now.ID['admin_role'], 
       name: 'x_snc_example.admin', 
       containsRoles: [managerRole] 
    })