부서별 열람 권한을 지키는 기업용 AI 문서 검색 만들기
기업용 AI의 문서 검색부터 답변과 인용 링크까지 부서별 권한을 적용하는 AI 시스템 구축 방법을 설명합니다. 문서 기밀 등급 연결과 퇴사·부서 이동·협력사 계정의 검수 기준을 함께 다룹니다.
핵심 요약
1. 기업용 AI가 문서를 찾기 전에 사용자의 부서와 문서 기밀 등급을 확인하도록 만듭니다. 2. Django authentication, LlamaIndex, PostgreSQL RLS를 연결해 사용자 권한과 문서별 접근 조건을 처리합니다. 3. 답변 표시와 인용 링크 열기에도 권한을 다시 확인하는 로직을 개발하고 계정 변경 상황을 검수합니다.
사내 문서를 찾아 답변하는 RAG 기능에서는 검색 결과뿐 아니라 답변에 섞인 문장도 접근 권한의 적용 대상입니다. 보안 담당자가 AI 시스템 구축을 발주할 때는 누가 어떤 자료를 볼 수 있는지와 권한 변경 후 차단할 범위를 함께 정해야 합니다. 아래 내용은 각 기술의 제공 기능에 업무별 접근 규칙을 직접 개발해 연결하는 구현안입니다.
Django authentication으로 사용자와 부서 권한 확인
Django authentication은 사용자·그룹·권한을 다루는 인증 체계를 제공합니다. 여기에 로그인 계정으로 소속 부서, 겸직 여부, 재직 상태를 조회하는 업무 로직을 연결합니다. 사용자가 화면에서 선택하거나 전송한 부서명만으로 문서 접근을 허용하지 않고, 서버에서 확인한 정보를 기준으로 처리합니다.
착수 자료로는 ‘계정 식별자·소속 부서·겸직 부서·재직 상태’가 담긴 계정 관리표 예시를 요청합니다. 사용자가 ‘질문하기’를 누르면 이 정보와 문서 접근 규칙을 먼저 대조하고, 확인할 수 없는 계정은 검색을 진행하지 않도록 만듭니다. 검수할 때는 같은 질문을 서로 다른 부서 계정으로 실행해 허용된 자료만 답변 근거로 쓰이는지 확인합니다.

LlamaIndex로 문서 조각에 기밀 등급 연결
LlamaIndex는 문서와 문서 조각인 노드에 메타데이터와 관계를 함께 저장할 수 있습니다. 메타데이터는 문서의 부서나 등급처럼 자료를 설명하는 부가 정보입니다. 문서를 나눠 검색에 사용하려면 각 조각에 원문 식별자, 소유 부서, 기밀 등급, 열람 허용 범위를 붙이는 자체 처리 로직이 필요합니다.
두 번째 입력 자료는 ‘문서 식별자·소유 부서·기밀 등급·허용 부서·원문 위치’가 담긴 문서대장 예시입니다. 원문이 기밀 문서라면 나뉜 모든 조각에도 같은 접근 조건을 적용하고, 등급이 빠진 조각은 검색 대상에서 제외합니다. 관리 화면에는 권한 정보가 누락된 문서를 표시하고, 원문 등급을 바꿨을 때 관련 조각의 조건도 함께 갱신되는지 검수합니다.
PostgreSQL RLS로 검색 전 문서 범위 제한
PostgreSQL RLS는 행 단위 보안 정책으로 사용자별 조회·추가·수정·삭제 대상 행을 제한할 수 있습니다. 여기서 행은 문서 정보 한 건처럼 데이터베이스에 저장한 항목을 뜻합니다. 이를 활용하려면 로그인 사용자와 조회 요청을 연결하고, 부서와 기밀 등급을 대조하는 정책을 업무 규칙에 맞게 작성해야 합니다.

검색 요청은 권한 조건을 먼저 적용한 문서 범위 안에서 실행하도록 만듭니다. 별도 검색 저장소를 사용한다면 그 저장소에도 조회 전 접근 조건을 적용하는 로직이 필요합니다. 검수는 실제 서비스가 사용하는 조회 계정과 정책을 기준으로 진행하며, 허용되지 않은 문서 조각이 답변 생성에 전달되지 않는지까지 확인합니다.
답변과 인용 링크에 현재 권한 다시 적용
검색 당시 열람이 가능했더라도 답변을 표시하는 시점에는 부서나 문서 등급이 바뀔 수 있습니다. 따라서 답변을 내보내기 직전에 근거 문서의 현재 접근 권한을 다시 확인하는 단계를 직접 개발합니다. 근거 중 접근할 수 없는 문서가 생기면 해당 문서를 제외하고 답변을 다시 만들거나, 열람 가능한 근거가 부족하다는 안내를 표시합니다.
답변 아래의 ‘근거 문서 보기’ 버튼도 서버의 권한 확인을 거쳐 원문을 열도록 만듭니다. 이전 대화와 저장된 답변을 다시 표시할 때도 근거 문서와 현재 계정의 권한을 대조합니다. 접근 제한 화면에는 보호 대상 문서의 제목이나 본문 일부를 노출하지 않고, 답변과 인용 링크가 같은 기준으로 차단되는지 검수합니다.

퇴사·부서 이동·협력사 계정으로 접근 검수
검수 자료에는 정상 재직자, 퇴사 처리된 사용자, 부서를 옮긴 사용자, 열람 기간이 끝난 외부 협력사 계정을 포함합니다. 각 계정에 대해 질문 입력, 이전 대화 열기, 인용 링크 직접 접속을 차례로 시험합니다. 부서 이동 후에는 이전 부서의 권한을 회수하고, 협력사는 명시적으로 허용한 문서와 기간 안에서만 접근하도록 규칙을 구현합니다.
구체적인 실패 사례는 재무팀에서 영업팀으로 이동한 사용자가 예전 대화를 열어 재무 기밀 문서의 요약이나 인용 원문을 다시 보는 상황입니다. 합격 기준은 권한 변경 적용 후 새 검색뿐 아니라 과거 답변과 원문 접근에서도 해당 내용이 표시되지 않는 것입니다. 변경 정보를 반영하는 시점도 발주 범위에 명시해, 화면마다 차단 시점이 달라지는 문제를 검수합니다.
부서별 문서 권한을 적용하는 기업용 AI 개발이 필요하다면 계정 관리표와 문서대장 예시, 인사 변경 정보를 받는 방식, 연결할 사내 문서 저장소를 정리해 AI 시스템 구축 범위를 문의해 주세요. 트램스 AI 제작 문의 (https://trams.co.kr/ai-si/contact/#inquiry)
참고 자료
비슷한 AI 서비스를
사업에 적용하고 싶으신가요?
아이디어와 필요한 기능을 알려주시면 제작 범위와 방법을 검토합니다.