보안 등급 관리
카탈로그·테이블·벡터 컬렉션에 보안 등급을 부여해, AI 가 참조할 수 있는 범위를 데이터 자산 단위로 통제합니다.
사이드바 관리 콘솔 → 접근 제어 & 보안 → 보안 등급 (/admin/security-levels) 에서 관리합니다.
:::info 권한
조회·변경 모두 admin 전용입니다 (require_admin). analyst 이하는 메뉴 자체가 보이지 않습니다.
:::
등급 체계
| 등급 | 의미 |
|---|---|
PUBLIC | 제한 없음. 기본값 |
CONFIDENTIAL | 사내 한정 — 해당 clearance 를 가진 호출자만 |
TOP_SECRET | 최상위 — 명시적으로 승인된 호출자만 |
등급은 호출자의 llm_clearance 와 대조됩니다. 여기서 중요한 점은 admin 이라고 자동으로 열람되지 않는다는 것입니다 — 플랫폼 관리자 권한(is_admin)과 데이터 열람 자격(llm_clearance)은 별개 축입니다.
적용 대상 3종
| 대상 | 범위 | 비고 |
|---|---|---|
| 카탈로그 | 카탈로그 전체 | 하위 테이블의 기본값이 됩니다 |
| 테이블 | catalog.schema.table 단위 | 카탈로그 기본값을 덮어쓰는 오버라이드. 삭제하면 카탈로그 값으로 되돌아갑니다 |
| 벡터 컬렉션 | RAG 컬렉션 단위 | vector_policy_enforcer 가 검색 시 server-side where 로 강제합니다 |
사용 방법
- 관리 콘솔 → 접근 제어 & 보안 → 보안 등급 으로 이동합니다
- 탭에서 카탈로그 / 테이블 / 벡터 컬렉션 중 대상을 고릅니다
- 항목의 등급 변경 버튼을 눌러 등급을 선택합니다
- 테이블 오버라이드에는 사유(reason) 를 남길 수 있습니다 — 왜 기본값을 벗어났는지 나중에 추적하기 위한 필드입니다
- 저장하면 즉시 반영됩니다 (
보안 등급이 저장되었습니다)
오버라이드를 되돌리려면 해당 행에서 삭제하면 됩니다 — 등급이 사라지는 것이 아니라 상위 기본값으로 복귀합니다.
API
모두 require_admin 입니다.
| 메서드 | 경로 | 설명 |
|---|---|---|
GET | /api/v1/security/levels/catalogs | 카탈로그 등급 목록 |
PUT | /api/v1/security/levels/catalogs/{catalog} | 카탈로그 등급 설정 |
GET | /api/v1/security/levels/tables | 테이블 오버라이드 목록 |
PUT | /api/v1/security/levels/tables/{catalog}/{schema}/{table} | 테이블 오버라이드 설정 |
DELETE | /api/v1/security/levels/tables/{catalog}/{schema}/{table} | 테이블 오버라이드 삭제 (상위 기본값 복귀) |
GET | /api/v1/security/levels/collections | 벡터 컬렉션 등급 목록 |
PUT | /api/v1/security/levels/collections/{name} | 벡터 컬렉션 등급 설정 |
응답 예시 — 카탈로그 목록:
{"items": [{"catalog": "jmlee", "security_level": "PUBLIC"}]}
테이블 오버라이드 목록은 배열이며 reason·created_by 를 함께 돌려줍니다:
[
{
"id": "8a209cf2-...",
"catalog": "iceberg",
"schema_name": "card",
"table_name": "merchants",
"security_level": "PUBLIC",
"reason": "AI agent demo unblock — admin override",
"created_by": "63f300a6-..."
}
]
다른 통제와의 관계
보안 등급은 AI 참조 범위를 가르는 축입니다. 사용자의 SQL 실행 권한을 가르는 축은 따로 있습니다.