DB 무결성의 종류
· 키 무결성(key integrity) : 한 릴레이션에 같은 키 값을 가진 튜플이 있어서는 안 된다.
· 개체 무결성(entity integrity) : 기본키에 속해 있는 전체 또는 일부 애트리뷰트가 널 값을 가질 수 없다는 조건으로, 키 값의 전부 또는 일부가 널이 된다면 튜플을 유일하게 식별할 수 없게 되어 기본키의 정의를 위반하게 된다.
· 참조 무결성(referential integrity)
외래키는 널이거나 참조 릴레이션에 있는 기본키와 같아야 한다.
릴레이션은 참조할 수 없는 외래키값을 가질 수 없다.
트랜잭션(Transaction)
하나의 논리적 기능을 수행하기 위한 작업의 단위이다.
한꺼번에 모두 수행되어야 할 일련의 데이터베이스 연산이다.
병행 제어 및 회복 작업의 논리적 단위이다.
- 트랜잭션의 ACID 성질
① 원자성(Atomicity) : 트랜잭션 내의 모든 연산은 반드시 한꺼번에 완료되어야 하며, 그렇지 못한 경우는 한꺼번에 취소되어야 한다.(all or nothing)
② 일관성(Consistency) : 트랜잭션이 성공적으로 완료되면 일관성 있는 데이터베이스 상태로 변환한다. 단, 프로그램 실행 중의 일관성 위반은 상관없다.
③ 격리성(Isolation) : 트랜잭션이 실행 중에 있는 연산의 중간 결과는 다른 트랜잭션이 접근 못한다.
④ 영속성(Durability) : 트랜잭션이 일단 그 실행을 성공적으로 완료하면 그 결과는 영속적이다. 따라서 시스템은 어떤 경우라도 완료된 결과의 영속성을 보장해야 한다.
데이터베이스 보안 요구사항
데이터베이스 보안
데이터베이스에 저장되어 있는 데이터에 대한 인가되지 않은 접근, 의도적인 데이터의 변경이나 파괴 및 데이터의 일관성을 저해하는 우발적인 사고 등으로부터 데이터 혹은 데이터베이스를 보호하는 것이다.
데이터베이스의 보안을 강화하면 해커가 내부 네트워크에 들어와서 데이터베이스가 유출되었다 하더라도 핵심 자산인 데이터베이스는 암호화되어 있기 때문에 볼 수 없다.
DB 시스템의 보안 요구사항은 일반적인 컴퓨터 시스템의 보안 요구사항과 비슷하며 사용자 인증, 접근통제, DB 무결성 보장, 감사, 비밀 데이터의 보호 및 관리 등이 포함된다.
데이터베이스 보안 위협
사용자가 우연히 혹은 의도적으로 데이터에 접근함으로써 발생될 수 있는 정보의 부적절한 유출, 부적절한 데이터 처리와 수정으로부터 야기되는 데이터의 무결성 손상이 있다.
또한 사용자가 데이터에 접근하거나 자원을 사용하지 못하도록 하는 DoS 공격이 있다.
- Aggregation(집성)
개별적인 여러 소스로부터 민감하지 않은 정보를 수집·조합하여 민감한 정보를 생성한다.
낮은 보안등급의 정보조각을 조합하여 높은 등급의 정보를 알아내는 행위를 의미한다.
추론에 대한 일부 접근방식은 유효하다고 증명되었지만 집성에 대한 대응책으로는 제안된 것이 거의 없다.
- inference(추론)
일반적인 데이터로부터 비밀정보를 획득할 수 있는 가능성을 의미한다.
사용자가 통계적인 데이터 값으로부터 개별적인 데이터 항목에 대한 정보를 추적하지 못하도록 해야 한다.
추론 대응책
· Polyinstantitation(다중사례화) : 낮은 등급자가 레코드 입력 시 높은 등급자가 존재하고 있다는 것을 입력 오류를 통해 확인하는 것을 방지하기 위한 방법이다. 보안 수준을 갖지 않은 엔티티에게 거짓 정보를 제공하는 방법이다.
· Partition
· Cell suppression
· Noise
· Perturbation
데이터베이스 보안통제
데이터베이스 보호는 흐름제어, 추론제어, 접근제어에 대한 보안측정을 통해 이루어질 수 있다.
여기에 비밀 암호화키로 저장 데이터를 암호화하는 암호기법을 첨가하면 권한 사용자만이 데이터를 볼 수 있게 되므로 정보의 비밀성을 보장할 수 있다.
흐름제어
객체 X의 값을 읽어 이를 객체 Y에 기록할 때 객체 X와 객체 Y 간에 정보흐름이 발생하게 된다.
임의의 객체에 포함되어 있는 정보가 명시적으로 혹은 암시적으로 보다 낮은 보호수준의 객체로 이동하는 것을 검사하여 접근가능한 객체 안의 정보흐름을 조정하는 것이 흐름제어다.
추론제어
데이터 사용자가 읽은 데이터 항목 X가 X에 대한 함수 f를 적용하는 Y=f(X)인 데이터 Y를 얻기 위하여 사용된다면 추론이 발생하게 되는데, 추론제어는 이러한 간접적인 데이터 노출로부터 데이터를 보호하기 위한 것이다.
사용자가 Y=f(X)인 Y를 유도하기 위하여 X를 찾는 채널인 추론채널에는 간접 접근, 상관 데이터, 미싱 데이터가 있다.
추론제어 방법
· 비밀정보의 은폐
· 모든 사용자에 대한 정보를 유지하며 사용자가 갖고 있는 데이터를 고려하여 질의 허용여부를 결정하는 사용자의 데이터 지식 추적
· 데이터베이스의 사용자에게 부정확한 혹은 일관성이 없는 질의결과를 제공함으로써 통계적 추론공격을 방지하는 데이터 위장
접근제어
시스템 객체에 대한 모든 직접적 접근이 보호정책에서 세운 모드와 규칙에 따라 상호 배타적이게 하는 것이 정보시스템에서 접근제어이다.
데이터베이스의 접근통제는 운영체제의 접근통제와 유사하나 실질적으로는 보다 복잡하다.
· 운영체제의 객체는 다른 객체와 관련성이 없어 운영체제 사용자는 하나의 파일을 읽고 다른 파일의 내용을 결정할 수 없다.
· 데이터베이스의 객체는 상호 관련되어 있어 데이터베이스 사용자는 하나의 데이터 요소를 읽고 다른 데이터의 내용을 결정할 수 있으며 객체의 크기도 상이하다.
추론과 통계적 데이터베이스
데이터베이스 보안에 관련해서 추론은 인가된 쿼리 수행과 합법적 응답을 통해 비인가된 정보를 추론하는 것이다.
추론 문제는 많은 데이터 아이템의 조합이 개별 아이템보다 민감하거나 데이터 아이템들의 조합이 보다 민감한 데이터를 추론하는데 사용될 수 있을 때 발생한다.
· 데이터베이스 설계 시 추론 탐지 : 데이터베이스 구조 변경 혹은 접근 제어 방식의 변경으로 추론채널을 제거함으로써 추론을 방지
· 쿼리 타임 시 추론 탐지 : 쿼리처리 중 추론 채널 위반을 제거하려는 시도, 추론 채널이 탐지되면 쿼리를 거부하거나 변경
DBMS 보안 통제
SQL 기반의 접근 통제(GRANT/REVOKE 접근 통제)
통상 DBA가 권한을 가지므로 DBA 권한이라 하는데, 다른 사용자에게 권한을 부여하거나 회수할 때 사용한다.
SQL은 GRANT와 REVOKE라는 접근 권한 관리 명령어를 제공한다.
뷰 기반의 접근통제
뷰는 하나 이상의 기본 테이블로부터 유도되어 만들어지는 가상 테이블이다.
뷰의 내용은 실제로 존재하는 것이 아니라 뷰에 대한 조작 요구 시마다 기본 테이블의 데이터를 이용하여 그 내용을 만들게 된다. 즉, 뷰는 실행시간에만 구체화되는 특수한 테이블이다.
데이터베이스의 선별된 부분만 표시하여 사용권한을 다양하게 설정할 수 있다. 뷰에 대한 권한 설정은 테이블에 대한 권한 설정과 같다.
뷰는 데이터의 논리적 독립성을 제공하며, 자료에 대한 접근제어로 보안을 제공한다.
DBMS 보안 점검 사항
구분 | 내용 |
디폴트 계정 패스워드 변경 |
DBMS 엔진이 설치되고 적용된 디폴트 계정은 해커의 손쉬운 공격 수단으로 악용되므로 반드시 패스워드를 변경하거나 계정을 삭제함 |
DB 패스워드 규칙 강화 | 디폴트 계정이나 일반 계정을 생성할 때는 패스워드 규칙을 강화하여 손쉽게 크래킹되지 않도록 해야 함 |
DBA 권한의 제한 | 일반 계정이 DBA 권한을 부여받지 않도록 주의해야 함 |
보안 패치 적용 | 제품별로 발표된 보안 패치를 적용하여 취약점을 제거해야 함 |
데이터베이스 보안
데이터베이스 보안과 다중 수준 보안
데이터베이스에서 다중 수준 보안(MLS)을 추가하면 접근 제어 기능 및 데이터베이스 자체의 설계에서 복잡도가 증가한다. 주요 이슈는 세분화 정도(granularity)이다.
분류의 세분화 정도의 관점에서 다중 수준 보안을 RDBMS에 적용하는 방법은 아래와 같다.
· 전체 DB
· 개별 테이블(관계)
· 개별 열(속성)
· 개별 행(튜플)
· 개별 요소
분류의 세분화 정도는 접근 제어를 시행하는 방법에 영향을 준다. 특히 추론을 방지하는 노력은 분류의 세분화 정도에 달려 있다.
DB 암호화 방법
DB의 데이터를 암호화할 수 있는 방식은 일반적으로 컬럼 암호화 방식과 블록 암호화 방식으로 나눌 수 있다.
컬럼 암호화 방식은 암·복호화 위치에 따라 Plug-In, API 및 혼합 방식인 Hybrid 등의 방식이 있고, 블록 방식은 TDE, 파일 암호화 등이 있다.
- Plug-In 방식
암·복호화 모듈이 DB 서버에 설치되고 DBMS에 플러그인으로 연결된 암·복호화 모듈을 호출하는 방식이다.
응용프로그램의 수정이 거의 필요하지 않아 구현 용이성이 뛰어나지만 기존 DB 스키마와 대응하는 뷰를 생성하고 암호화할 테이블을 추가하는 작업이 필요하다.
애플리케이션 서버의 성능에는 영향을 주지 않지만 DBMS에서 DB 서버의 암·복호화 모듈을 플러그인으로 호출할 때 추가적인 부하가 발생하여 성능이 저하될 수 있다.
- API 방식
암·복호화 모듈이 API 라이브러리 형태로 각 애플리케이션 서버에 설치되고 응용프로그램에서 암·복호화 모듈을 호출하는 방식이다.
DB 서버에는 영향을 주지 않지만 애플리케이션 서버에 암·복호화를 위한 추가적인 부하가 발생하며 구축 시 응용프로그램 전체 또는 일부 수정이 필요하다. 추가적으로 애플리케이션 서버와 DB 서버 간의 통신에서 암호화된 정보의 전송을 보장할 수 있다.
API 방식의 DB 암호화 기술 도입은 기존에 운영 중인 시스템에 적용하기보다 차세대 시스템 개발 등 기존 애플리케이션에 대한 전면적인 수정이 가능한 경우 적용하면 효과적이다.
- Hybrid 방식
플러그인 방식의 단점인 배치 엄무의 성능 저하를 보완하기 위해 API 방식을 이용하는 구성이다.
일반적으로는 SQL은 API 방식을 이용하여 최적의 성능을 보장하도록 하고, 나머지 대부분은 DB내의 플러그인 방식을 이용하여 애플리케이션 수정을 최소화하도록 암·복호화 모듈을 DB 서버와 애플리케이션 서버에 설치한다.
- TDE 방식
DBMS에 내장되어 있는 암호화 기능(TDE, Transparent Data Encryption)을 이용하여 암·복호화 처리를 수행하는 방식이다.
DBMS 커널 수준에서 처리되므로 기존 응용프로그램의 수정이나 DB 스키마의 변경이 거의 필요하지 않고 DBMS 엔진에 최적화된 성능을 제공할 수 있다.
- 파일 암호화 방식(운영체제 암호화 방식)
파일 암호화 방식은 OS상에서 확인이 가능한 개체인 파일을 암호화하는 방식이다.
OS에 대한 의존도가 높으나, 파일에 대해 직접적으로 암호화를 수행하므로 DB 데이터 파일 뿐 아니라 로그파일, 이미지파일, 음성/영상 등의 비정형 데이터에 대한 암호화 적용이 가능하다.
DBMS 보안 관리
MS-SQL
응용 프로그램 중에는 해당 응용 프로그램을 통해 운영체제의 파일이나 명령을 실행시킬 수 있는 것이 있다. 대표적으로 MS-SQL의 xp_cmdshell이 있다.
xp_cmdshell은 데이터베이스를 통해 운영체제의 명령을 실행하고, 파일 등에 접근할 수 있도록 MS-SQL에서 지원하는 확장 저장 프로시저이다.
xp_cmdshell은 MS-SQL 관리자 계정(sa)에 의해 실행되는데, MS-SQL의 관리자 계정 패스워드가 취약한 경우 데이터베이스에 대한 권한뿐만 아니라 운영체제에 대한 접근 권한도 노출될 수 있다.
- 인증
· Windows 인증 모드
SQL Server의 기본 인증 모드이다. Windows 사용자 계정을 이용한 인증 방식으로 SQL Server가 설치된 해당 시스템 또는 도메인 환경 내부에서 접속하는 경우에 사용한다.
Windows 사용자 또는 그룹에 따라 SQL Server에 대한 액세스를 부여한다.
SQL Server 인증을 추가로 이용하는 경우 관리 지점이 늘어나고 도메인 외에서 접근이 가능한 만큼 보안사고의 가능성도 커지기 때문에 꼭 SQL Server 인증을 사용해야 하는 경우가 아니라면 Windows 인증방식을 사용하는 것이 권장된다.
· 혼합 인증 모드
Windows 인증과 SQL Server 인증을 혼용하여 사용한다.
Windows 인증을 선택하면 현재 Windows에 로그인한 계정으로 SQL Server에 로그인 하고, SQL 인증을 선택하면 SQL Server에 별도의 로그인 아이디를 지정하여 로그인한다.
'정보보안기사' 카테고리의 다른 글
침해사고대응(디지털 포렌식) (0) | 2023.05.15 |
---|---|
전자상거래 보안 (1) | 2023.05.13 |
DHCP와 DNS 보안 (1) | 2023.05.09 |
웹 보안(Web Security) - 2 (0) | 2023.05.07 |
웹 보안(Web Security) - 1 (0) | 2023.05.05 |