접근 제어 목록 API - ServiceNow Fluent

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 9분
  • 접근 제어 목록 API는 애플리케이션의 일부를 보호하는 접근 제어 목록[sys_security_acl]을 정의합니다.

    ACL(접근 제어 목록)에 대한 일반적인 정보는 다음 문서를 참조하십시오 Access Control List Rules.

    ACL 객체

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

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

    표 1. 속성
    이름 유형 설명
    $id 문자열 또는 숫자 필수 메타데이터 객체의 고유 ID입니다. 애플리케이션을 빌드할 때 이 ID는 고유한 sys_id으로 해시됩니다. 자세한 내용은 ServiceNow Fluent 언어 구성 문서를 참조하십시오.

    형식: Now.ID['문자열' 또는 숫자]

    운영 문자열 필수 이 ACL 규칙이 보호하는 작업입니다. ACL 규칙은 하나의 작업만 보호할 수 있습니다. 여러 운영의 보안을 유지하려면 각각에 대해 별도의 ACL 규칙을 생성합니다.

    유형 속성이 client_callable_flow_object, client_callable_script_include, graphql, processor 또는 rest_endpoint인 경우 작업을 실행해야 합니다.

    유효한 값은 다음과 같습니다.
    • execute: 사용자가 기록 또는 UI 페이지에서 스크립트를 실행할 수 있도록 허용합니다.
    • create: 사용자가 테이블에 새 기록(행)을 삽입할 수 있도록 허용합니다.
    • 읽기: 사용자가 테이블의 기록을 표시할 수 있도록 허용합니다.
    • write: 사용자가 테이블의 기록을 업데이트할 수 있도록 허용합니다.
    • 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

    기본값: 기록

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

    기본값: true

    admin재정의 부울 관리자 역할을 가진 사용자가 이 ACL 규칙에 대한 권한 검사를 자동으로 통과하는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 관리자가 자동으로 권한 검사를 통과합니다.

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

    • false: 관리자는 보안 객체에 접근하기 위해 이 ACL 규칙에 정의된 권한을 충족해야 합니다. 조건 또는 스크립트 속성을 사용하여 관리자가 통과해야 하는 권한 검사를 생성합니다.

    기본값: true

    스크립트 스크립트 객체에 접근하는 데 필요한 권한을 정의하는 사용자 지정 스크립트입니다. 이 속성은 JavaScript 모듈의 함수, 스크립트가 포함된 애플리케이션의 다른 파일에 대한 참조 또는 인라인 JavaScript를 지원합니다.

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

    주:
    type 속성이 graphql이면 스크립트가 지원되지 않습니다.
    스크립트는 현재이전 전역 변수와 시스템 속성의 값을 사용할 수 있습니다. 스크립트는 다음 두 가지 방법 중 하나로 true 또는 false 응답을 생성해야 합니다.
    • 예 또는 아니오 값으로 설정된 응답 변수 반환
    • True 또는 False로 평가
    두 경우 모두 사용자는 스크립트가 예로 평가되고 사용자가 ACL 규칙의 조건을 충족하는 경우에만 객체에 액세스할 수 있습니다. 사용자가 객체에 액세스하려면 조건과 스크립트가 모두 true로 평가되어야 합니다.
    주:
    평가된 항목이 관련 목록에 있으면 current 는 ACL이 있는 현재 항목이 아니라 관련 목록이 있는 항목을 가리킵니다. 그러나 ACL을 평가하는 항목이 관련 목록에 없으면 current 가 실제 항목을 가리킵니다.
    체재:
    • 함수의 경우 JavaScript 모듈에서 익스포트한 함수, 함수 표현식 또는 기본 함수의 이름을 사용하여 .now.ts 파일로 임포트합니다. JavaScript 모듈에 대한 자세한 내용은 다음 문서를 참조하십시오 JavaScript 모듈 및 타사 라이브러리.
    • 다른 파일의 텍스트 컨텐츠를 사용하려면 Now.include('path/to/file') 형식을 사용하여 애플리케이션의 파일을 참조하십시오. 자세한 내용은 ServiceNow Fluent 언어 구성 문서를 참조하십시오.
    • 인라인 스크립트를 제공하려면 여러 줄의 코드에 문자열 리터럴 또는 템플릿 리터럴을 사용합니다( 'Script' 또는 'Script').
    설명 문자열 이 ACL 규칙이 보호하는 객체 또는 권한에 대한 설명입니다.
    로컬 또는 기존 문자열 적용할 보안 속성의 유형입니다.
    유효한 값은 다음과 같습니다.
    • 로컬: 작성된 ACL에 대해서만 저장되는 조건 속성에 기반한 보안 속성입니다.
    • 기존: security_attribute 속성에서 참조할 기존 보안 속성입니다.

    기본값: local

    결정 유형 문자열 ACL이 접근을 허용할지 또는 거부할지 여부에 대한 옵션입니다.
    유효한 값은 다음과 같습니다.
    • allow: ACL을 사용하여 접근을 허용합니다.
    • deny: ACL이 접근을 거부합니다.

    기본값: 허용

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

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

    역할 배열 역할 객체의 변수 식별자 목록이거나 사용자가 객체에 액세스하기 위해 가져야 하는 역할 sys_ids입니다. 자세한 내용은 역할 API - ServiceNow Fluent 문서를 참조하십시오.

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

    주:
    관리자 역할은 사용자에게 다른 모든 역할을 자동으로 부여하므로 관리자 역할을 가진 사용자는 항상 이 권한 검사를 통과합니다.
    security속성 문자열 ACL이 사용할 미리 정의된 조건입니다. 예를 들어, 사용자가 다른 사용자를 가장하는지 여부입니다. 보안 속성에 대한 자세한 내용은 다음 문서를 참조하십시오 OOB (Out-of-Box) Security Attributes.

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

    주:
    필드가 Is localized 예로 설정된 보안 속성의 경우 ACL의 localOrExisting 속성을 Local로 설정해야 합니다. 필드가 Is localized false이면 localOrExisting 속성을 Existing으로 설정해야 합니다.
    테이블 문자열 ACL이 적용되는 테이블의 이름입니다.

    이 속성은 유형 속성이 ux_data_broker, ux_page, ux_route, pd_action 또는 기록 값 중 하나인 경우에만 적용되고 필요합니다.

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

    이 속성은 유형 속성이 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] 
    })