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

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:8分
  • アクセス制御リスト API には、アプリケーションの一部を保護するアクセス制御リスト [sys_security_acl] を定義するオブジェクトが含まれています。

    ACL オブジェクト

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

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

    表 : 1. プロパティ
    名前 タイプ 説明
    $id 文字列または数値 必須。次の形式で提供されるメタデータオブジェクトの一意の ID。ここで、<value> は文字列または数値です。
    $id: Now.ID[<value>]

    アプリケーションをビルドすると、この ID は一意の sys_ID にハッシュされます。

    table 文字列 ACL が適用されるテーブルの名前。

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

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

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

    name 文字列 ACL の名前。

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

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

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

    有効な値:execute、create、read、write、delete、edit_task_relations、edit_ci_relations、save_as_template、add_to_list、report_on、list_edit、report_view、personalize_choices

    type 文字列 この ACL ルールが保護するオブジェクトのタイプ。タイプによって、使用可能な操作が決まります。

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

    有効な値:record、rest_endpoint、ui_page、processor、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

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

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

    注:
    admin ロールを持つユーザーは、他のすべてのロールが自動的に付与されるため、常にこの権限チェックに合格します。
    script スクリプト script タグが前に付いた関数またはインラインスクリプト。カスタムスクリプトで、オブジェクトにアクセスするために必要な権限を定義する必要があります。

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

    注:
    type プロパティが graphql の場合、スクリプトはサポートされません。

    関数には、JavaScript モジュールからエクスポートされて .now.ts ファイルにインポートされた関数、関数式、またはデフォルト関数の名前を使用します。JavaScript モジュールの詳細については、「JavaScript モジュールとサードパーティライブラリ」を参照してください。

    インラインスクリプトは、script タグを次の形式で使用します。
    script: script`gs.info('info')`,
    スクリプトは、current および previous のグローバル変数、およびシステムプロパティの値を使用できます。スクリプトは、次の 2 つの方法のいずれかで true または false の応答を生成する必要があります。
    • true または false の値に設定された回答変数を返します。
    • true または false に評価します。
    いずれの場合も、スクリプトが true と評価され、ユーザーが ACL ルールの条件を満たしている場合にのみ、ユーザーはオブジェクトにアクセスできます。ユーザーがオブジェクトにアクセスするには、条件とスクリプトの両方が true と評価される必要があります。
    注:
    評価されたアイテムが関連リストにある場合、現在のポイントは、ACL の現在のアイテムではなく、関連リストがあるアイテムを指します。ただし、ACL を評価しているアイテムが関連リストにない場合、現在のポイントは実際のアイテムを指します。
    admin_overrides ブーリアン admin ロールを持つユーザーがこの ACL ルールの権限チェックに自動的に合格するかどうかを示すフラグ。
    有効な値:
    • true:アドミニストレーターは自動的に権限チェックに合格します。
    • false:アドミニストレーターは、保護されたオブジェクトにアクセスするために、この ACL ルールで定義された権限を満たす必要があります。condition または script プロパティを使用して、アドミニストレーターが合格する必要がある権限チェックを作成します。

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

    デフォルト:true

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

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

    description 文字列 この ACL ルールによって保護されるオブジェクトまたは権限の説明。
    local_or_existing 文字列 適用するセキュリティ属性のタイプ。
    有効な値:
    • Local:condition プロパティに基づくセキュリティ属性。作成された ACL に対してのみ保存されます。
    • Existing:security_attribute プロパティで参照する既存のセキュリティ属性。

    デフォルト:Local

    security_attribute 文字列 使用する事前定義された条件。たとえば、ユーザーが別のユーザーの代理操作を行っているかどうかなどです。セキュリティ属性の詳細については、「OOB (Out-of-Box) Security Attributes」を参照してください。

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

    注:
    [Is localized] フィールドが [true] に設定されているセキュリティ属性の場合は、ACL の local_or_existing プロパティを [Local] に設定する必要があります。Is localized フィールドが false の場合、local_or_existing プロパティを [Existing] に設定する必要があります。

    有効な値:role_explicit、group_explicit、user_is_authenticated、impersonating、interactive_session、has_admin_role、role、logged_in、network_criteria、group、allow_unauth_roleless_acl

    decision_type 文字列 ACL がアクセスを許可するか拒否するか。
    有効な値:
    • allow:ACL はアクセスを許可します。
    • deny:ACL はアクセスを拒否します。

    デフォルト:allow

    import { Acl } from "@servicenow/sdk/core";
    
    export default Acl({
        $id: Now.ID['task_delete_acl'],
        active: true,
        admin_overrides: 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', 
       contains_roles: [managerRole] 
    })