アクセス制御リスト API - ServiceNow Fluent
アクセス制御リスト API には、アプリケーションの一部を保護するアクセス制御リスト [sys_security_acl] を定義するオブジェクトが含まれています。
ACL オブジェクト
新しいオブジェクトへのアクセスを保護するため、またはデフォルトのセキュリティ動作を変更するため、カスタム ACL ルール [sys_security_acl] を構成します。
ACL には、1 つ以上のロール、セキュリティ属性、条件、またはスクリプトが含まれている必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| $id | 文字列または数値 | 必須。次の形式で提供されるメタデータオブジェクトの一意の 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 |
| roles | アレイ | Role オブジェクトの変数識別子、またはユーザーがオブジェクトにアクセスするために必要なロールの sys_ids。詳細については、「ロール API - ServiceNow Fluent」を参照してください。 ACL には、1 つ以上のロール、セキュリティ属性、条件、またはスクリプトが含まれている必要があります。 注: admin ロールを持つユーザーは、他のすべてのロールが自動的に付与されるため、常にこの権限チェックに合格します。 |
| script | スクリプト | script タグが前に付いた関数またはインラインスクリプト。カスタムスクリプトで、オブジェクトにアクセスするために必要な権限を定義する必要があります。 ACL には、1 つ以上のロール、セキュリティ属性、条件、またはスクリプトが含まれている必要があります。 注: type プロパティが graphql の場合、スクリプトはサポートされません。 関数には、JavaScript モジュールからエクスポートされて .now.ts ファイルにインポートされた関数、関数式、またはデフォルト関数の名前を使用します。JavaScript モジュールの詳細については、「JavaScript モジュールとサードパーティライブラリ」を参照してください。 インラインスクリプトは、 script タグを次の形式で使用します。
スクリプトは、 current および previous のグローバル変数、およびシステムプロパティの値を使用できます。スクリプトは、次の 2 つの方法のいずれかで true または false の応答を生成する必要があります。
注: 評価されたアイテムが関連リストにある場合、 現在のポイントは、ACL の現在のアイテムではなく、関連リストがあるアイテムを指します。ただし、ACL を評価しているアイテムが関連リストにない場合、現在のポイントは実際のアイテムを指します。 |
| admin_overrides | ブーリアン | admin ロールを持つユーザーがこの ACL ルールの権限チェックに自動的に合格するかどうかを示すフラグ。 有効な値:
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 |
| 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 |
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],
})
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]
})