접근 제어 목록 API - ServiceNow Fluent

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 소요 시간: 7분
  • 액세스 제어 목록 API에는 애플리케이션의 일부를 보호하는 액세스 제어 목록[sys_security_acl]을 정의하는 개체가 포함되어 있습니다.

    ACL 객체

    새 객체에 대한 액세스를 보호하거나 기본 보안 동작을 변경하도록 사용자 지정 ACL 규칙 [sys_security_acl]을 구성합니다.

    ACL에는 하나 이상의 역할, 보안 속성, 조건 또는 스크립트가 포함되어야 합니다.

    표 1. 속성
    이름 유형 설명
    $id 문자열 또는 숫자 필수 다음 형식으로 제공되는 메타데이터 개체의 고유 ID입니다. 여기서 <value> 는 문자열 또는 숫자입니다.
    $id: Now.ID[<value>]

    애플리케이션을 빌드할 때 이 ID는 고유한 sys_ID로 해시됩니다.

    테이블 문자열 ACL이 적용되는 테이블의 이름입니다.

    이 속성은 type 속성이 ux_data_broker, ux_page, ux_route, pd_action 또는 record 값 중 하나인 경우에만 적용되며 필수입니다.

    필드 문자열 보호할 테이블의 필드 이름입니다. 와일드카드 문자("*")를 사용하여 모든 필드를 선택할 수 있습니다.

    이 속성은 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 값 중 하나인 경우에만 적용되며 필수입니다.

    운영 문자열 필수 이 ACL 규칙이 보호하는 작업입니다. ACL 규칙은 하나의 작업만 보호할 수 있습니다. 여러 작업을 보호하려면 각각에 대해 별도의 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

    유형 문자열 이 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

    기본값: 기록

    active 부울 ACL 규칙이 적용되는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: ACL 규칙이 적용됩니다.
    • false: ACL 규칙이 적용되지 않습니다.

    기본값: true

    역할 배열 Role 개체의 변수 식별자 또는 사용자가 개체에 액세스하는 데 필요한 역할 sys_ids입니다. 자세한 내용은 역할 API - ServiceNow Fluent 문서를 참조하십시오.

    ACL에는 하나 이상의 역할, 보안 속성, 조건 또는 스크립트가 포함되어야 합니다.

    주:
    관리자 역할은 사용자에게 다른 모든 역할을 자동으로 부여하므로 관리자 역할이 있는 사용자는 항상 이 권한 검사를 통과합니다.
    스크립트 스크립트 스크립트 태그 앞에 오는 함수 또는 인라인 스크립트입니다. 사용자 지정 스크립트는 객체에 접근하는 데 필요한 권한을 정의해야 합니다.

    ACL에는 하나 이상의 역할, 보안 속성, 조건 또는 스크립트가 포함되어야 합니다.

    주:
    type 속성이 graphql인 경우 스크립트가 지원되지 않습니다.

    함수의 경우 JavaScript 모듈에서 내보내고 .now.ts 파일로 가져온 함수, 함수 표현식 또는 기본 함수의 이름을 사용합니다. JavaScript 모듈에 대한 자세한 내용은 을 참조하십시오 JavaScript 모듈 및 타사 라이브러리.

    인라인 스크립트는 다음 형식으로 script 태그를 사용합니다.
    script: script`gs.info('info')`,
    스크립트는 현재이전 전역 변수와 시스템 속성의 값을 사용할 수 있습니다. 스크립트는 다음 두 가지 방법 중 하나로 True 또는 False 응답을 생성해야 합니다.
    • 예 또는 아니오 값으로 설정된 응답 변수를 반환합니다.
    • True 또는 False로 평가
    두 경우 모두 사용자는 스크립트가 true로 평가되고 사용자가 ACL 규칙의 조건을 충족하는 경우에만 객체에 액세스할 수 있습니다. 사용자가 객체에 액세스하려면 조건과 스크립트 모두 true로 평가되어야 합니다.
    주:
    평가된 항목이 관련 목록에 있는 경우 current 는 ACL이 있는 현재 항목이 아니라 관련 목록이 있는 항목을 가리킵니다. 그러나 ACL을 평가하는 항목이 관련 목록에 없으면 현재 가 실제 항목을 가리킵니다.
    admin_overrides 부울 관리자 역할을 가진 사용자가 이 ACL 규칙에 대한 권한 검사를 자동으로 통과할지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 관리자가 자동으로 권한 검사를 통과합니다.
    • false: 관리자가 보안 객체에 액세스하려면 이 ACL 규칙에 정의된 권한을 충족해야 합니다. condition 또는 script 속성을 사용하여 관리자가 통과해야 하는 권한 검사를 생성합니다.

    관리자 사용자는 적용되는 스크립트 또는 역할 제한에 관계없이 통과합니다. 그러나 직원만 ServiceNow 할당할 수 있는 nobody 역할은 관리자 재정의 옵션보다 우선합니다. ACL에 nobody 역할이 할당된 경우 관리자 사용자는 예일 경우에도 admin_overrides 자원에 액세스할 수 없습니다. 자세한 내용은 기본 시스템 역할을 참조하세요.

    기본값: true

    condition 문자열 사용자가 객체에 액세스할 수 있도록 예여야 하는 필드와 값을 지정하는 필터 쿼리입니다. 자세한 내용은 Operators available for filters and queries 문서를 참조하십시오.

    ACL에는 하나 이상의 역할, 보안 속성, 조건 또는 스크립트가 포함되어야 합니다.

    description 문자열 이 ACL 규칙이 보호하는 객체 또는 권한에 대한 설명입니다.
    local_or_existing 문자열 적용할 보안 속성의 유형입니다.
    유효한 값은 다음과 같습니다.
    • 로컬: 생성된 ACL에 대해서만 저장되는 속성을 기반으로 condition 하는 보안 속성입니다.
    • 기존: 속성에서 참조할 기존 보안 속성입니다 security_attribute .

    기본값: 로컬

    security_attribute 문자열 사용할 미리 정의된 조건입니다. 예를 들어 사용자가 다른 사용자를 가장하는지 여부를 확인할 수 있습니다. 보안 속성에 대한 자세한 내용은 을 참조하십시오 OOB (Out-of-Box) Security Attributes.

    ACL에는 하나 이상의 역할, 보안 속성, 조건 또는 스크립트가 포함되어야 합니다.

    주:
    필드가 예로 설정된 보안 속성의 Is localized 경우 ACL의 local_or_existing 속성을 로컬로 설정해야 합니다. 필드가 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이 액세스를 거부합니다.

    기본값: 허용

    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] 
    })