외로운 Nova의 작업실

정보보안기사 필기 - 35(데이터베이스 보안) 본문

Certification/정보보안기사

정보보안기사 필기 - 35(데이터베이스 보안)

Nova_ 2022. 12. 29. 11:57

- 데이터베이스 기본개념

<키의 유형>

  • 후보키(candidate key) : 키의 특성인 유일성과 최소성을 만족하는 키를 지칭합니다.
  • 슈퍼키(super key) : 유일성을 만족하는 키를 지칭합니다.
  • 기본키(primary key) : 여러개의 후보키중에서 하나를 선정하여 사용하는 것을 지칭합니다.
  • 대체키(alternate key) : 여러개의 후보키 중에서 기본키로 선정ㄷ되고 남은 나머지키를 지칭합니다.
  • 외래키(foreign key) : 어느 한 테이블이 다른 테이블의 기본키를 참조할때, 이 기본키를 외래키라합니다.

 

<무결성의 종류>

  • 키 무결성(key integrity) : 한 테이블에 같은 키값을 가진 값이 있어서는 안됩니다.
  • 개체 무결성(entity integrity) : 기본키에 속해있는 전체 또는 일부가 널값을 가질 수 없습니다.
  • 참조 무결성(referential integrity) : 외래키는 널이거나 다른 테이블의 기본키와 같아야합니다.

 

<트랜젝션>

트랜젝션이란 한꺼번에 모두 수행되어야할 일련의 데이터베이스 연산입니다. 아래는 트랜잭션의 성질입니다.

  • 원자성(atomicity) : 트랜잭션 내의 모든 연산은 반드시 한꺼번에 완료되어야하며 그렇지 못한 경우는 한꺼번에 취소되어야합니다.
  • 일관성(consistency) : 트랜잭션이 성공적으로 완료되면 일관성 있는 데이터베이스 상태로 변환합니다.
  • 격리성(isolation) : 연산의 중간 결과를 다른 트랜잭션이 접근 하지 못합니다.
  • 영속성(durability) : 트랜잭션이 일단 그실행을 성공적으로 완료하면 그 결과는 영원해야합니다.

- 데이터베이스 보안 요구사항

<데이터베이스 보안>

데이터베이스의 데이터에대한 일관성을 저해하는 우발적인 사고등으로부터 보호하는 것으로 보안을 강화하면 해커가 데이터베이스에 접근하더라도 핵심 자산은 암호화되어있기때문에 볼 수 없게됩니다. 따라서 사용자 인증, 접근통제, 데이터베이스 무결성 보장, 감사, 비밀데이터 보호 및 관리등을 해야합니다.

 

<대이터베이스 주요 위협>

  • 애그리게이션(Aggregation, 집성) : 개별적인 여러 소스로부터 민감하지 않은 정보를 수집, 조합하여 민감한 정보를 생성하는 것을 의미합니다. 예를 들어 각 지사의 영업실적을 조합하여 대외비인 회사의 총 매출액을 알아내는 것이 있습니다. 추론에대한 대응책은 있지만 집성에대한 대응책으로 제안된 것은 없습니다.
  • 추론(inference) : 일반적인 데이터로부터 비밀정보를 획득할 수 있는 가능성을 의미합니다. 대응책으로는 polyinstantiation, partition 등이 있습니다.

 

<보안 요구사항>

  • 부적절한 접근 방지 : 승인된 사용자에게만 접근 권한을 부여합니다,
  • 추론방지 : 사용자가 통계적인 데이터값으로부터 개별적인 데이터 항목에대한 정보를 추적할 수 없어야합니다.
  • 무결성 보장 : 데이터를 손상 시킬 수 있는 것으로부터 보호해야합니다.
  • 운영적 무결성 보장 : 트랜잭션의 처리동안 데이터에대한 논리적 일관성을 보장해야합니다.
  • 의미적 무결성 보장 : 데이터에대한 허용값을 통제함으로써 변경 데이터의 논리적 일관성을 보장해야합니다.
  • 감사 기능 : 데이터베이스에대한 모든 접근이 감사 기록을 생성해야합니다.
  • 사용자 인증 : 운영체제에서 수행하는 사용자 인증보다 엄격한 인증이 필요합니다.
  • 기밀성 보장 : 기밀성을 보장해야합니다.

- 데이터베이스 보안 통제

  • 흐름 제어 : 임의의 객체에 포함되어 있는 정보가 명시적으로 혹은 암시적으로 보다 낮은 보호수준의 객체로 이동하는 것으 검사하여 접근 가능한 객체 간의 정보흐름을 조정하는 것입니다.
  • 추론 제어 : 사용자가 Y=f(X)에서 Y를 유도하기위한 X를 찾는 것을 말하며 이를 제어하기위해 비밀정보 은폐, 사용자의 데이터 지식 추적, 통계적 추론공격을 방지하는 데이터위장을 해야합니다.
  • 접근 제어 : 모든 직접적 접근이 보호정책에서 세운 모드와 규칙에따라 움직이게 하는 접근제어로 데이터베이스와 운영체제의 접근제어는 다음과 같은 특징이 있습니다. 운영체제에서는 파일끼리 관련성이 없지만 데이터베이스에서 객체는 상화연관되어있어 하나의 데이터 요소를 읽고 다른 데이터 내용을 결정할 수 있습니다.

<추론 제어 방법>

  • 데이터베이스 설계시 추론 탐지 : 주기적인 데이터베이스 구조 변경 혹은 접근 제어 방식의 변경으로 추론채널을 제거함으로써 추론을 방지합니다.
  • 쿼리 타임 시 추론 탐지 : 쿼리추론 중 추론 채널 위반을 제거하려는 시도, 추론 채널이 탐지되면 쿼리를 거부하거나 변경합니다.

 

<DBMS 보안 통제>

  • SQL 기반의 접근 통제 : SQL에서 접근 권한을 줄 수 있는 GRANT명령어와 접근권한을 업샌느 REVOKE 명령어로 접근을 통제합니다.
GRANT 시스템 권한명 [, 시스템 권한명 ... | 롤명]
TO 유저명 [, 유저명... | 롤명 ... |PUBLIC | [WITH ADMIN OPTION];

- 시스템 권한명 : 부여할 시스템 권한의 이름 
- 롤명 : 권한을 부여할 또는 권한을 받을 롤 (ROLE)의 이름 
- 유저명 : 권한을 부여 받을 유저(User) 이름 
- PUBLIC : 시스템권한, 또는 데이터베이스 역할을 모든 사용자에게 부여할 수 있다. 
- WITH ADMIN OPTION :  권한을 부여 받은 사용자도 부여 받은 권한을 다른 사용자 또는 역할로 부여할 수 있게된다.


SQL>
REVOKE { 권한명 [, 권한명...] ALL}
ON 객체명
FROM {유저명 [, 유저명...] | 롤명(ROLE) | PUBLIC}
  • 뷰 기반의 접근통제 : 뷰란 하나 이상의 기본 테이블로 부터 유도되어 만들어지는 가상 테이블로 데이터의 논리적 독립성을 제공하며 자료에대한 접근제어로 보안을 제공합니다.

 

<DBMS 보안 점검 사항>

  • 디폴트 계정, 패스워드 변경 : 디폴트계정과 패스워드를 변경하거나 삭제해야합니다.
  • DB 패스워드 규칙 강화 : 패스워드 규칙을 강화하여 손쉽게 크래킹 되지 않도록 해야합니다.
  • DBA 권한의 제한 : 일반 계정이 DBA 권한을 부여받지 않도록 주의해야합니다.
  • 보안 패치 적용 : 제품별로 발표된 보안 패치를 적용하여 취약점을 제거해야합니다.
  • 사용하지 않는 계정 삭제 : 불필요한 게정은 삭제해야합니다.
  • 개발자 IP 접근 제한 : 필요에 의해 서버로 접근하는 개발자는 접근 IP를 제한하여 접근 제어를 강화해야합니다.
  • 제품별 취약점 제거 : 이미 알려진 제품별 보안 취약점에대해서 패치나 제2해결책의 적용을 통해 취약점을 제거합니다.
  • 데이터의 암호화 : 사용자 계정의 패스워드가 일방향 암호화 되어있는지 확인합니다.

<데이터베이스 다중보안>

데이터베이스의 다중보안은 세분화 정도에따라 복잡도가 증가합니다. 하지만, 세분화정도를 크게하면 추론을 방지할 수 있습니다. 아래는 세분화될 수 있는 객체들입니다.

  • 전체 데이터베이스
  • 개별 테이블
  • 개별 열
  • 개별 행
  • 개별 요소

<DB 암호화 방법>

DB의 데이터를 암호화할 수 있는 방식은 칼럼암호화 방식과 블록 암호화 방식으로 나눌 수 있습니다. 컬럼 암호화방식은 암,복호화 위치에따라 plug-in , api, hybrid 방식으로 나눌 수 있고, 블록 암호화 방식은 tde, 파일 암호화방식이 있습니다.

  • plug- in : plugin 방식은 암복호화 모듈을 DB서버 내에 설치하거 이곳에서 암복호화를 수행하는 구조로 적용성이 뛰어나지만 암복호화시 db서버의 cpu를 사용하기때문에 부하가 발생할 수 있습니다. 따라서 처리량이 낮은 시스템의 경우 저렴한 비용으로 구축 가능합니다.
  • API : 암복호화모듈을 애플리케이션 서버내에 설치하고 이곳에서 암복호화를 수행하는 구조로 기존에 운영중인 시스템에 적용하기보다 기존 애플리케이션에대한 전면적인 수정이 가능한 경우 적용하면 효과적입니다.
  • HYBRID :  일반적인 SQL 방식으로 API방식으로 최적의 성능을 보장하도록 하고 나머지 대부분은 dB 내의 plug-in 방식을 이용하여 애플리케이션 수정을 최소화하도록 DB서버와 애플리케이션 서버에 각각 설치합니다.
  • TDE 방식 : DBMS 추가기능으로 제공되는 암호화 기능을 이용하여 데이터파일 저장시 암호화하고 파일에 저장된 내용을 메모리영역으로 가져올때 DBMS에 의해 자동으로 복호화되는 방식입니다. DBMS kernel 레벨에서 처리됩니다.
  • 파일 암호화 방식 : 파일 암호화 방식은 OS상에서 확인이 가능한 개체인 파일을 암호화하는 방식입니다. OS에 대한 의존도가 높습니다.

 

- DBMS 보안 관리

<MS-SQL>

응용프로그램을 통해 운영체제의 파일이나 명령을 실행시킬 수 있는 것들이 있는데 대표적으로 MS-SQL의 xp_cmdshell이 있습니다. xp-cmdshell은 데이터베이스를 통해 운영체제의 명령을 실행하고, 파일 등에 접근할 수 있도록 MS-SQL에서 지원하는 확장 저장 프로시저입니다. xp_cmdshell은 MS-SQL 관리자계정에 의해 실해되는데 관리자 계정이 취약한 경우 쉽게 접근 권한이 노출될 수 있습니다.

 

<SQL 인증 종류>

  • window 인증 모드 : window에 등록된 로그인 계정으로 SQL server에 별다른 로그인 절차없이 접속하는 모드입니다.
  • 혼합 인증 모드 : window 인증을 선택하면 현재 window에 로그인한 계정으로 sql server에 로그인한고 sql 인증을 선택하면 sql server에 별도의 로그인 아이디를 지정하여 로그인합니다.

 

<고정 데이터베이스역할>

  • db_owner : 데이터베이스에서 모든 유지 관리 및 구성 작업을 수행합니다.
  • db_accessadmin : 로그인에대한 액세스 권한를 추가하거나 제거합니다.
  • db_datareader : 모든 사용자 테이블의 모든 데이터를 읽기합니다.
  • db_datawriter : 모든 사용자테이블에서 데이터를 추가, 삭제 또는 변경할 수 있습니다.
  • db_ddladmin : 데어터 정의 언어(ddl) 명령을 실행합니다.
  • db_securityadmin : 구성원 자격을 수정하고 사용 권한을 관리합니다.
  • db_backupoperator : 데이터베이스 백업을 수행합니다.
  • db_denydatareader : 데이터베이스에 있는 사용자 테이블의 모든 데이터를 읽기 불가합니다.
  • db_denydatawriter : 모든 테이블이나 뷰의 데이터를 추가 수정 또는 삭제를 불가합니다.

 

 

Comments