완전한 데이터베이스 접근 제어와 보안
초록
본 논문은 기존 SQL 접근 제어가 뷰, 트리거, 무결성 제약 등 고급 기능을 통해 발생하는 기밀성·무결성 침해를 방지하지 못한다는 점을 지적하고, 공격자 모델과 보안 정의를 정형화한 뒤, 모든 알려진 공격을 차단하는 형식 검증된 접근 제어 메커니즘을 제안한다.
상세 분석
이 논문은 데이터베이스 보안 연구에서 가장 근본적인 두 가지 결함을 지적한다. 첫째, 기존 SQL 표준과 상용 DBMS가 제공하는 접근 제어 규칙은 ‘SELECT‑only’ 공격자를 전제로 설계돼 있어, INSERT·DELETE·GRANT·REVOKE와 같은 데이터 변경 명령이나 트리거·뷰·무결성 제약과 같은 고급 기능을 악용하는 공격을 고려하지 않는다. 둘째, 보안 속성을 정의하는 공식적인 프레임워크가 부재해, 구현된 메커니즘이 실제로 어떤 보안 목표를 만족하는지 검증할 방법이 없다.
논문은 이를 해결하기 위해 세 가지 핵심 기여를 제시한다.
- 운영 의미론: 관계형 연산자와 함께 트리거, 뷰, 무결성 제약을 포함한 전체 SQL 서브셋을 정형화한다. 이 의미론은 데이터베이스 상태와 정책 변화, 그리고 명령 실행 시 발생하는 부수 효과를 모두 모델링한다. 기존 연구가 정적 스키마 수준에 머물렀던 것과 달리, 동적 실행 흐름까지 포괄한다.
- 공격자 모델: 공격자는 SELECT뿐 아니라 INSERT, DELETE, GRANT, REVOKE를 자유롭게 사용할 수 있으며, 시스템에 존재하는 트리거·뷰·제약의 정의를 사전에 알고 있다고 가정한다. 이러한 모델은 기존 ‘SELECT‑only’ 모델을 완전히 포함한다. 논문은 이 모델을 Maude 기반의 실행 가능한 시뮬레이터로 구현해, 실제 DBMS와 동일한 공격 시나리오를 재현한다.
- 보안 정의: ‘데이터 무결성’과 ‘데이터 기밀성’ 두 가지 속성을 수학적으로 정의한다. 무결성은 권한이 없는 사용자가 데이터·정책을 변경하지 못하도록, 기밀성은 권한이 없는 사용자가 어떤 쿼리·트리거·제약을 통해서도 민감 정보를 유추하지 못하도록 보장한다. 두 정의는 논문에서 제시한 다섯 가지 실제 공격(트리거 권한 상승, 뷰 권한 위임, REVOKE 전파 오류, 무결성 제약 기반 정보 유출, 트리거 기반 정보 유출)과 직접 연결된다.
이후 논문은 제안된 프레임워크를 이용해 형식 검증된 접근 제어 메커니즘을 설계한다. 핵심 아이디어는 모든 권한 부여·취소·트리거·뷰 생성 작업을 정책 엔진이 사전에 검증하도록 하는 것이다. 정책 엔진은 운영 의미론에 기반해 명령이 실행될 경우 발생할 수 있는 모든 파생 권한 변화를 추론하고, 정의된 보안 속성을 위배하면 명령을 거부한다. 이렇게 하면 공격자가 트리거를 이용해 다른 사용자의 권한으로 명령을 실행하거나, REVOKE 후에도 남은 권한을 재활성화하는 상황을 원천 차단한다.
실험 결과, 제안된 메커니즘은 IBM DB2, Oracle, PostgreSQL, MySQL, SQL Server, Firebird 등 주요 상용·오픈소스 DBMS에서 재현된 다섯 가지 공격을 모두 방어한다. 기존 시스템이 일부 공격만 막을 수 있었던 반면, 새로운 메커니즘은 정의된 보안 속성을 만족함을 형식적으로 증명한다. 또한, Maude 기반 시뮬레이터를 통해 정책 검증 비용이 실용적인 수준임을 보여준다.
이 논문은 데이터베이스 보안 분야에 공격자 모델·보안 정의·형식 검증 메커니즘이라는 세 축을 동시에 제공함으로써, 기존의 경험적·비형식적 접근 방식을 근본적으로 전환한다는 점에서 의의가 크다. 특히, 트리거·뷰·제약과 같은 고급 SQL 기능을 정형화하고, 이를 포함한 전체 시스템 동작을 검증 가능한 정책 엔진에 통합한 접근 방식은 향후 DBMS 설계와 표준화 작업에 중요한 참고 자료가 될 것이다.
댓글 및 학술 토론
Loading comments...
의견 남기기