섹션별 상세
RAG 파이프라인에서 발생할 수 있는 민감 정보 노출 위험을 방지하기 위해 Google Zanzibar 기반의 SpiceDB를 도입하여 관계 기반 액세스 제어(ReBAC)를 구현한다.
SpiceDB는 사용자, 그룹, 문서 간의 관계를 그래프 형태로 저장하며, definition과 relation을 통해 복잡한 권한 로직을 마이크로초 단위로 평가한다.
python
SCHEMA = """
definition user {}
definition article {
relation viewer: user
permission view = viewer
}
"""SpiceDB에서 사용자(user)와 문서(article) 간의 조회 권한 관계를 정의하는 스키마
Pre-Filter 전략은 검색 수행 전 SpiceDB의 LookupResources API로 사용자가 접근 가능한 문서 ID 목록을 먼저 확보한 뒤, 이를 Pinecone의 메타데이터 필터로 전달하여 권한이 있는 데이터만 검색 범위에 포함시킨다.
python
def lookupArticles():
return client.LookupResources(
LookupResourcesRequest(
subject=subject,
permission="view",
resource_object_type="article",
)
)
# ...(중략)
authorized_articles = [response.resource_object_id async for response in resp]Pre-Filter 방식에서 사용자가 접근 가능한 문서 ID 목록을 SpiceDB로부터 조회하는 코드

Post-Filter 전략은 벡터 데이터베이스에서 검색된 결과 문서들에 대해 SpiceDB의 CheckPermission API를 개별적으로 호출하여 권한을 확인하고, 승인된 문서들만 LLM의 컨텍스트로 구성한다.
python
async def filter_docs_with_spicedb(docs: List):
filtered_docs = []
for doc in docs:
article_id = doc.metadata.get("article_id")
resp = await client.CheckPermission(
CheckPermissionRequest(
subject=SubjectReference(object=ObjectReference(object_type="user", object_id="kim")),
resource=ObjectReference(object_type="article", object_id=str(article_id)),
permission="view",
)
)
if resp.permissionship == CheckPermissionResponse.PERMISSIONSHIP_HAS_PERMISSION:
filtered_docs.append(doc)
return filtered_docsPost-Filter 방식에서 검색된 각 문서에 대해 SpiceDB 권한을 개별적으로 확인하는 코드

대규모 문서 집합에서 검색 적중률이 낮을 때는 Pre-Filter가 효율적이며, 검색 결과의 품질이 높을 때는 Post-Filter가 적합하므로 시스템의 특성과 SpiceDB 메트릭을 고려하여 방식을 결정한다.
용어 해설
- 관계 기반 액세스 제어(ReBAC)
- — 사용자나 자원 간의 관계를 그래프로 모델링하여 권한을 결정하는 방식이다. 정적인 역할 기반(RBAC)보다 유연하며 대규모 시스템의 복잡한 권한 구조를 표현하는 데 필수적이다.
- 구글 잔지바르(Google Zanzibar)
- — 구글이 개발한 전사적 권한 관리 시스템이다. 수십억 개의 객체와 사용자 간의 관계를 실시간으로 처리하며, SpiceDB와 같은 현대적인 ReBAC 시스템의 기술적 토대가 되었다.
- 메타데이터 필터링(Metadata Filtering)
- — 벡터 검색 시 임베딩 유사도 외에 추가적인 속성을 기준으로 결과를 제한하는 기법이다. RAG 보안에서 특정 사용자에게 허용된 문서 ID로 검색 범위를 좁히는 데 사용된다.
기술
- SpiceDB
- Pinecone
- OpenAI
- LangChain
- Python
활용 사례
- 기업용 지식 관리 시스템
- 권한 기반 챗봇
- 보안이 강화된 RAG 파이프라인
언급된 리소스
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 01. 09.수집 2026. 02. 21.출처 타입 RSS
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.