데이터베이스에서 보안과 권한관리를 하는 것은 매우 중요하다. 데이터베이스의 보안과 권한관리가 미약해서 손실된다면 데이터베이스를 소유한 조직의 운용데 큰 타격을 입기 때문이다. 따라서 권한이 없는 사람들이 함부로 데이터베이스에 접근을 하지 못하도록 하고, 일부 사용자들에게만 적절한 수준의 권한을 허가할 수 있는 기능을 가지고 있어야 할 것이다.

따라서 데이터베이스에는 이를 위해서 접근제어와 보안 및 권한 관리에 대한 기능을 제공하고 있다.

보안기법

데이터베이스에서 제공하는 보안 기법에는 크게 두 가지가 있다.

첫번째는 임의 보안 기법이다.

임의 보안 기법은 사용자들에게 특정 릴레이션, 투플, 또는 애트리뷰트를 지정된 모드로 접근할 수 있는 권한을 허가하고 취소하는 기법이다. 대부분의 상용 관계 DBMS에서 사용되는 기법으로 시스템 카탈로그에 누가 권한을 허가받았고 취소당했는가를 유지한다.

두번째는 강제 보안 기법이다.

강제 보안 기법은 데이터와 사용자들을 다양한 보안 등급으로 분류하고 해당 조직마다 적합한 보안 정책을 적용한다. 하지만 대부분의 상용 관계 DBMS는 이러한 보안 기법을 제공하지 않는다.

이러한 보안을 계속해서 유지하기 위해서는 데이터베이스를 관리하는 데이터베이스 관리자가 필요하다. 이 사람은 권한을 부여하거나 취소를 하고 사용자가 데이터베이스에 가한 모든 연산들을 기록할 수 있다. 만약 권한이 없는 사용자가 데이터베이스를 갱신했다는 의심을 들면 데이터베이스 감사를 실시할 수 있다.

권한 관리

사용자에게 권한을 주는 권리에는 다음과 같은 것들이 있다.

권한 허가

서로 다른 객체들에 대해서 다양한 권한들이 존재한다. 객체를 생성한 사람(소유한)은 모든 권한을 가지며 이 사람은 자신이 소유한 임의의 객체에 대해서 특정 권한을 GRANT문을 사용해서 다른 사용자에게 역할이나 권한을 허가할 수 있다.

GRANT 권한[(애트리뷰트들의 리스트)] ON 객체 TO {사용자|역할|PUBLIC} [WITH GRANT OPTION];


줄 수 있는 권한에는 SELECT, INSERT, DELETE, UPDATE, REFERENCES가 있으며 허가 받은 권한에 대해서만 사용을 할 수 있다. 또한 사용자가 WITH GRANT OPTION절과 함께 권한을 허가받으면 그 사용자도 다른 사용자에게 허가를 할 수 있는 권한을 가지게 된다. 만약 기본 릴레이션의 소유자가 다른 사용자들이 릴레이션에 직접 접근하지 못하게 하려고 하는 경우에는 릴레이션을 참조하는 뷰를 정의한 후 이 뷰에 대한 권한을 부여할 수 있다.

권한 취소

다른 사용자에게 허가한 권한을 취소하기 위해서는 REVOKE문을 사용한다. 또한 어떤 사용자가 다른 사용자에게 허가했던 권한을 취소한다면 권한을 취소 당한 사용자가 WITH GRANT OPTION을 통해서 다른 사용자에게 허가했던 권한들도 연쇄적으로 취소된다.

REVOKE {권한들의 리스트|ALL} ON 객체 FROM {사용자|역할|PUBLIC};

역할

여러 사용자들에 대한 권한 관리를 단순화하기 위해서 역할을 사용한다.

역할은 사용자에게 허가할 수 있는 연관된 권한들의 그룹으로서 이름을 가진다. 각 사용자는 여러 역할에 속할 수 있으며 여러 사용자들이 동일한 역할을 허가받을 수 있다. 또한 어떤 역할과 연관된 권한들에 변화가 생기면 그 역할을 허가받은 모든 사용자들은 자동적으로 즉시 변경된 권한들을 가지게 된다.

관계 데이터 모델에서 지원하는 언어에는 크게 두 가지가 있다.

 

1. 관계 해석 - 원하는 데이터만 명시하고 질의를 어떻게 수행할 것인가는 명시하지 않는 선언적인 언어

 

2. 관계 대수 - 어떻게 질의를 수행할 것인가를 명시하는 절차적 언어, SQL의 이론적인 기초

 

관계 대수

기존의 릴레이션들로부터 새로운 릴레이션을 생성한다. 즉 입력값, 출력 값이 모두 릴레이션이다.

연산자들을 적용하여 보다 복잡한 관계 대수식을 점차적으로 만들 수 있음. 기본적인 연산자들의 집합으로 이루어짐.

결과 릴레이션은 또 다른 관계 연산자의 입력으로 사용될 수 있다.

 

관계 연산자들의 종류와 표기법

실렉션 연산자

σ<실렉션 조건>(릴레이션) 과 같이 사용하며 한 릴레이션에서 조건을 만족하는 투플들의 부분 집합을 생성한다.

단항 연산자이며 결과 릴레이션의 차수는 항상 입력 릴레이션의 차수와 같으며 카디날리티는 결과가 항상 작거나 같다.

 

실렉션 연산자 예시

프로젝션 연산자

π<애트리뷰트 리스트>(릴레이션) 과 같이 사용하며 한 릴레이션의 애트리뷰트들의 부분 집합을 구한다.

결과 릴레이션은 애트리뷰트 리스트에 명시된 애트리뷰트들만 가진다. 실렉션의 결과로는 중복 투플이 존재할 수 있지만 프로젝션의 결과에는 중복된 투플이 존재하지 않음

 

프로젝션 연산자 예시

집합 연산자

릴레이션이 투플들의 집합이기 때문에 기존의 집합 연산이 릴레이션에 적용된다. 집합 연산자에는 합집합, 교집합, 차집합이 있다. 집합 연산자의 입력으로 사용되는 두 개의 릴레이션은 합집합 호환이어야 한다.

 

*합집합 호환

두 릴레이션 R1(A1, A2,..., An)과 R2(B1, B2,... , Bm)이 합집합 호환일 필요충분조건은 n=m이고, 모든 1 <=i <=n에 대해 domain(Ai)=domain(Bi)이다.

 

합집합 연산자

릴레이션 1 ∪ 릴레이션 2와 같이 사용하며 릴레이션1에 있거나, 릴레이션2에 있는 투플들로 이루어진 릴레이션을 반환

결과 릴레이션에서는 중복된 투플들은 제거한다.

 

합집합 연산자 예시

교집합 연산자

릴레이션1 ∩ 릴레이션2 와 같이 사용하며 릴레이션 1, 릴레이션 2에 동시에 속하는 투플들로 이루어진 릴레이션

 

교집합 연산자 예시

차집합 연산자

릴레이션 R, S에 대해 차집합 R-S는 R에는 속하지만 S에는 속하지 않은 투플들로 이루어진 릴레이션

 

차집합 연산자 예시

2019/04/09 - [Lecture Note/DataBase] - [강의노트_DB]1.데이스베이스의 개요

불러오는 중입니다...

 

예전부터 데이터를 관리하는 방법으론 화일 시스템이 있었다. 하지만 파일 시스템은 프로그래밍을 해야 하는 분량이 너무 많고 DBMS에 비해 많은 단점을 가지고 있다. 그래서 DBMS와 파일 시스템이 각각 어떤 특징을 가지고 있고 장단점을 비교해보려고 한다.

파일 시스템을 사용한 데이터 관리

파일 시스템은 DBMS가 등장하기 전인 1960년대부터 사용되어 왔다. 파일 시스템의 기본적인 구성요소는 순차적인 레코드이며 한 레코드는 연관된 필드들의 모임으로 구성되어 있다. 파일을 접근하는 방식이 응용 프로그램 내에서 상세하게 구현되어 있으므로 데이터에 대한 응용 프로그램의 의존도가 높은 편이다.

파일 시스템의 단점

1. 새로운 데이터를 추가하려고 하면 그 파일을 사용하고 있던 프로그램들을 전부 찾아가서 필드를 추가해줘야 한다. 왜냐하면 데이터가 많은 파일에 중복해서 저장되었기 때문이다. 즉 동시성 제어를 제공하지 못한다.

2. 검색하려는 데이터를 쉽게 명시하는 질의어가 제공되지 않는다. 이 때문에 복잡해지고 프로그래머의 생산성이 낮아진다.

3. 회복 기능이 없다.

4. 프로그램과 데이터의 독립성이 없으므로 유지보수 비용이 많이 요구된다.

DBMS를 사용한 데이터베이스 관리

여러 사용자와 응용 프로그램들이 데이터베이스를 공유하고 사용자의 질의를 빠르게, 자동으로 수행된다. 또한 권한이 없는 사용자에게는 데이터를 제공하지 않아 보안성도 좋고, 데이터 간의 복잡한 관계를 표현할 수 있으며 무결성 제약조건을 자동으로 유지시켜준다. 또한 프로그램에 영향을 주지 않으면서 데이터베이스 구조를 변경할 수 있다.(프로그램-데이터 독립성) 

DBMS의 장점

1. 중복성과 불일치가 감소된다.

2. 시스템을 개발하고 유지하는 비용이 감소된다.

3. 표준화를 시행하기가 용이하다.

4. 다양한 유형의 고장으로부터 데이터베이스를 회복할 수 있다.

5. 데이터베이스의 공유와 동시 접근이 가능하다.

DBMS의 단점

1. 추가적인 하드웨어 구입 비용이 발생하고, DBMS 자체의 구입 비용도 비싸다.

2. 직원들의 교육 비용이 많이 소요된다.

DBMS 선정시 고려 사항

*기술적 요인

DBMS에 사용되고 있는 데이터 모델, 사용자 인터페이스, 프로그래밍 언어, 개발 도구 , 저장 구조, 성능, 접근 방법 등

 

*경제적 요인

소프트웨어와 하드웨어 구입 비용, 유지 보수 비용, 직원들의 교육 지원

 

파일 시스템

DBMS

데이터에 대한 물리적 접근만 조정한다.

데이터에 대한 물리적 접근과 논리적인 접근을 모두 조정한다.

동일한 파일을 두 개 이상의 프로그램이 동시에 접근할 수 없다.

동일한 데이터를 다수 사용자가 동시에 접근할 수 있다.

데이터가 비구조적이며, 중복성과 유지비수 비용이 높다.

데이터가 구조화되어 있으며, 중복성과 유지보수 비용이 낮다.

어떤 프로그램이 기록한 데이터는 다른 프로그램에서 읽을 수 없는 경우가 많다.

접근 권한이 있는 모든 프로그램이 데이터를 공유한다.

데이터에 대한 접근은 미리 작성된 프로그램을 통해서만 가능하다.

질의어를 사용하여 데이터에 대한 융통성 있는 접근이 가능하다.

각 응용 프로그램마다 파일이 따로 있으므로 데이터가 통합되어 있지 않다.

데이터가 중복을 배제하면서 통합되어 있다.

데이터베이스의 정의

데이터베이스는 조직체의 응용 시스템이 공유해서 사용하는 운영 데이터들이 구조적으로 통합된 모임이다. 

데이터 구조는 데이터 모델에 의해 결정된다.

 

데이터베이스 스키마

전체적인 데이터베이스 구조를 뜻하고, 내포(intension)이라고 부름

 

데이터베이스 상태

특정 시점의 데이터베이스의 내용을 의미하며, 외연(extension)이라고 부름

 

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

데이터베이스를 정의하고, 질의어를 지원하고, 리포트를 생성하는 등의 작업을 수행하는 소프트웨어

 

1. 사용자가 새로운 데이터베이스를 생성하고, 구조를 명시할 수 있게 하고, 데이터를 효율적으로 질의 및 수정할 수 있도록 하며, 데이터를 안전하게 보호하며 여러 사용자가 접근을 하는 것에 대해 제어를 해준다.

 

2.SQL은 여러 DBMS에서 제공되는 사실상의 표준 데이터베이스 언어이다.

 

DBMS 사용자

데이터베이스 관리자(DBA: Database Administrator)

데이터베이스 관리자는 조직의 여러 부분의 상이한 요구를 만족시키기 위해서 일관성 있는 데이터베이스 스키마를 생성하고 유지 하는 사람이다.

데이터베이스 스키마(구조)를 생성하고 변경하고, 무결성 제약조건을 명시해줘야 한다. 또한 사용자의 권한을 허용하거나 취소, 역할을 관리해준다. 즉 데이터베이스의 구조를 처음 생성을 하고 유지, 관리를 해주는 사람이다.

 

응용프로그래머

데이터베이스 위에서 특정 응용이나 인터페이스를 구현하는 사람이다.

데이터베이스를 접근하는 부분은 내포된 데이터 조작어를 사용하며 이들이 작성한 프로그램은 최종 사용자들이 기작성 트랜잭션(canned transaction)이라고 부른다.

 

최종 사용자(end user)

질의하거나 갱신하거나 보고서를 생성하기 위해서 데이터베이스를 사용하는 사람이다.

데이터베이스 질의어를 사용하여 매번 다른 정보를 찾은 캐주얼 사용자와 기작성 트랜잭션을 주로 반복해서 수행하는 초보 사용자로 구분

 

데이터베이스 설계자(database designer)

데이터베이스 설계를 담당한다. 데이터베이스의 일관성을 유지하기 위해서 정규화를 수행한다.

 

오퍼레이터

DBMS가 운영되고 있는 컴퓨터 시스템과 전산실을 관리하는 사람이다.

 

+ Recent posts