컬럼·행 마스킹 — FGAC 정책 작성부터 롤아웃까지
컬렉션 권한만으로 부족할 때 특정 컬럼·행을 사용자·그룹별로 다르게 보이게 하는 fine-grained policy 한 건을 작성·테스트·롤아웃하는 운영 흐름.
한 줄 요약 — 컬렉션 권한은 "이 데이터셋을 볼 수 있는가" 까지 답하고, 정책(FGAC) 은 그 위에 "어떤 컬럼·행까지 볼 수 있는가" 를 데이터셋 단위로 더한다. 한 정책 = 한 대상(사용자 또는 그룹) 단위로 설정한다.
사전 준비
- 정책을 둘 데이터셋의 delete 권한 (보통 Owner). 그렇지 않으면 데이터 접근 정책 탭은 조회 전용으로만 열린다.
- 정책을 받을 사용자·그룹이 포털에 이미 등록되어 있어야 한다. (SSO·계정 프로비저닝은 별도 튜토리얼의 사전 단계.)
- 분석가에게 마스킹된 결과가 정확히 어떻게 보일지 합의된 한 줄 정의 — 정책은 데이터 의미를 바꾸므로 운영 전에 어떤 컬럼은 NULL 로, 어떤 행만 통과가 분명해야 한다.
1. 정책 한 건 = 한 대상 (Subject) — 설계 한 단락
정책을 그릴 때는 대상 한 명/한 그룹 을 먼저 고른 다음 그 대상에게 가릴 것 두 가지(컬럼 / 행)를 한 번에 정의한다. 다른 대상에게도 같은 정책을 주고 싶다면 별도 정책 한 건을 추가한다. 한 데이터셋 위에 대상별로 여러 정책이 동시에 살 수 있고, 사용자가 데이터셋을 조회하면 그 사용자 + 사용자가 속한 그룹 의 정책이 함께 적용된다.
| 결정 | 권장 출발점 |
|---|---|
| 누구를 막을 것인가 | 그룹 우선. 사용자 단건 정책은 예외로만. |
| 컬럼 마스킹은 몇 개 | 같은 정책 안에서 원칙 1 영역(개인정보 / 금액 / 위치) 당 1 행. 영역이 섞이면 정책을 분리하는 편이 검토 비용이 낮다. |
| 행 필터는 적용할 것인가 | 분석가가 자기 부서 데이터만 보면 충분하다면 그룹 → 행 필터 1 건이 가장 자연스럽다. |
2. 정책 추가 (3분)
- 데이터셋 상세 페이지에서 데이터 접근 정책 탭을 연다. delete 권한이 없으면 탭은 열리지만 추가 버튼은 보이지 않는다.
- 정책 추가 버튼을 누르면 정책 폼 모달이 열린다.
- 대상 선택 셀렉트에 2 자 이상 입력해 사용자 또는 그룹을 찾는다. 본인 권한 범위 안의 사용자·그룹만 결과에 나온다.
- 컬럼 마스킹 영역에서 컬럼 마스크 추가를 눌러 마스킹할 컬럼을 한 행씩 더한다.
마스크 유형 6 종 중 가장 자주 쓰는 출발점은 이렇다.
| 데이터 영역 | 권장 마스크 유형 |
|---|---|
| 이름 · 이메일 같은 식별자 | 앞 N자리만 표시 (기본 N=4) 로 가독성·유일성 트레이드오프 |
| 금액 · 거래 단가 | NULL 로 대체 — 0 과 헷갈리지 않도록 |
| 주소·위경도 | 고정 텍스트 (**** 기본) 또는 제거 |
| 식별자 비교는 필요하지만 본문은 노출 금지 | 해시 (SHA-256) — 같은 입력은 같은 해시로 매칭 가능 |
3. 행 필터 (2분)
같은 모달의 행 필터 영역에서 조건 추가로 행 제한 조건을 정의한다. 조건 하나는 컬럼 · 연산자 · 값 세 칸이다.
- 그룹 결합 방식 — 그룹마다 AND (모든 조건 일치) / OR (하나만 일치) 를 토글한다. 그룹을 중첩해 부서가 A 또는 B 면서 동시에 금액 < 100 만원 같은 표현이 가능하다 — 중첩은 최대 3 단계.
- 자주 쓰는 연산자 —
IN(여러 값 태그 입력),BETWEEN(시작~끝),IS NULL/IS NOT NULL(값 미입력). - 행 필터를 추가하지 않으면 행 제한 없이, 모든 행이 마스킹된 컬럼과 함께 보인다.
저장을 누르면 정책이 생성되었습니다 알림이 뜨고 목록이 곧장 갱신된다. 대상이 미지정이면 저장이 막힌다.
4. 테스트 — 대상의 시점으로 직접 조회 (2분)
정책을 만들었다면 그 대상의 권한을 가진 계정으로 직접 데이터셋을 조회해 결과를 확인한다. 본인이 정책 대상이 아니라면 보통 다음 두 패턴 중 하나다.
- 테스트용 계정을 한 명 준비해 임시 그룹에 넣고 그 그룹에 정책 부여 → 테스트 계정으로 로그인.
- 다른 부서 동료에게 "이 컬럼이 마스킹돼 보이는지" 확인 요청 + 결과 캡처를 운영 로그에 첨부.
테스트 때는 두 가지를 함께 점검한다.
- 마스킹 컬럼이 결과 표에 컬럼 자체는 그대로 나오는가 — 스키마는 그대로, 값만 바뀐다.
- 행 필터가 정확한 행 수만 통과시키는가 — 전체 행 수와 정책 적용 후 행 수를 데이터셋 메타에서 비교한다.
5. 롤아웃 — 일괄 적용 전 마지막 3 가지 (1분)
- 고지 — 정책 대상에게 언제부터 어떤 컬럼·행이 가려지는지 한 줄 사전 공지. 분석 결과 해석이 영향을 받는 경우 더 중요.
- 롤백 절차 합의 — 정책을 삭제하면 그 대상에는 다시 역할 기반 권한만 적용된다. 즉시 원복 가능하다는 점을 운영팀이 알고 있어야 한다.
- 운영 로그 — 정책 추가·편집·삭제 사실을 운영 도구에 기록한다. 포털 자체의 보안 감사 로그 화면이 아직 별도로 명세되어 있지 않으므로, 본 운영 로그가 1 차 audit trail.
자가 점검
본 튜토리얼이 끝났는지는 다음 5 가지로 자가 점검한다.
- 한 데이터셋에 대상 = 그룹 한 개 의 정책 1 건을 직접 추가했다.
- 컬럼 마스크 6 종 중 적어도 2 종을 한 정책 안에서 함께 적용해 봤다.
- 행 필터 그룹 1 개 (AND 또는 OR) 를 적용했다.
- 테스트 계정 또는 대상 동료의 시점으로 마스킹된 결과를 한 번 봤다.
- 운영 로그에 정책 추가 사실 + 롤백 절차 한 줄을 기록했다.
다음 단계
- 본 튜토리얼이 자주 쓰이는 경로는 부서별 매출 보고와 개인정보 컬럼 마스킹이다. 부서 가시성을 그룹 + 행 필터 로 한 번에 풀면 분석가용 컬렉션 권한 운영이 가벼워진다.
- 권한 모델 전체를 다시 정리하고 싶다면 튜토리얼: 권한 모델 한 눈에 보기.
- 정책을 받을 대상(사용자·그룹) 자체를 포털에 어떻게 등록·동기화하는지는 튜토리얼: SSO·계정 프로비저닝 한 페이지.
세 Admin 튜토리얼이 일관된 운영 한 사이클을 만들면, 이 묶음은 다음 라운드에서 Platform Admin 코스 로 승급된다.