RBAC 접근제어
GenD의 역할 기반 접근제어(RBAC) 시스템으로 사용자를 관리하고, 카탈로그/스키마/테이블 단위로 데이터 접근 권한을 부여하는 방법을 안내합니다.

사전 준비
- 관리자 권한으로 로그인
- Keycloak에 사용자가 등록되어 있어야 합니다
RBAC 개요
GenD는 Unity Catalog 패턴의 3계층 RBAC를 사용합니다:
| 계층 | 권한 | 설명 |
|---|---|---|
| Catalog | USE | 카탈로그 접근 허용 |
| Schema | USE, CREATE | 스키마 접근/테이블 생성 |
| Table | SELECT, INSERT, DELETE, ALL | 테이블 CRUD |
1단계: 사용자 관리
사이드바 하단 ⚙ 관리 콘솔 → 테넌트 & 사용자 → 사용자 관리 메뉴를 클릭합니다.
Keycloak과 동기화된 사용자 목록이 표시됩니다:
| 컬럼 | 설명 |
|---|---|
| 사용자 | 사용자명 |
| 이메일 | 이메일 주소 |
| 역할 | Keycloak 역할 (admin, analyst, viewer) |
| 그룹 | 소속 부서/팀 |
| 상태 | 활성/비활성 |
역할 체계
| 역할 | 기본 권한 | 대상 |
|---|---|---|
| admin | 전체 시스템 관리 | 관리자 |
| analyst | 데이터 조회 + 분석 | 데이터 분석가 |
| viewer | 읽기 전용 | 일반 사용자 |
2단계: 데이터 권한 부여
사이드바 → 거버넌스 → 데이터 액세스 메뉴의 부여된 권한 탭(/governance/access?tab=grants, admin 전용)을 엽니다. 구 "데이터 권한" 메뉴(/admin/grants)는 이 탭으로 통합·리디렉트됩니다.

2-1. 새 권한 부여
[+ 권한 추가] 버튼을 클릭합니다.
| 필드 | 예시 값 | 설명 |
|---|---|---|
| 대상 유형 | user / group | 사용자 또는 그룹 |
| 대상명 | analyst | 사용자명 또는 그룹명 |
| 오브젝트 | catalog / schema / table | 권한 범위 |
| 카탈로그 | sourcedb | 대상 카탈로그 |
| 스키마 | * | 전체 또는 특정 스키마 |
| 테이블 | * | 전체 또는 특정 테이블 |
| 권한 | USE / SELECT / ALL | 부여할 권한 |
2-2. 예시: analyst에게 sourcedb 읽기 권한
대상: user / analyst
오브젝트: catalog / sourcedb / * / *
권한: USE
대상: user / analyst
오브젝트: table / sourcedb / public / customers
권한: SELECT
이렇게 하면 analyst 사용자는 sourcedb 카탈로그에 접근하고, customers 테이블을 조회할 수 있습니다.
3단계: 권한 요청 (일반 사용자)
일반 사용자(viewer, analyst)는 권한이 없는 데이터에 접근할 때 권한 요청을 보낼 수 있습니다.
사이드바 → 거버넌스 → 데이터 액세스 메뉴의 요청 탭(/governance/access?tab=requests, 기본 탭)을 엽니다. 구 "권한 요청" 메뉴(/portal/permissions)는 이 탭으로 통합·리디렉트됩니다.

요청 흐름
1. 사용자: 데이터 액세스 **요청** 탭에서 필요한 카탈로그/테이블에 대해 권한 요청 생성
2. 관리자: 데이터 액세스 **검토** 탭에서 요청 확인 → 승인/반려
3. 시스템: 승인 시 자동으로 데이터 권한(Grant) 생성
4. 사용자: 권한 부여 완료 → 데이터 접근 가능
4단계: 권한 검증
SQL 에디터에서 권한이 올바르게 적용되었는지 확인합니다:
-- analyst 사용자로 로그인 후
-- 허용된 카탈로그 확인
SHOW CATALOGS;
-- 허용된 테이블 조회 (성공)
SELECT * FROM sourcedb.public.customers LIMIT 5;
-- 마스킹 정책이 적용된 컬럼 확인
-- phone 컬럼이 **** 로 표시됨
SELECT name, phone FROM sourcedb.public.customers LIMIT 5;
권한 매트릭스 예시
| 역할 | tpch | sourcedb | iceberg |
|---|---|---|---|
| admin | ALL | ALL | ALL |
| analyst | SELECT | USE + SELECT(일부) | SELECT |
| viewer | SELECT(tiny만) | — | — |