분석 에이전트의 권한은 잘못된 프롬프트에도 살아남아야 한다
요약
본 글은 분석 에이전트의 권한 관리와 보안 경계에 대해 다룹니다. 특히, 적대적인 프롬프트에도 민감 정보가 노출되지 않도록 시스템 레벨에서 강력하게 통제하는 방법을 제시합니다. Databricks 기반의 MerchantLens 아키텍처를 예시로 들며, 쿼리 엔진과 Unity Catalog를 활용한 권한 부여(Authorization)의 중요성을 강조합니다.
핵심 포인트
- 에이전트의 보안은 프롬프트가 아닌 시스템/데이터베이스 레벨에서 통제되어야 합니다.
- Unity Catalog는 열 마스크와 행 필터를 적용하여 데이터 접근을 제한하는 핵심 역할을 수행합니다.
- 권한 부여(Authorization)를 신원(Identity)과 분리하고, 실제 주체 하에 테스트해야 합니다.
- 메트릭 정의는 시맨틱 레이어에서 명시적으로 공유되어야 일관성을 유지할 수 있습니다.
분석 에이전트가 적대적인 지침을 받습니다: 모든 고객의 마스크되지 않은 결제 식별자를 반환하라.
핵심 질문은 모델이 그 지침을 따르기로 결정하더라도 시스템이 해당 에이전트에게 읽게 허용하는 것이 무엇인가입니다.
제가 탐구하고 있는 경계가 바로 MerchantLens이며, 이곳은 Databricks, Delta 테이블 및 Unity Catalog로 구축된 머천트 분석 레이크하우스입니다.
데모는 합성 결제 데이터를 사용합니다. 프로젝트에는 실제 카드 소유자 데이터가 없습니다.
쿼리 경로에 호출자의 신원을 포함시키기
MerchantLens는 Bronze, Silver 및 Gold 계층을 통해 데이터를 이동시킵니다. 에이전트는 라이브 카탈로그 메타데이터를 검색하고 도구를 사용하여 지표 또는 SQL을 쿼리합니다.
에이전트는 자체 서비스 주체(service principal) 하에서 실행됩니다. Unity Catalog는 해당 주체를 위해 열 마스크와 행 필터를 적용한 후 쿼리 결과를 반환합니다.
README에는 동일한 SQL을 두 개의 주체(principal)를 사용하여 비교하는 내용이 포함되어 있습니다: 분석가는 더 광범위한 데이터 세트를 보는 반면, 에이전트는 제한된 영역과 마스크된 식별자를 보게 됩니다. 권한 부여 결정은 쿼리 엔진에 속합니다.
신뢰성 제어와 권한 부여를 분리하기
프로젝트에는 여러 계층이 있습니다:
| 계층 | 목적 |
|---|---|
| 인증된 지표 (Certified metrics) | 정의와 세분성을 일관되게 유지 |
| ... | |
| 데모의 앞 두 가지는 에이전트의 동작을 제어하는 데 도움이 됩니다. 카탈로그 정책은 데이터 액세스를 강제합니다. |
하지만 이것이 전체 애플리케이션을 공격으로부터 면역으로 만드는 것은 아닙니다. 보호는 올바르게 구성된 신원, 권한(grants), 마스크 및 필터에 달려 있으며, 모든 쿼리가 의도된 주체를 사용해야 합니다.
보호되는 테이블 테스트하기
저장소에 문서화된 실용적인 교훈 중 하나는: 멤버십 표현식(membership expression)만 확인하는 것은 마스크가 무엇을 하는지에 대해 오해를 불러일으킬 수 있다는 것입니다.
더 나은 증명은 실제 신원 하에서 보호되는 테이블을 테스트하는 것입니다. 어떤 행과 값이 반환되는지 묻고, 그 결과를 의도된 권한 부여와 비교합니다.
해당 저장소는 또한 새로운 서비스 주체(service principals)에 대한 주변 권한 부여(ambient grants)도 문서화합니다. 새로운 신원(identity)을 생성하는 것이 자동으로 기본 거부(deny-by-default) 설정이 되는 것은 아닙니다.
메트릭 정의에도 경계가 필요하다
MerchantLens는 차지백(chargebacks)을 원본 거래가 발생한 달에 부과합니다. 차지백이 개설된 날짜를 사용하면 분쟁이 나중에 도착하기 때문에 명시적인 사고 기간이 여러 달에 걸쳐 이동할 수 있습니다.
그러한 정의는 대시보드와 에이전트가 동일한 메트릭을 사용할 수 있도록 시맨틱 레이어(semantic layer)에 속해야 합니다. 올바른 권한 부여만으로는 일관되지 않은 분모(denominator)나 시간 정의를 보상할 수 없습니다.
검토 체크리스트
에이전트에게 웨어하우스 도구(warehouse tool)를 제공하기 전에, 저는 다음과 같은 질문을 할 것입니다:
- 쿼리를 실행하는 주체는 무엇인가?
- 다른 테이블이나 권한 부여를 통해 제한된 열(restricted columns)을 검색할 수 있는가?
- 보호된 테이블의 결과는 해당 주체를 사용하여 테스트되는가?
- 도구 호출은 에이전트가 수정할 수 없는 어딘가에 기록되는가?
- 메트릭 정의는 명시적이며 공유되는가?
분석 에이전트의 접근 제어는 프롬프트, 애플리케이션, 데이터베이스 중 어디에서 실행되는가?
공개 프로젝트 문서를 기반으로 AI가 초안 작성함. 데모 관찰은 저장소에 보고된 것이며, 새로운 검증 실행이 아님.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기