학교수업/데이터베이스

데이터베이스 보안 - 2주차. 데이터베이스 관리 시스템 (DBMS)

정보보호학과 새내기 2025. 4. 12. 13:20

(세종대학교) 데이터베이스 보안 - 수업 정리 내용

2.1. 데이터베이스 시스템 환경

2.1.1. 데이터베이스 관리 시스템

  • DataBase Management System (DBMS)
    • 데이터베이스를 관리하고 사용자의 데이터 처리 요구를 수행하는 시스템
  • 다양한 관점의 사용자가 보낸 DDL, DML, DCL 처리해서 데이터베이스에 접근

  • DBMS 구성 모듈
    • 데이터 정의어 컴파일러
      • 데이터 정의어로 작성된 스키마 정의 해석
      • 저장 데이터 관리자의 도움을 받아 새로운 데이터베이스 구축 및 스키마의 정의를 데이터 사전에 저장
    • 데이터 조작어 프리컴파일러
      • 응용 프로그램에 삽입된 데이터 조작어를 추출하여 DML 컴파일러에 전달
        • 관련 없는 코드는 해당 언어의 컴파일러로 전달
    • 데이터 조작어 컴파일러
      • 데이터 조작어로 작성된 데이터 처리 요ㅛ구를 분석하여 런타임 데이터 베이스 처리기가 이해할 수 있도록 해석
    • 런타임 데이터베이스 처리기
      • 저장 데이터 관리를 통해 데이터베이스에 접근하여 DML 컴파일러부터 전달받은 데이터 처리 요구를 데이터베이스에 실제로 실행
    • 트랜젝션 관리자
      • 데이터베이스에 접근하는 과정에서 사용자의 접근 권한 유효 여부 검사
      • 데이터베이스의 무결성 유지를 위한 제약조건 위반 여부 확인
    • 저장 데이터 관리자
      • 디스크에 저장되어 있는 데이터베이스와 데이터 사전 관리 및 접근 (운영체제 영역)
    • 데이터 사전
      • 데이터베이스에 저장되는 데이터에 관한 정보 저장 공간
      • 시스템 카탈로그
      • 스키마, 스키마 간의 매핑 정보, 제약조건 등을 저장
      • 데이터에 대한 데이터 → 메타 데이터
      • 데이터 사전 : 시스템 데이터 베이스 ↔ 일반 데이터베이스 : 사용자 데이터베이스

2.1.2. 데이터베이스 시스템 유틸리티

  • 적재
    • 기존의 데이터 파일들을 데이터베이스에 적재하기 위해 사용
      • 파일 형식 자동 변환 및 저장
    • 변환도구 : 기존의 데이터베이스와 새 데이터베이스의 저장상태(내부 스키마) 정보가 주어지면 적절한 적재 프로그램 생성
  • 백업
    • 데이터베이스 전체 또는 일부를 대용량 저장 매체에 복사해서 데이터베이스의 사본 생성
      • 데이터베이스 복구 목적
  • 파일 재조직
    • 성능을 향상시키기 위해 데이터베이스 파일들의 구조를 다른 파일 구조로 재조직하고 새로운 접근 경로 생성
  • 성능 모니터링
    • 데이터베이스 사용을 모니터링하여 데이터 베이스 관리자에게 사용 통계 제공
      • 데이터베이스 관리자는 통계에 근거하여 성능 향상을 위한 여러 결정 가능
  • 기타 기능
    • 파일정렬
    • 데이터 압축
    • 사용자 접근 모니터링
    • 네트워크와의 인터페이스

2.2. DBMS 개요

2.2.1. 데이터베이스 관리 시스템 (DBMS)

  • 개념
    • 파일 시스템의 데이터 중복과 데이터 종속 문제 해결을 위해 제시된 소프트웨어
    • 조직에 필요한 데이터를 데이터베이스에 통합하여 저장 및 관리
    • 응용 프로그램을 대신하여 데이터베이스에 들어 있는 데이터를 삽입,삭제,수정,검색
    • 모든 응용 프로그램이 데이터 베이스를 공유할 수 있게 하는 역할
  • 장점
    • 데이터 중복 통제
      • 기존 파일 시스템의 문제점 해결
      • 데이터 통합 관리로 일관성 유지
    • 데이터 동시 공유
      • 여러 응용 프로그램이 동일 데이터에 동시 접근할 수 있도록 지원
        • 동일한 데이터를 각 프로그램의 요구에 맞게 다양한 구조로 제공
        • 불필요한 데이터 중복 제한
    • 데이터 보안 향상
      • 기존 파일 시스템의 단점 해결
        • 중복된 파일 보안 유지 어려움, 파일 단위 사용 권한 제한됨
      • 중앙 집중식 데이터 관리로 효율적 접근 제어 가능
        • 권한 없는 사용자의 접근, 허용되지 않은 데이터와 연산에 대한 요청 사전 차단 가능
        • 사용자별 접근 가능한 데이터베이스 영역 차별화 가능
    • 데이터 무결성 유지
      • 무결성 : 저장된 데이터 값의 정확성
      • 데이터 연산이 수행될 때마다 유효성 검사하여 데이터 무결성 유지
    • 장애 발생 시 회복 가능
      • 일관성과 무결성 유지하면서 복구 기능 지원
  • 단점
    • 많은 비용 발생
      • 따로 설치해야하므로 별도 비용 발생
      • 동시 사용자 수에 따라 가격 증가
      • 무료 DBMS와 기능적 차이 존재
    • 복잡한 백업과 회복 방법
      • 방대한 양과 복잡한 구조 및 동시 공유 기능 지원하는 데이터베이스 특성으로 장애 발생 시, 정확한 원인 및 상태 파악 어려움
    • 중앙 집중 관리로 인한 취약점
      • DBMS 장애 발생시 전체 시스템 업무 중단

2.2.2. DBMS 발전 과정

  • 1세대
    • 네트워크 DBMS
      • 데이터베이스를 노드와 간선을 이용한 그래프 형태로 구성
        • 구조가 복잡하고 변경 어려움
      • ex) IDS
    • 계층 DBMS
      • 데이터베이스를 트리 형태로 구성
      • 네트워크 DBMS보다 구조 단순
        • 복잡현 현실 관계를, 부모-자식 트리로만 구성하기 어려움, 구조 변경 어려움
      • ex) IMS
  • 2세대
    • 관계 DBMS
      • 테이블 형태로 구성
      • 1980년대부터 현재까지 사용
      • ex) 오라클, MS SQL 서버, 액세스, 인포믹스, MySQL, 마리아DB 등
  • 3세대
    • 객체지향 DBMS
      • 1980년대 후반 등장
        • 객체 개념 이용해 데이터베이스 구성
          • 새로운 유형의 데이터 저장 및 분석 처리 지원
        • ex) 오투, 온투스, 젬스톤
    • 객체관계 DBMS
      • 관계 데이터 모델에 객체지향 개념 도입한 객체관계 데이터 모델
  • 4세대
    • NoSQL (Not Only SQL) DBMS
      • 비정형 데이터 저장 및 처리에 접합
        • 안정성과 일관성 유지를 위한 기능 포기
        • 데이터 구조 미리 정하지 않음
      • 뛰어난 확장성
        • 여러 대의 컴퓨터에 분산하여 저장 및 처리
      • ex) 몽고DB, H베이스, 카산드라, 레디스 등
    • NewSQL DBMS 등장 배경
      • NoSQL DBMS가 관계 DBMS를 대첸ㄴ 불가능
      • 관계 DBMS가 제공하는 안정성과 일관성 중시
      • 정형 데이터의 비율 높음
        • 정형 데이터와 비정형 데이터 처리를 위해 두 가지 DBMS 도입 부담
      • 관계 DBMS + No SQL DBMS
      • ex) 구글 스패너, 볼트 DB, 누오DB

2.3. 데이터베이스 사용자 및 DBMS 기능

2.3.1. 데이터베이스 사용자

  • 사용자
    • 데이터베이스를 이용하기 위해 접근하는 모든 사람
    • 데이터베이스 관리자, 최종 사용자, 응용 프로그래머
  • 데이터베이스 관리자 (DBA)
    • Database Administrator
    • 데이터베이스 운영, 관리 책임
    • 주요 업무
      • 데이터베이스 구성 요소 선정
        • 사용자의 요구사항 분석 및 데이터베이스로 구성할 데이터 결정
      • 데이터베이스 스키마 정의
        • 스키마 설계 및 DDL 통해 DBMS에 구현
      • 물리적 저장 구조와 접근 방법 결정
        • 레코드 구조 설계
      • 무결성 유지를 위한 제약조건 정의
      • 보안 및 접근 권한 정책 결정
      • 백업 및 회복 기법 정의
      • 시스템 데이터베이스 관리 (데이터 사전 등)
      • 시스템 서능 감시 및 성능 분석
      • 데이터베이스 재구성
        • 사용자의 요구/사용 형태 달라지는 경우, 향상이 필요한 경우, 장비가 교체된 경우 등
  • 최종사용자 (일반 사용자)
    • End User
    • 데이터베이스에 접근하여 데이터 조작 수행
    • 주로 DML 사용
    • 구분
      • 캐쥬얼 사용자
        • 데이터베이스에 대한 이론적 지식 보유
        • DML을 이용해 DBMS에 데이터베이스 조작 요청
      • 초보 사용자
        • 초보 수준으로 이용
        • GUI 응용 프로그램을 통해 사용
  • 응용 프로그래머
    • 프로그래밍 언어로 응용 프로그램을 작성할 때 데이터베이스에 접근하는 데이터 조작어를 삽입하는 사용자
    • DDL도 사용하지만 주로 DML 사용

2.3.2. DBMS 기능

  • 데이터베이스와 사용자 사이에서 중간자 역할
  • 데이터베이스 동시 사용시 발생하는 모든 분쟁 중재 (여러 프로그램이나 사용자가 동시 접근할 때 방지)
  • 데이터베이스 생성 및 접근, 관리 모두 담당
  • 데이터베이스 결과만 응용 프로그램에 전달하므로 사용자가 물리적 구조 알 필요 없어짐
  • 데이터베이스 구조나 접근 방법 변경시 DBMS에 관리하므로 사용자나 응용프로그램 변경 불필요 → 데이터 독립성 확보
  • 기타 핵심 기능 (sql 관련)
    • 정의 기능
      • 조직에 적합한 데이터베에스 구조 정의 또는 수정
    • 조작 기능
      • 데이터베이스에 저장된 데이터에 접근하여 사용할 수 있는 기능제공
      • 사용자 요구에 따라 연산 효율적으로 처리
    • 제어 기능
      • 무결성 유지를 위한 규칙 설정
      • 보안 관련 정책 결정

2.4. DBMS 언어 (SQL)

  • 프로그래밍 언어
    • 특정 문제 해결 목적으로 사용
    • 특정한 기능을 가지고 있는 어플리케이션을 만들기 위한 언어
  • DBMS 언어
    • 사용자가 DBMS와 통신하는 수단
    • SQL

2.4.1. DBMS 언어 (SQL)

  • SQL
    • DBMS 내에서 데이터베이스 정의, 조작, 제어 기능을 이용하기 위한 수단
  • 기능별 분류
    • 데이터 정의어
      • Data Definition Langauge (DDL)
    • 데이터 조작어
      • Data Manipulation Langauge (DML)
    • 데이터 제어어
      • Data Control Language (DCL)

2.4.2. DBMS 언어 종류

  • 데이터 정의어
    • Data Definition Langauge (DDL)
    • 스키마 정의, 수정 또는 삭제
      • 새로 만드려는 DB의 스키마 설명 또는 이미 정의된 스키마 구조 변경 또는 삭제를 위해 사용
    • 데이터 사전에 저장
      • 삭제나 수정 발생 시 내용 반영 → 나중에 참고 가능
    • CREATE, ALTER, DROP
  • 데이터 조작어
    • Data Manipulation Langauge (DML)
    • 데이터 삽입, 삭제, 수정, 검색 등의 처리 요구
    • 실제 값(튜플)들 통제
    • SELECT, INSERT, UPDATE, DELETE
  • 데이터 제어어
    • Data Control Language (DCL)
    • 내부적으로 필요한 규칙이나 기법 정의
    • 데이터 보안 기능 제공
      • 사용자별 접근 및 사용 권한 부여/취소
    • 변경 데이터에 대한 복구 기능 제공
    • 무결성, 보안, 회복, 동시성 → 특징 보장 목적
    • GRANT, REVOKE, COMMIT, ROLLBACK

2.5. DBMS 종류 및 특징

  • 점유율 : 1. 오라클, 2. MySQL, 3. MS SQL 서버

2.5.1. Oracle

  • 특징
    • 1979년 oracle 개발, 관계형 DBMS
    • 단일 데이터베이스 내에서 여러 데이터 모델 지원
    • 클라우드 컴퓨팅에 초점
    • 다양한 운영체제에서 사용 가능, 라이센싱 무료, 유료 옵션 존재
    • 다양한 언어에서 지원
  • 장점
    • 향상된 데이터 보호, 백업, 복구 등의 지속적인 릴리즈를 통한 강력한 보안 제공
    • 방대한 양의 데이터 수용 및 처리 가능
    • 강력한 기술 지원과 문서 제공
  • 단점
    • 많은 비용
      • 무료 버전 기능 제한적
      • 유료 버전 비쌈
    • 높은 하드웨어 사양 필요
    • 제공되는 방대한 양의 문서 → 전문가 필요 수준

2.5.2. MySQL

  • 특징
    • 1995년 MySQL AB에서 개발
      • 오픈 소스로 출발 나중에 오라클에서 소유
    • 여러 운영체제 사용 가능
    • 다양한 언어에서 지원
  • 장점
    • 오픈 소스로 무료로 사용 가능
      • MySQL 커뮤니티 에디션
      • 기타 선불 옵션
    • 간단한 구문으로 다루기 쉬움
    • 적은 하드웨어 사양으로 사용 가능
  • 단점
    • 오픈 소스로 사용 시 기술 지원 어려움
    • 뛰어나지 않은 확장성
    • 일부 표준 SQL 기능 미지원

2.5.3. MS-SQL

  • 특징
    • 완전히 상업적인 도구
    • 1989년 MS에서 개발
    • 일반적으로 SQL 표준의 확장인 Transact-SQL 언어 사용
    • Windows, Linux 에서만 사용 가능
  • 장점
    • 강력한 기술 지원과 문서 제공
  • 단점
    • 많은 비용
    • Windows와 Linux에서만 사용 가능