데이터베이스 보안 - 시스템 권한
보안
데이터베이스 보안의 핵심은 사용자이다. 크게 사용자는 관리자와 일반 사용자 2계층으로 나누어져 있다. 이를 간략하게 살펴보자면 다음과 같다.
오라클 시스템 관리자
- sys (윈도우 통합)
- system (일반 관리자)
- 사용자 생성
- 권한을 줄 수 있음
- dbsnmp (거의 안씀)
사용자
- hr, scott 외에도 엄청 많다….
보통 데이터베이스에서 일반 사용자들을 관리하는 관리자는 system이며, sys는 데이터베이스 설치 등에 대해 관리한다고 생각하면 된다. 우리는 system을 주로 사용하여 사용자들에게 여러 가지 권한을 부여하거나 취소할 것이다. 이 때 DCL이라는 데이터베이스 컨트롤 명령어를 사용한다. DCL에는 Grant와 Revoke 두 가지 명령이 존재한다.
권한
사용자가 2 계층으로 되어 있기 때문에 권한 역시 시스템 권한과 객체 권한 두 가지가 존재한다.
- 시스템 권한: 관리자가 가지고 있는 권한을 의미한다.
- 객체 권한:사용자가 자신이 생성한 객체에 대해서 가지고 있는 권한을 말한다.
시스템 권한
이 중에서 먼저 시스템 권한에 대해서 살펴보도록 하겠다. 관리자는 보통 100개 이상의 권한을 가지고 있지만, 우리가 주로 사용할 권한은 다음 6 가지 정도이다.
이 중에서 사용자 생성을 한번 진행해보도록 하겠다.
사용자 생성
사용자 생성을 위해서는 일단 system 계정에 로그인해야한다. connect 명령어로 관리자로 접속하자.
그리고 사용자 계정을 생성한다. 계정 생성은 create문을 통해 이루어진다.
비밀번호 변경 역시 간단하게 system에서 alter문을 통해 할 수 있다.
이제 우리가 만든 tom이라는 계정으로 데이터베이스 서버에 로그인해보도록 하겠다.
계정을 생성하였지만 create session이라는 접속 권한 부족으로 로그인이 거부되고 있다. 이를 위해서는 system에서 tom에 대해 접속 권한을 부여해야한다.
그렇다면 접속 권한을 부여하기에 앞서 권한 부여 방법와 취소 방법을 알아야 한다. 위에서 언급했듯 이 때 사용하는 명령어는 DCL이며, grant와 revoke 두 가지가 존재한다.
- 권한 부여 방법
grant 권한 명, ….
to 사용자, ….;
|
- 권한 부여 취소 방법
revoke 권한 명, ….
from 사용자, …..;
|
다시 system에 로그인하여 tom에게 이 권한을 주도록 하겠다.
이제 접속권한이 생겼으니 다시 tom으로 로그인해보도록 하겠다.
정상적으로 로그인이 되고 있음을 확인할 수 있다.
이번에는 tom에서 테이블을 하나 만들어보도록 하겠다.
역시 테이블 생성 권한이 없기 때문에 이 요청은 거부된다.
테이블 생성을 위해서는 두 가지 권한이 필요하다.
- 테이블을 생성할 수 있는 권한
- 테이블 저장 공간을 사용할 수 있는 권한
다시 system으로 돌아가 tom에게 이 권한들을 부여하도록 하겠다.
다시 tom에서 테이블을 생성해보자.
테이블 생성이 제대로 이루어지고 있음을 확인할 수 있다. 뿐만 아니라 테이블에 insert문을 통해서 내용을 입력하고, select문을 통해서 입력된 내용을 확인하는 것도 가능하다.
계정 잠금
system에서는 각 사용자에 대해서 계정을 잠그거나 풀 수 있다. 그럼 먼저 우리가 만들었던 tom에 대해서 잠금을 해보도록 하자.
이미 tom에 접속되어 있을 때 로그아웃은 되지 않는다. 하지만 exit로 로그아웃한 뒤 다시 접속해보자.
이 계정은 잠겨있다는 메시지를 출력한다.
다시 system으로 돌아가서 tom계정 잠금을 해제하자.
이제 다시 tom으로 로그인해보도록 하겠다.
정상적으로 로그인이 되는 것을 확인 할 수 있다.
게다가 잠금이 되더라도 해당 계정에 대한 데이터는 여전히 유지된다. select문으로 tom에 저장된 tbl1 테이블 데이터가 여전히 존재하는지 살펴보자.
댓글
댓글 쓰기