Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

데이터베이스 보안의 핵심 원칙 5가지 완벽 정리

데이터베이스 보안이란?

데이터베이스 보안(Database Security)은 데이터베이스 또는 데이터베이스 관리 시스템(DBMS)을 무단 사용, 악성 사이버 위협 및 공격으로부터 보호하고 안전하게 유지하기 위해 적용되는 일련의 조치 전반을 의미합니다. 기업의 핵심 자산인 데이터를 지키기 위해서는 다음과 같은 다섯 가지 핵심 원칙을 이해하고 적용하는 것이 중요합니다.

1. 보안 모델(Security Model)

보안 모델은 일반적인 보안 문제를 검토하기 위한 외부적 틀을 만들어 주는 역할을 합니다. 이를 통해 구현 방식이나 운영 환경 등 데이터베이스 관련 사항들을 고려할 수 있는 체계적인 맥락이 마련됩니다. 즉, 보안 모델은 데이터베이스 보안 설계의 이론적 기반이 되는 요소입니다.

2. 접근 제어(Access Control)

접근 제어의 목표는 항상 명확해야 합니다. 접근 제어는 분석 비용, 모델링 비용, 운영 비용 측면에서 상당한 비용이 수반되므로, 알려진 상황과 표준에 따라 명확한 목적을 달성하기 위해 신중하게 활용되어야 합니다.

3. 인증(Authentication)

인증은 클라이언트가 서버의 신원을 확인하고, 서버도 클라이언트의 신원을 확인하는 상호 검증 과정입니다. 이는 공유된 비밀 정보(비밀번호와 사용자 ID 조합, 생체 정보 등)를 통해 수행되거나, 이미 인증 절차를 확립한 상위 권한 시스템에 의해 이루어질 수 있습니다.

데이터가 분산되어 있는 클라이언트-서버 시스템에서는 피어(peer) 시스템 간의 인증만으로 충분할 수 있습니다. 다만 인증 자체는 특정 작업에 대한 권한을 부여하지 않습니다. 인증은 DBMS가 해당 사용자가 주장하는 신원을 신뢰하고, 사용자 역시 DBMS가 사전에 정해진 시스템임을 신뢰한다는 것만을 보장합니다.

4. 권한 부여(Authorisation)

권한 부여는 인증된 사용자에게 특정 트랜잭션을 수행할 수 있는 허가를 부여하는 것을 의미합니다. 여기에는 데이터베이스의 상태를 변경하는 쓰기(write-item) 트랜잭션과 데이터베이스로부터 정보를 조회하는 읽기(read-item) 트랜잭션이 포함됩니다.

권한 부여는 트랜잭션 단위로 관리되어야 하며, 그 결과는 '권한 벡터(item, auth-id, operation)' 형태로 표현됩니다. 벡터란 시스템 내 특정 영역에 저장된 일련의 데이터 값들을 뜻합니다.

논리적인 수준에서 시스템 구조는 권한 부여 서버(authorisation server)를 필요로 하며, 이 서버는 감사(auditing) 서버와 협력하여 동작해야 합니다. 이 과정에서 서버 간 보안 문제와 증폭(amplification) 문제가 발생할 수 있습니다. 증폭이란 트랜잭션에 더 많은 DBMS 서버가 관여할수록 보안 문제가 커지는 현상을 말합니다.

5. 접근 철학 및 관리(Access Philosophies and Management)

임의적 접근 제어(Discretionary Control)는 특정 자원에 대해 명확한 권한을 설정하고, 인증된 사용자가 지정된 방식으로만 해당 자원을 사용하도록 하는 방식입니다. 보안 DBMS는 관계(relation), 데이터, 뷰(view) 같은 객체와 각 사용자별 연산을 매핑한 접근 행렬(access matrix)을 생성해야 하며, 각 항목에는 생성(create), 읽기(read), 삽입(insert), 수정(update) 권한이 구분되어 기록됩니다.

그러나 객체마다 권한 설정이 달라지면서 이 행렬은 매우 복잡해질 수 있습니다. 또한 행렬의 크기가 지나치게 커져 희소 행렬(sparse matrix) 형태의 물리적 구현이 필요한 경우가 많으며, 컴퓨터의 주 메모리에 행렬 전체를 저장하는 것이 불가능할 수도 있다는 점을 유의해야 합니다.