Skip to main content
Skip table of contents

[10.2.8~] WAC RBAC Guide

QueryPie WAC은 RBAC(Role-Based Access Control)을 제공하고 있습니다.

이 문서에서는 10.2.8 이상의 버전에 적용된 WAC 역할과 정책에 대하여 안내합니다.

WAC 역할과 정책

  • 정책(Policy)은 WAC에 등록된 리소스에 대해 어떻게 접근을 제어할지 기술한 명세로, YAML 형식으로 작성합니다.

    • 웹 앱 리소스에 대한 허용 또는 차단이 포함됩니다.

  • 역할(Role)은 사용자가 무엇을 할 수 있고 할 수 없는지 정의하는 오브젝트입니다.

    • 역할 하나 안에는 여러 개의 정책을 할당할 수 있으며, 이 경우 정책들은 OR 조건으로 합쳐집니다.

    • 동일한 Web App 및 하위 경로에 대한 여러 개의 정책이 존재할 경우 차단(Deny) 정책이 허용(Allow) 정책보다 우선합니다.

  • 사용자는 여러 개의 역할을 할당받을 수 있지만 한 번에 한 가지만 선택하여 사용합니다.

주의

역할에 포함된 정책을 모두 통합하였을 때, 최소 1개의 허용 정책이 남아있어야 합니다.
차단 정책만으로 구성된 역할은 아무런 앱 권한도 부여하지 않으므로 정상적인 사용이 불가합니다.

WAC YAML 정책의 기본 구조

WAC의 정책은 YAML 형식으로 작성되며, 그 기본 구조는 다음과 같습니다.

YAML 문서 예시

CODE
apiVersion: webApp.rbac.querypie.com/v1
kind: WacPolicy
spec:
  allow:
    resources:
      - webApp: "Querypie Web Admin"
        urlPathTags:              
          access: "admin"
      - webApp: "QueryPie Customer Portal"
        urlPaths: ["*"]          
    conditions:
      userAttributes:
        department: "White"
      ipAddresses: 
        - "10.10.0.0/24"
        - "10.10.1.79"
  deny:
    resources:
      - webApp: "Querypie Web Admin"
        urlPaths: 
          - "/general-settings/user-management/roles"

 

YAML 명세

Category

Property

Required

Description

Valid Values

apiVersion

-

REQUIRED

작성된 YAML Code의 버전

시스템에서 관리하는 값으로, 수정 불필요

webApp.rbac.querypie.com/v1

kind

-

REQUIRED

작성된 YAML Code의 종류

시스템에서 관리하는 값으로, 수정 불필요

WacPolicy

spec:
<effect>

-

REQUIRED

정책 내 세부 규칙 (허용 또는 거부)

allow, deny

 

resources

REQUIRED

접근을 허용/거부할 리소스 지정

webApp, urlPaths, urlPathTags (urlPathTags는 spec: allow 에서만 사용 가능)

 

conditions

OPTIONAL

규칙 적용 대상에 대한 세부 조건

(현재 spec: allow 에서만 사용 가능)

userAttributes, ipAddresses

아래에서 정책 작성에 필요한 QueryPie WAC Policy YAML 문법을 안내합니다.

spec: <effect> REQUIRED

정책의 구체적인 규칙의 허용 또는 거부 여부를 지정합니다. spec: allow 또는 spec: deny 를 지원합니다.

  1. 한 정책에는 최대 1회의 allow, 1회의 deny 만이 존재할 수 있습니다.

  2. 정책 내에서 동일한 요소에 대해 denyallow가 동시에 선언된 경우 deny가 우선입니다.

Resources REQUIRED

허용 또는 차단 정책을 설정하려는 웹 앱 리소스를 지정합니다. 하위에 webApp를 필수로 가지며, urlPaths 또는 urlPathTags 를 가집니다.

resourcesspec: allow, spec: deny 에서 모두 허용됩니다.

단, urlPathTags 를 통한 명시는 spec: allow 에서만 지원됩니다.

webApp REQUIRED

QueryPie에 정의한 웹 앱 리소스 이름을 입력합니다.

  1. 명시적으로 웹 앱을 특정해야 하며, 와일드카드나 정규식을 허용하지 않습니다.

    • - webApp: "QueryPie" (O)

    • - webApp: "*Query*" (X)

    • - webApp: "QueryPie$" (X)

  2. 하나의 spec 안에서 여러 개의 웹 앱을 나열할 수 있습니다.

    CODE
    spec:
      allow:
        resources:
          - webApp: "Querypie Web Admin"
            urlPaths: 
              - "/general-settings/user-management"
              - "/database-settings/policies"
          - webApp: "QueryPie Customer Portal"
            urlPathTags: 
              access: "admin"
  3. 웹 앱 이름은 다음의 조건을 만족해야 합니다.

    • 글자 수 최대 120자

    • 알파벳 대소문자 (case-sensitive), 숫자 및 일부 특수기호 (_, -, (, ), [, ]) 만 허용

    • 공백 허용

    • 시작과 끝은 알파벳 대소문자 또는 숫자로 제한

    • 중복 불가

웹 앱의 하위 경로 레벨에서 접근 제어 정책을 운영하기 위해서는 webApp 하위에 urlPaths 또는 urlPathTags 를 입력할 수 있습니다. 하나의 정책 안에서, 한 웹 앱에 대해 urlPathsurlPathTags 를 동시에 지정하는 것은 불가능합니다.

urlPaths OPTIONAL

정책을 적용하려는 특정 웹 앱 리소스의 하위 경로를 특정합니다.

  1. Admin > Web App 에 등록된 하위 경로만 등록이 가능합니다.

  2. Base URL을 포함하여, 웹 앱에 존재하는 모든 하위 경로에 대해 허용 또는 거부하려면 urlPaths: ["*"] 으로 작성합니다.

    • 예: QueryPie Web Admin 의 전체 경로에 대해 접근 차단

      CODE
      spec:
        deny:
          resources:
            - webApp: "Querypie Web Admin"
              urlPaths: ["*"]
  3. 하위 경로 입력시, 입력한 경로에 대해 정책이 적용됩니다.

    • 하위 경로는 리스트로 나열하며, 여러 개를 입력할 수 있습니다.

    • 경로의 마지막 부분에 와일드카드를 입력하여, 특정 경로 하위의 모든 경로를 지시할 수 있습니다. (상위 경로는 포함하지 않습니다)

      CODE
      spec:
        allow:
          resources:
            - webApp: "Querypie Web Admin"
              urlPaths: 
                - "/general-settings/user-management"     # 특정 하위 경로
                - "/general-settings/user-management/*"   # 특정 경로의 모든 하위 경로
    • 입력한 경로 중에 서로 중첩되는 경로를 동시에 입력할 수 없습니다.

      • 예: QueryPie Web Admin 의 /general-settings/*/general-settings/user-management동시에 입력 불가

        CODE
        spec:
          allow:
            resources:
              - webApp: "Querypie Web Admin"
                urlPaths: 
                  - "/general-settings/*"
                  - "/general-settings/user-management"
  4. 경로의 중간 또는 경로명의 일부에 와일드카드를 입력하거나, 정규표현식을 입력할 수 없습니다.

    • "/*-settings" (X)

    • "/*/edit" (X)

    • "^/database-settings/policies/data-.*$" (X)

  5. 동일한 리소스(및 하위 경로)에 대하여 차단 정책과 허용 정책이 중첩되는 경우, 차단 정책이 우선 적용됩니다.

urlPathTags OPTIONAL

웹 앱에 등록된 하위 경로 별 URL Path 태그를 기준으로, 접근을 허용할 하위 경로를 지정합니다.

  1. 태그는 대소문자를 구분하며, 여러 개를 입력할 수 있습니다.

    • Key가 동일한 태그를 여러 개 입력 시, OR 조건으로 동작합니다.

      • 예: access: admin 또는 access: user 가 부여된 경로에 대해 접근 허용

        CODE
        urlPathTags: 
          "access": "admin"
          "access": "user"
    • Key가 다른 태그를 여러 개 입력 시, AND 조건으로 동작합니다.

      • 예: access: admintype: general 가 함께 부여된 경로에 대해 접근 허용

        CODE
        urlPathTags: 
          "access": "admin"
          "type": "general"

Conditions OPTIONAL

conditions 은 규칙 적용 대상 리소스의 범위를 좁히기 위한 조건을 정의합니다. userAttributes, ipAddresses 두 종류의 조건 지정이 가능합니다.

conditions는 spec:allow에서만 문법적으로 허용됩니다.

userAttributes OPTIONAL

QueryPie 사용자의 속성(attribute)을 기준으로 규칙에 의해 리소스 접근이 허용되는 사용자의 범위를 한정합니다.

사용자 속성은 Administrator > General > Users 메뉴의 사용자별 상세 페이지에서 조회할 수 있습니다. QueryPie에서 추가된 사용자의 속성은 상세 페이지에서 추가/변경/삭제 등이 가능하며, IdP 동기화에 의해 추가된 사용자의 속성은 사용자 원장(Okta, LDAP 등)에서 변경할 수 있습니다.

속성 정보는 대소문자를 구분하며, 여러 개 입력할 수 있습니다.

  • Key가 동일한 속성을 여러 개 입력 시, OR 조건으로 동작합니다.

    • 예: 부서(department)가 PM 또는 QA인 사용자에 대해 접근 허용

      CODE
      userAttributes: 
        "department": "PM"
        "department": "QA"
  • Key가 다른 속성을 여러 개 입력 시, AND 조건으로 동작합니다.

    • 예: 부서(department)가 PM이고, 직책(title)이 관리자인 사용자에 대해 접근 허용

      CODE
      userAttributes: 
        "department": "PM"
        "title": "Manager"

ipAddresses OPTIONAL

리소스에 대한 IP 접근 통제 조건 리스트를 단일IP, CIDR 형태으로 정의합니다.

CODE
ipAddresses: ["10.10.0.0/24", "10.11.10.1"]

별도로 정의하지 않은 경우, 기본값은 모두 허용(0.0.0.0/0) 입니다.

추천하는 운영 방식

권한 별로 접근을 허용할 웹 앱 및 하위 경로를 지정하는 방식을 권장하고 있습니다.

  1. 웹 앱 별로 존재하는 권한 목록을 확인합니다.

    1. 예: 채용 플랫폼에 대하여,

      1. HR - 모든 권한 가짐

      2. 면접관 - 면접 결과를 관리하는 페이지에만 접근 가능

  2. 웹 앱의 권한 별로 각각 Role을 생성합니다.

    1. HR, Interviewer

  3. 권한 별 접근 정책을 각각 생성하고, Role에 Assign합니다.

    1. HR - 채용 플랫폼 내 모든 경로에 대해 접근 허용

    2. Interviewer - 채용 플랫 폼 내 면접 결과 페이지에만 접근 허용

주의

일부 허용 패턴을 사용하는 경우, 정상적인 웹 사이트 사용을 위해 반드시 진입이 필요한 랜딩 페이지들을 별도 정책으로 구성하고, 역할에 넣어주어야 합니다.

  • 예: 로그인 페이지, 리다이렉트 페이지 등

 

접근을 허용할 하위 경로를 지정하기 위한 방법은 아래의 두 가지 중 택일하시기 바랍니다.

태그 기반 접근 제어

웹앱에 Path를 등록하고, 각 Path에 적절한 태그를 부여한 후, 정책에서 태그 기반으로 접근을 제어하는 것을 권장합니다. 이 방식을 사용하면 다음과 같은 이점이 있습니다.

  • 역할 기반 정책 관리 용이: 특정 역할에 필요한 경로들에 동일한 태그를 부여하여 관리 가능

  • 정책 유지보수 간소화: 웹앱에 새로운 경로가 추가되더라도 적절한 태그만 부여하면 기존 정책 수정 없이 접근 제어 가능

  • 복잡한 접근 제어 구현: 다양한 조건(사용자 속성, IP 주소 등)과 태그를 조합하여 세밀한 접근 제어 구현 가능

와일드카드 활용

새롭게 지원되는 와일드카드 기능을 활용하여 특정 경로 하위의 모든 페이지에 대한 접근을 효율적으로 제어할 수 있습니다.

  • 관리 페이지의 전체 접근 제어: /admin/*

  • 특정 기능 모듈 전체 접근 제어: /module/orders/*

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.