Don't Show What They Can't See: Authorization-First Schema Context for Secure Text-to-SQL
이 논문은 LLM 기반의 Text-to-SQL 시스템에서 데이터베이스 메타데이터의 무단 노출을 방지하기 위해 스키마 검색 단계에서 세밀한 접근 제어를 강제하는 권한 우선 프레임워크를 제안하며, 이를 통해 검색 유용성을 유지하면서도 무단 SQL 참조를 크게 줄이고 권한 없는 객체 유출 제로를 달성한다.
원본 논문은 CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
당신의 음성 질문을 정밀한 라이브러리 명령어로 즉시 번역하여 수백만 개의 선반 중에서 당신이 필요로 하는 책을 정확히 찾아내는 사서를 상상해 보십시오. 이것이 자연어를 데이터베이스 쿼리로 변환하는 현대 인공지능 시스템의 약속입니다. 이러한 시스템은 사용자가 무엇을 묻고 있는지 이해하기 위해 도서관의 모든 내용물(모든 테이블, 컬럼, 그리고 그들 사이의 연결 관계를 나열한 목록)에 대한 상세한 지도를 활용합니다. 그러나 보안 환경에서는 모든 사람에게 그 지도의 모든 부분이 보여서는 안 됩니다. 은행원이 모든 계좌의 금고 비밀번호를 볼 수 없는 것처럼, 사용자도 자신이 접근할 권한이 있는 부분만을 볼 수 있어야 합니다. 위험은 시스템이 작업을 시작하기도 전에 번역기에게 실수로 전체 지도를 보여줄 때 발생합니다. 만약 번역기가 속거나 조작된다면, 실제 기록을 단 하나도 보여주지 않더라도 공격자에게 표적 공격을 위한 청사진을 제공하는 비밀 테이블의 존재나 민감한 컬럼을 드러낼 수 있습니다.
광저우 대학교와 시디안 대학교의 연구진은 이 문제를 해결하고, 번역기가 오직 사용자가 볼 수 있도록 허용된 부분의 지도만을 보도록 보장하는 새로운 방법을 개발했습니다. 그들의 접근 방식은 전통적인 작업 순서를 뒤집습니다. 모든 정보를 모은 다음 금지된 부분을 걸러내고 AI에게 쿼리를 작성하도록 요청하는 대신, 그들은 먼저 사용자의 권한을 확인합니다. 그들은 사용자가 접촉할 권한이 있는 테이블과 컬럼만을 포함하는 작고 안전한 버전의 데이터베이스 지도를 구축합니다. 오직 이 안전하고 제한된 지도만이 AI 시스템에 보여집니다. 이를 통해 AI가 금지된 섹션의 존재를 결코 알 수 없게 하며, 설령 악의적인 행위자가 시스템을 속여 비밀을 드러내려 하더라도, 맥락 속에 드러낼 비밀 자체가 존재하지 않게 됩니다.
연구진은 20개의 서로 다른 데이터베이스를 포함하는 컬렉션에서 240개의 특정 질문과 다양한 사용자 역할을 쌍으로 묶어 이 방법을 테스트했습니다. 시스템이 필터링하기 전에 전체 데이터베이스 지도를 보는 기존 방식에서는, 요청을 처리할 때마다 평균 35.5개의 승인되지 않은 객체(비밀 테이블이나 숨겨진 컬럼 등)에 AI가 노출되었습니다. 새로운 "권한 우선(authorization-first)" 방식에서는 그 숫자가 0으로 떨어졌습니다. 시스템은 AI가 생각을 시작하기도 전에 모든 승인되지 않은 정보를 AI의 시야 밖으로 성공적으로 격리했습니다. 결정적으로, 이러한 보안 강화가 성능의 희생을 초래하지는 않았습니다. 이 시스템은 사용자의 실제 질문에 맞는 올바른 테이블과 컬럼을 찾는 데 있어 기존 방식만큼 뛰어난 성능을 보였습니다. 연구진은 기존 방식이 가끔 올바른 답을 내놓지 못했던 유일한 이유가 훨씬 더 크고 복잡한 정보 세트를 다뤄야 했기 때문이며, 새로운 방식은 깨끗하고 관련성 높은 부분 집합을 가지고 작업했기 때문이라는 것을 발견했습니다.
그들의 연구에서 핵심적인 발견은 실수가 여전히 발생하는 지점을 이해하는 것이었습니다. 새로운 보안 체계 하에서도 AI가 가끔 있어서는 안 될 것들을 언급하는 쿼리를 작성하는 경우가 있었습니다. 그러나 연구진은 이러한 오류를 추적하여, 그것이 시스템의 정보 유출로 인한 것이 아님을 밝혀냈습니다. 대신, AI가 금지된 컬럼의 이름을 추측하거나 "환각(hallucination)" 현상을 일으켜 허공에서 이름을 지어낸 것이었습니다. 이러한 구분은 매우 중요합니다. 이는 금지된 정보를 숨기는 것이 직접적인 비밀 유출은 막아주지만, AI가 이름을 지어내는 것까지 막지는 못한다는 것을 증명합니다. 따라서 새로운 방법은 쿼리가 실행되기 전에 이를 검증하는 최종 점검과 결합될 때 가장 효과적이며, 이는 두 층의 방어막을 형성합니다. 한 층은 AI가 비밀을 보는 것을 막고, 다른 한 층은 AI가 실수로 지어낸 비밀을 사용하는 것을 막습니다.
또한 연구진은 실제 비즈니스 데이터베이스에서 흔히 발견되는 혼란스럽거나 축약된 이름(예를 들어 "customer risk score"가 "cust_rsk_scr"로 표기되는 경우)을 시스템이 어떻게 처리하는지 조사했습니다. 데이터베이스 이름이 명확하고 설명적일 때, 새 시스템은 기존 방식만큼 잘 작동했습니다. 하지만 이름이 짧고 암호 같을 때, 시스템은 안전한 지도에 평이한 언어 설명을 추가하는 특수 기법을 사용했습니다. 이는 AI가 짧은 코드들이 무엇을 의미하는지 이해하도록 도와, 기술이 없는 시스템에 비해 데이터를 찾는 능력을 11.5% 향상시켰습니다. 이러한 개선은 이름이 추측하기 어려울 때만 나타났으며, 이는 추가적인 도움이 어려운 지도를 읽을 때만 필요하다는 것을 보여주었습니다.
연구진은 시스템이 진정으로 안전한지 확인하기 위해, 사용자가 AI를 속여 모든 비밀 테이블을 나열하도록 시도하는 공격을 시뮬레이션했습니다. 기존 시스템에서는 이러한 공격이 약 절반 정도 성공하여 숨겨진 데이터베이스 구조의 상당 부분을 드러냈습니다. 새로운 시스템에서는 이러한 공격이 완전히 실패했습니다. AI는 비밀 테이블을 본 적이 없었기에 그것들을 나열할 수 없었습니다. 유출된 유일한 정보는 시스템의 일반적인 지침에 우연히 등장하는 공통 단어들이었을 뿐, 실제 데이터베이스의 비밀은 아니었습니다. 이는 새로운 방법이 공격자가 데이터베이스를 파악하기 위해 사용하는 경로를 효과적으로 차단한다는 것을 확인시켜 주었습니다.
연구진은 자신들의 솔루션이 강력한 진전이지만 완전한 해결책은 아니라는 점을 인정합니다. 이 방법은 AI가 봐서는 안 될 비밀을 보는 것은 방지하지만, 공공 지식을 바탕으로 비밀을 추측하거나 에러 메시지를 통해 숨겨진 데이터를 유추하려는 공격자를 막을 수는 없습니다. 이러한 이유로, 새로운 방법은 기존의 보안 점검을 대체하는 것이 아니라 기존의 보안 점검과 함께 작동하도록 설계되었습니다. AI가 애초에 데이터베이스의 금지된 부분을 보지 못하게 함으로써, 시스템은 주요 취약점을 제거합니다. 이는 AI가 사용자가 볼 수 있는 범위 내에서만 작업할 수 있는 경계를 만들어, 민감한 정보를 보호해야 하는 조직들에게 훨씬 더 안전한 프로세스를 제공합니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.