[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 문서 예시
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 |
---|---|---|---|---|
| - | REQUIRED | 작성된 YAML Code의 버전 시스템에서 관리하는 값으로, 수정 불필요 |
|
| - | REQUIRED | 작성된 YAML Code의 종류 시스템에서 관리하는 값으로, 수정 불필요 |
|
| - | REQUIRED | 정책 내 세부 규칙 (허용 또는 거부) |
|
|
| REQUIRED | 접근을 허용/거부할 리소스 지정 |
|
|
| OPTIONAL | 규칙 적용 대상에 대한 세부 조건 (현재 |
|
아래에서 정책 작성에 필요한 QueryPie WAC Policy YAML 문법을 안내합니다.
spec: <effect> REQUIRED
정책의 구체적인 규칙의 허용 또는 거부 여부를 지정합니다. spec: allow
또는 spec: deny
를 지원합니다.
한 정책에는 최대 1회의
allow
, 1회의deny
만이 존재할 수 있습니다.정책 내에서 동일한 요소에 대해
deny
와allow
가 동시에 선언된 경우deny
가 우선입니다.
Resources REQUIRED
허용 또는 차단 정책을 설정하려는 웹 앱 리소스를 지정합니다. 하위에 webApp
를 필수로 가지며, urlPaths
또는 urlPathTags
를 가집니다.
resources
는 spec: allow
, spec: deny
에서 모두 허용됩니다.
단, urlPathTags
를 통한 명시는 spec: allow
에서만 지원됩니다.
webApp REQUIRED
QueryPie에 정의한 웹 앱 리소스 이름을 입력합니다.
명시적으로 웹 앱을 특정해야 하며, 와일드카드나 정규식을 허용하지 않습니다.
- webApp: "QueryPie"
(O)- webApp: "*Query*"
(X)- webApp: "QueryPie$"
(X)
하나의
spec
안에서 여러 개의 웹 앱을 나열할 수 있습니다.CODEspec: allow: resources: - webApp: "Querypie Web Admin" urlPaths: - "/general-settings/user-management" - "/database-settings/policies" - webApp: "QueryPie Customer Portal" urlPathTags: access: "admin"
웹 앱 이름은 다음의 조건을 만족해야 합니다.
글자 수 최대 120자
알파벳 대소문자 (case-sensitive), 숫자 및 일부 특수기호 (
_
,-
,(
,)
,[
,]
) 만 허용공백 허용
시작과 끝은 알파벳 대소문자 또는 숫자로 제한
중복 불가
웹 앱의 하위 경로 레벨에서 접근 제어 정책을 운영하기 위해서는 webApp
하위에 urlPaths
또는 urlPathTags
를 입력할 수 있습니다. 하나의 정책 안에서, 한 웹 앱에 대해 urlPaths
와 urlPathTags
를 동시에 지정하는 것은 불가능합니다.
urlPaths OPTIONAL
정책을 적용하려는 특정 웹 앱 리소스의 하위 경로를 특정합니다.
Admin > Web App 에 등록된 하위 경로만 등록이 가능합니다.
Base URL을 포함하여, 웹 앱에 존재하는 모든 하위 경로에 대해 허용 또는 거부하려면
urlPaths: ["*"]
으로 작성합니다.예: QueryPie Web Admin 의 전체 경로에 대해 접근 차단
CODEspec: deny: resources: - webApp: "Querypie Web Admin" urlPaths: ["*"]
하위 경로 입력시, 입력한 경로에 대해 정책이 적용됩니다.
하위 경로는 리스트로 나열하며, 여러 개를 입력할 수 있습니다.
경로의 마지막 부분에 와일드카드를 입력하여, 특정 경로 하위의 모든 경로를 지시할 수 있습니다. (상위 경로는 포함하지 않습니다)
CODEspec: allow: resources: - webApp: "Querypie Web Admin" urlPaths: - "/general-settings/user-management" # 특정 하위 경로 - "/general-settings/user-management/*" # 특정 경로의 모든 하위 경로
입력한 경로 중에 서로 중첩되는 경로를 동시에 입력할 수 없습니다.
예: QueryPie Web Admin 의
/general-settings/*
와/general-settings/user-management
를 동시에 입력 불가CODEspec: allow: resources: - webApp: "Querypie Web Admin" urlPaths: - "/general-settings/*" - "/general-settings/user-management"
경로의 중간 또는 경로명의 일부에 와일드카드를 입력하거나, 정규표현식을 입력할 수 없습니다.
"/*-settings"
(X)"/*/edit"
(X)"^/database-settings/policies/data-.*$"
(X)
동일한 리소스(및 하위 경로)에 대하여 차단 정책과 허용 정책이 중첩되는 경우, 차단 정책이 우선 적용됩니다.
urlPathTags OPTIONAL
웹 앱에 등록된 하위 경로 별 URL Path 태그를 기준으로, 접근을 허용할 하위 경로를 지정합니다.
태그는 대소문자를 구분하며, 여러 개를 입력할 수 있습니다.
Key가 동일한 태그를 여러 개 입력 시, OR 조건으로 동작합니다.
예:
access: admin
또는access: user
가 부여된 경로에 대해 접근 허용CODEurlPathTags: "access": "admin" "access": "user"
Key가 다른 태그를 여러 개 입력 시, AND 조건으로 동작합니다.
예:
access: admin
과type: general
가 함께 부여된 경로에 대해 접근 허용CODEurlPathTags: "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인 사용자에 대해 접근 허용
CODEuserAttributes: "department": "PM" "department": "QA"
Key가 다른 속성을 여러 개 입력 시, AND 조건으로 동작합니다.
예: 부서(department)가 PM이고, 직책(title)이 관리자인 사용자에 대해 접근 허용
CODEuserAttributes: "department": "PM" "title": "Manager"
ipAddresses OPTIONAL
리소스에 대한 IP 접근 통제 조건 리스트를 단일IP, CIDR 형태으로 정의합니다.
ipAddresses: ["10.10.0.0/24", "10.11.10.1"]
별도로 정의하지 않은 경우, 기본값은 모두 허용(0.0.0.0/0
) 입니다.
추천하는 운영 방식
권한 별로 접근을 허용할 웹 앱 및 하위 경로를 지정하는 방식을 권장하고 있습니다.
웹 앱 별로 존재하는 권한 목록을 확인합니다.
예: 채용 플랫폼에 대하여,
HR - 모든 권한 가짐
면접관 - 면접 결과를 관리하는 페이지에만 접근 가능
웹 앱의 권한 별로 각각 Role을 생성합니다.
HR, Interviewer
권한 별 접근 정책을 각각 생성하고, Role에 Assign합니다.
HR - 채용 플랫폼 내 모든 경로에 대해 접근 허용
Interviewer - 채용 플랫 폼 내 면접 결과 페이지에만 접근 허용
주의
일부 허용 패턴을 사용하는 경우, 정상적인 웹 사이트 사용을 위해 반드시 진입이 필요한 랜딩 페이지들을 별도 정책으로 구성하고, 역할에 넣어주어야 합니다.
예: 로그인 페이지, 리다이렉트 페이지 등
접근을 허용할 하위 경로를 지정하기 위한 방법은 아래의 두 가지 중 택일하시기 바랍니다.
태그 기반 접근 제어
웹앱에 Path를 등록하고, 각 Path에 적절한 태그를 부여한 후, 정책에서 태그 기반으로 접근을 제어하는 것을 권장합니다. 이 방식을 사용하면 다음과 같은 이점이 있습니다.
역할 기반 정책 관리 용이: 특정 역할에 필요한 경로들에 동일한 태그를 부여하여 관리 가능
정책 유지보수 간소화: 웹앱에 새로운 경로가 추가되더라도 적절한 태그만 부여하면 기존 정책 수정 없이 접근 제어 가능
복잡한 접근 제어 구현: 다양한 조건(사용자 속성, IP 주소 등)과 태그를 조합하여 세밀한 접근 제어 구현 가능
와일드카드 활용
새롭게 지원되는 와일드카드 기능을 활용하여 특정 경로 하위의 모든 페이지에 대한 접근을 효율적으로 제어할 수 있습니다.
관리 페이지의 전체 접근 제어:
/admin/*
특정 기능 모듈 전체 접근 제어:
/module/orders/*