FGAC 첫 한 줄 — 컬럼 마스킹 + 행 필터
같은 데이터셋 안에서 컬럼 마스킹 (예: salary 를 HR 만) 과 행 필터 (예: 자기 지역만) 의 첫 FGAC 정책 한 개를 작성하고 적용합니다.
Role + 컬렉션 ceiling 으로 접근 자체 를 통제했습니다 (레슨 1). 본 레슨은 같은 데이터셋 안에서 보이는 범위 를 사용자별로 다르게 좁히는 FGAC (Fine-Grained Access Control) 의 첫 한 줄을 잡습니다.
FGAC 가 푸는 두 문제
- 컬럼 마스킹 — 한 데이터셋에 민감한 컬럼 이 섞여 있을 때. 예: 인사 데이터셋의
salary, 고객 데이터셋의phone_number. HR 그룹은 보이고 분석가 그룹은 가려진 형태로. - 행 필터 — 한 데이터셋의 행이 사용자 권한 범위에 따라 다르게 잘리는 경우. 예: 영업 사원이 자기 지역 row 만, 매장 관리자가 자기 매장 row 만.
두 패턴 모두 데이터셋 자체는 한 개로 유지하면서 사용자별 보이는 슬라이스 만 다르게 만듭니다. 데이터셋을 사용자 그룹별로 복제 하면 원본 갱신 시 동기화 문제 가 생기는데, FGAC 는 그 문제를 정책 한 줄로 해결합니다.
시나리오 — customer_analytics 데이터셋
본 레슨의 실습 시나리오는 ecommerce 워크숍 의 customer_analytics 데이터셋입니다. 컬럼은 customer_id, name, email, tier, region, total_spend, segment 등.
두 가지 정책을 한 번에 잡습니다.
- 컬럼 마스킹:
email컬럼을 마케팅 그룹만 볼 수 있게. 분석가 그룹에는 마스킹된 @.com 형식으로 표시. - 행 필터: 영업 사원 그룹의 멤버는 자기 region 만 볼 수 있게.
정책 작성 — 포털 설정에서
포털 설정 → 정책 으로 들어가 + 정책 추가 를 누릅니다. 정책 한 개는 대상 데이터셋 + 적용 조건 두 영역으로 작성됩니다.
컬럼 마스킹 정책
- 이름 —
customer_analytics_email_mask(snake_case) - 별칭 — 고객 이메일 마스킹
- 적용 대상 — 데이터셋
customer_analytics의email컬럼 - 적용 조건 — 사용자의 그룹이 마케팅 그룹에 포함되지 않음
- 마스킹 패턴 —
***@***.com(정규식 또는 사전 정의 패턴 선택)
저장하면 그 정책은 즉시 활성화 — 분석가 그룹 멤버가 customer_analytics 미리 보기에 들어가면 email 컬럼이 마스킹된 형태로 잡힙니다.
행 필터 정책
- 이름 —
customer_analytics_region_filter - 별칭 — 지역 단위 행 필터
- 적용 대상 — 데이터셋
customer_analytics - 적용 조건 — 사용자의 그룹이 영업 사원 그룹에 포함됨
- 행 필터 식 —
region = ${user.region}— 사용자 속성 (IdP claim 또는 포털 그룹 속성) 의region과 일치하는 row 만
저장하면 영업 사원 그룹 멤버는 자기 region 의 row 만 보이게 됩니다.
자가 점검
- 분석가 그룹 멤버 한 명으로 로그인 (또는 권한 시뮬레이션 기능) →
customer_analytics의email컬럼이 마스킹됐는가 - 영업 사원 그룹 멤버로 동일 시도 → row 가 자기 region 만 보이는가
- 마케팅 그룹 멤버 →
email컬럼이 원본 그대로 보이는가
세 가지가 다 맞으면 본 레슨 끝입니다.
이 레슨에서 익혀야 할 것
- FGAC 의 두 패턴 — 컬럼 마스킹 vs 행 필터
- 정책 작성의 대상 + 조건 두 영역
- 여러 정책이 누적 적용 된다는 운영 규칙
다음 레슨
정책을 운영에 올린 뒤의 흐름 — 변경 → 영향 검증 → 단계적 롤아웃 패턴을 잡습니다.