본문 바로가기

CS?/데이터베이스보안실습

[복습] 데이터베이스 보안 -1

반응형

1. 데이터 베이스 보안 Intro

 

데이터 베이스 보안 쟁점은 다음과 같다.

 -특정 정보에 접근할 수 있는 권한 관련 쟁점

 -어떤 종류의 정보가 공개되지 않아야 하는지에 대한 정책 쟁점

 -보안기능 구현되어야 하는 시스템 수준

 -다수 보안 등급 설정 시, 데이터와 사용자 분류

 

 

데이터 베이스에 대한 위협은 

"무결성(intergrity), 가용성(availability), 기밀성(confidentiality)이라는 보편적으로 인정된 보안목표를 달성하지 못하거나 저하되는 것"을 의미한다.

 

각 보안목표가 상실되었을 경우는 다음을 나타낸다.

무결성 상실 가용성 상실 기밀성 상실

"정보가 부적절한 변경으로부터 보호되어야 한다는 필요 조건을 의미"한다.

즉, 권한 없는 수정 연산이 데이터에 가해지면 무결성이 상실된다.

"특정 데이터 객체들에 정당한(적법한) 권한을 가진 사용자나 프로그램이 접근할 수 없음"을 의미한다.

즉, 적법한 권한을 가진 개체가 데이터에 자유롭게 접근하지 못할 경우를 말한다.

"권한을 갖지 않는 노출로부터 데이터를 보호함"을 의미힌다.

 

 

이러한 위협을 가지고 있는 데이터 베이스 보안은 "통합시스템의 관점"으로 접근해야 한다.

☞데이터 베이스는 여러 서비스와 연결되어 사용되는데, 이 연결된 시스템 연결 중 가장 약한 부분에서 보안 이슈가 생기기 때문이다.

 

 

따라서, 데이터 베이스 보안 위협들에 대해 

접근제어, 추론제어, 흐름제어, 암호화의 방법으로 제어 수단을 시행하는 것이 보편적인 보호 방법이다.

 

*접근제어: 로그인 과정 통제 위한 사용자 계정과 비밀번호 생성

*추론제어: 통계 정보 검색 위한 DB 접근만 가능

*흐름제어: 정보가 흘러 권한 갖지 않은 사용자에게 정보 가는 것 방지

*암호화: 권한 가진 사용자들에게 복호, 해독 알고리즘 부여

 

 

 

2. 데이터 베이스와 데이터 공개 유형

 

데이터베이스에는 여러 데이터가 있는데, 이 데이터의 중요도는 "데이터 민감도(sensitivity)"에 의해 나눌 수 있다.

 

 

데이터 민감도란 "보호의 필요성을 표시하는 목적으로, 데이터에 부여된 중요성의 척도"를 말한다.

데이터 민감도를 판단할 경우, 대표적인 5가지의 분류 기준이 있다.

 

1) 본질적 민감함

 -데이터 자체 값이 너무 적나라하거나 비밀

 -ex)에이즈 감염 여부

2) 민감한 출처

  -데이터가 어디서부터 온 것인지에 대한 비밀 유지 필요성

  -ex)내부 고발자의 정보

3) 선언된 민감함

 -데이터 소유자가 데이터가 민감한 것이라 선언

4) 민감한 속성이나 레코드

 -특정 속성이나 레코드가 민감한 것으로 선언 

 -ex)학생의 성적 속성

5) 앞서 밝혀진 데이터와 민감한 관계

 -데이터 그 자체로는 민감하지 않음

 -하지만, 다른 데이터가 존재하면 민감해 지는 경우

 

 

이러한 데이터를 가지고 있는 데이터베이스이기에 속성에 대한 접근 허용은 더욱 중요해진다.

접근 허용을 결정하는 중요요인은 다음과 같다.

 -데이터 유효성: 만약 사용자가 하나의 필드를 변경 중이라면, 그 필드에는 접근할 수 없고 볼 수 없게 해야 한다

 -접근 수용성: 데이터는 권한을 가진 사용자들에게만 보여져야 한다

 -인증 보증: 접근을 승인하기 전에 사용자와 관련된 외부 상황(ex. 접속 가능 시간)이 고려될 수 있다.

 

 

 

3. 데이터베이스 보안 기본 접근법

데이터 접근 단계

클라이언트가 데이터베이스에 있는 데이터에 접근하기 위한 과정은 다음과 같다.

 

STEP 1

 -애플리케이션 모듈 내의 지정된 경로로 DB서버 접근

STEP 2 (DB 서버 영역)

 -DB서버 접속 후 계정과 비밀번호로 인증

STEP 3 (프로그램 모듈 영역)

 -DB 연결 이후 호출한 애플리케이션 내 모듈 실행, 저장 프로시저 실행

STEP 4 (DB 객체 영역)

 - 해당 모듈 내의 SQL 구문이 실행되어 DB 내의 데이터에 엑세스

 

여기서 DB 보안 범위에 해당하는 단계는 STEP 4이다.

STEP 2와 STEP 3는 DB 보안 범위에 해당하는 것처럼 보이지만, 외부 애플리케이션으로 구분되어 별도로 관리해야 한다.

 

 

그렇다면 각 영역별 보안 방법은 어떻게 될까?

 

 1)DB 서버 영역

  -IP 기반의 접속 통제

    ☞IP나 MAC 주소를 기반으로 하는 필터링

    ☞접속을 허용할 IP는 필요한 최소 노드만 허용하고 우회 접속 차단

    ☞접속 로그정보 생성해 수시로 모니터링   

  -OS와 DB의 독립화 및 실행 파일 보안

    ☞DBMS는 데이터를 취급하는데 최적화된 운영체제라는 시각 필요

    ☞OS와 DBMS 설치 시 불필요한 기능 최대한 배제하여고 DB 서버에 불필요한 애플케이션 설치 자제(DB 서버에 악의적으로 접근할 수 있는 경로가 추가된다!!)

    ☞DBMS의 직접적인 설정 제어 또는 운영에 필수적인 파일 대상 CHECKSUM 검증해 위변조 감지

  -DB 계정 통제

    ☞DB 서버에서는 하나의 계정을 다수가 공유한다는 문제점

    ☞유저 접속시 고유한 정보를 할당해 특정 프로세스 식별

    ☞접속 실패 로그인 감사를 위한 모니터링 활성화

    공통 할당된 권한 최소화

    악용될 가능성 있는 권한들을 대상을 감사 및 모니터링 활성화

 

 2)프로그램 모듈 영역

  -SQL 코드, SQL을 포함하는 프로시저, 함수나 패키치, 혹은 DB 내의 기능이나 패키지 호출하는 부분

  -공개 범위 및 권한 검증

    ☞유저에게 공개되고 악용될만한 범위 최소화

    ☞유저가 입력할 입력 필드 개수 최소화+입력값 사전 검증 후 실행

    ☞프로그램 모듈 실행 권한 최소화

  -로직 보호

    ☞SQL Injection 방지를 위해 유저 입력값을 SQL 블록 아래에 명시하거나 서브쿼리 방식으로 작성해 SQL 구문 변경 방지

    ☞출력 값이나 필드 개수 최소화

    ☞별도의 안전한 에러메시지 디자인(EX. 에러 내용을 에러 코드로 보여주지 않도록 디자인)

 

 3)DB객체 영역

  -DB내에 생성되는 테이블, 뷰와 같은 객체들의 이름을 지을 때, 이름을 기반으로 추측하기 힘들게 이름 짓기

  -보안을 고려한 스키마 디자인 및 권한 통제

    ☞프로그램 모듈이나 룰을 통해 객체 대상 유저 권한을 지정

    ☞룰 부여 시, 특정 프로그램 모듈 호출에만 활성화 되도록 설계

    ☞스키마 레이어를 작업 종류에 따라 나눠 보안을 고려한 스키마 디자인을 적용

 

 

 

4. 데이터베이스 보안과 데이터베이스 관리자

 

데이터베이스를 관리하는 관리자는 DBA계정을 가진다.

DBA 계정은 다음과 같은 DBA-특권 명령을 할 수 있다.

 

 1) 계정 생성: 사용자가 DBMS에 접근할 수 있는 새로운 계정과 암호 생성

 2) 권한 부여: 특정 계정들에게 특정 권한 부여

 3) 권한 취소: 특정 계정에 부여되었던 특정 권한 취소

 4) 보안 등급 지정: 사용자 계정들의 적절한 보안 허가 등급 지정

 

DBA-특권 명령 중 권한 부여와 권한 취소는 '임의 권한 관리'에 사용되고, 보안 등급 지정은 '강제 권한 관리'를 위해 사용된다.

 

반응형