데이터베이스(14), 데이터베이스 보안과 권한 관리

2023. 2. 8. 23:21강의 내용 정리/데이터베이스

728x90
반응형

데이터베이스 보안과 권한 관리

 

데이터베이스 소유자가 다른 사용자에게 접근할 수 있는 권한을 허가한다. 그리고 이를 취소하는 권한 관리 기법을 사용한다.

 

세가지 유형의 보안

물리적 보호는 하드웨어적으로 처리한다.

 

권한이 있는 사용자는 안으로 들어오고, 권한이 없는 경우에는 들어오지 못하도록 한다. 이를 통해 무결성을 지키도록한다.

 

 

 

보안 기법

임의 보안 기법은 사용자별로 DB 객체(테이블, 어트리뷰트 등)에 읽기/쓰기 등의 권한을 부여한다. 소유자가 임의로 사용자에게 권한을 줄 수 있다는 점에서 임의 보안 기법이라 한다.

 

강제 보안 기법은 시스템에서 보안 레벨을 설정해서 다른 사람에게 알려주는 것을 의미한다. 데이터와 사용자들의 보안등급을 부여한다. 각 사용자의 보안 등급에 따라 접근 권한이 달라지게 된다. 즉, 사용자의 등급과 데이터의 등급이 나눠져서 사용자는 본인의 등급에 해당하는 것들에 대해서만 접근할 수 있게 된다. 상용 DBMS에서는 아직 지원하지 않는다.

 

 

 

 

2. 권한 관리

 

권한 허가

with grant option을 주지 않으면 권한을 부여받은 사람은 다른 사람에게 권한을 줄 수 없다.

 

레퍼런스는 외래키와 관련이 있다. 외래키 제약 조건을 만들기 위해선 해당 릴레이션에 대한 레퍼런스가 있어야한다.

데이터를 직접 노출시키고 싶지 않을 때에는 뷰를 만들고 그 뷰에 대해 권한을 부여할 수 있다.

 

choi는 EMPNO에 대한 레퍼런스 권한을 받게 된다. 즉 choi가 본인 테이블을 만들 때에 EMPNO를 외래키로 사용할 수 있다.

 

 

가지고 있는 권한 중 일부만 부여할 수 있다. 즉, SELECT, INSERT, SELECT/INSERT만 부여하는 것이 모두 가능하다. CHOI는 다른 사람에게 또 다시 권한을 허가해줄 수 있다.

 

 

권한 취소

revoke 뒤에 취소시키고자하는 리스트가 들어간다. 모든 권한을 취소하려면 ALL을 사용하면 된다. 이때 권한을 부여한 사용자만이 권한을 취소할 수 있다. 이때 권한은 연쇄적으로 취소된다.

 

Lee가 권한을 부여한 사람을 모두 취소할 수 있다. 이때 KIM은 CHOI의 권한만 직접 취소할 수는 없고, LEE의 권한을 취소해야한다.

 

역할

CREATE ROLE문은 오라클에서만 사용하는 신텍스이다.

 

역할에 직접적으로 권한을 부여하고 사용자들에게 각 역할을 부여한다.

 

 

3. 오라클의 보안 및 권한 관리의 개요

시스템이 고유의 보안 및 관리를 사용하기에 오라클에서의 권한을 확인해본다.

 

create table은 자기 계정 내에서 사용하는 것을 의미하고, create any table은 다른 사용자의 스키마 안에서 테이블을 만드는 것을 의미한다.

 

시스템 권한을 취소할 때에는 연쇄적으로 취소되지 않는다.

앞의 내용과 동일하다.

 

 

뷰는 외래키를 만들 수 없기에 references가 없다.

 

 

자주 사용되는 것에 대해 미리 정의된 역할이 있다. connect와 resource의 역할이 있으면 간단하게 데이터베이스를 조작할 수 있다.

 

 

 

 

데이터베이스 관리자 권한

데이터베이스 관리자만 수행할 수 있는 업무가 있다. 하지만 항상 데이터베이스 관리자의 계정으로 작업하면 보안이 깨질 수 있다. 따라서 일반적인 데이터베이스 작업을 할 때에는 일반 사용자 계정으로 들어가서 작업을 하고, 데이터베이스 작업을 할 때에는 이떄 데이터베이스 관리자 계정으로 들어가서 작업한다.

 

SYSDBA가 보통 모든 권한을 가지고 있다.

 

 

 

보안 예시

 

 

...

USER_xxx: 본인의 데이터 사전만 볼 수 있다.

ALL_xxx: 본인 외의 데이터 사전도 볼 수 있다.

DBA_xxx: 모든 데이터 사전을 볼 수 있다.

 

KIM -> LEE -> CHOI일 때의 정보를 검색할 수 있다.

 

 

 

select와 insert에 대한 권한이 들어간 것을 볼 수 있다. select와 insert가 나눠서 저장된다.

 

KIM은 스키마 이름을 의미한다.

 

 

동의어 정의

 

CREATE SYNONYM을 사용하면 이후에는 설정한 이름을 사용해서 sql 문을 작성할 수 있다.

update권한이 없기에 에러가 발생한다. 따라서 업데이트 권한을 추가해야한다.

 

권한을 부여받은 뒤 제대로 쿼리문을 수행한다.

 

일부 어트리뷰트만 select할 권한을 부여하려면 view를 만들어서 다른 사용자에게 액세스가 가능한 어트리뷰트만 포함시켜서 처리할 수 있다. 

 

 

728x90
반응형