Skip to main content
Version: v0.1.0

세분화된 정책 편집 (FGAC)

세분화된 정책(FGAC) 편집 다이얼로그는 컬럼 마스크와 행 필터를 구성하여 주체별로 다른 데이터 뷰를 만들 수 있게 해주는 UI입니다.

다이얼로그 구조

정책 목록 화면에서 + 정책 추가 또는 편집을 누르면 정책 폼 모달이 열립니다. 모달은 다음 섹션으로 구성됩니다.

1. 주체 선택 (Subject)

  • 사용자 / 그룹 탭으로 주체 유형을 선택합니다.
  • 이름·이메일 기준의 클라이언트 필터링을 지원하여 입력 즉시 결과가 갱신됩니다.
  • 선택된 주체는 상단에 배지로 유지되며, 한 다이얼로그에서 하나의 주체만 설정합니다.

비-관리자 사용자에 대한 주체 검색

ADR-0039 / ADR-0040으로 비-관리자 사용자도 정책 편집 시 검색 결과로 노출됩니다. 이전에는 관리자만 /admin 사용자/그룹 디렉토리를 조회할 수 있어 비-관리자는 주체 검색이 막혔습니다. 이제는 검색 결과가 호출자의 권한 범위 내(같은 컬렉션·그룹에 속한 사용자 등)로 제한되어 노출되며, 비-관리자 사용자가 다른 사용자의 전체 디렉토리를 보지 못하도록 합니다.

  • 비-관리자: 같은 컬렉션·그룹의 멤버만 검색 결과로 노출.
  • 관리자: 전체 사용자·그룹 디렉토리 접근 가능.

이 변화로 자산 소유자가 팀 동료에게 정책을 부여하는 일반적인 시나리오를 권한 위임 없이 처리할 수 있습니다.

2. 컬럼 마스크 (Column Masks)

  • 자산의 스키마에서 컬럼 이름을 드롭다운으로 선택합니다. 수동 입력 대신 스키마 인식 Select를 사용하여 오타와 없는 컬럼을 차단합니다.
  • 선택한 컬럼에 적용할 마스크 유형을 지정합니다.
    • HIDE: 컬럼 자체를 쿼리 결과에서 제거
    • PARTIAL: 값의 일부만 노출(예: 이메일 도메인만 유지)
    • HASH/REDACT: 고정 해시값 또는 대체 문자열로 치환
  • 여러 컬럼을 동시에 마스킹할 수 있으며, 각 항목을 개별 삭제할 수 있습니다.

3. 행 필터 (Row Filters)

  • 트리 형태의 조건 빌더로 WHERE 절을 구성합니다.
  • 각 조건은 컬럼 · 연산자 · 값의 세 파트로 구성되며, AND/OR 그룹으로 중첩할 수 있습니다.
  • 컬럼은 스키마 드롭다운에서, 연산자는 컬럼 타입에 맞는 목록(=, !=, IN, BETWEEN, LIKE 등)에서 선택합니다.
  • 조건이 비어 있는 상태로 저장하면 "행 필터 없음"(모든 행 노출)으로 처리됩니다.

저장과 검증

  • 저장: 폼을 검증한 뒤 백엔드에 정책을 생성·갱신합니다. 저장 후 목록 테이블이 즉시 갱신됩니다.
  • 중복 방지: 같은 주체·리소스 조합의 정책이 이미 존재하면 편집 모드로 전환되도록 유도합니다.
  • 에러 처리: 필수 필드 누락이나 서버 검증 실패는 필드 하이라이트와 토스트 메시지로 안내합니다.

삭제

  • 목록 테이블의 삭제를 클릭하면 확인 모달이 뜹니다. 정책 삭제는 되돌릴 수 없으며, 주체의 접근 조건은 다시 역할 기반 권한만 적용됩니다.

동작 원리 (요약)

정책은 런타임에 다음과 같이 적용됩니다.

  1. 사용자가 자산을 쿼리(SELECT)하면 서버가 현재 사용자와 그룹에 일치하는 정책을 조회합니다.
  2. 적용 가능한 정책의 컬럼 마스크는 SELECT 절에, 행 필터는 WHERE 절에 자동 주입됩니다.
  3. 여러 정책이 매칭되면 가장 제한적인 규칙이 누적 적용됩니다.

제한 사항

  • 정책은 데이터셋·컬렉션 단위로 적용됩니다. 개별 코드/파이프라인 결과에는 영향을 주지 않습니다.
  • DML/DDL에는 정책이 적용되지 않으며, 포털의 인앱 SQL은 기본적으로 SELECT만 허용합니다.
  • 현재 컬렉션 간 자산 복사/Symlink는 미지원이므로, 같은 데이터를 다른 컬렉션에서 재사용하려면 이동 후 정책을 다시 부여해야 합니다.