유저와 권한
Oracle 과 SQL Server 의 유저
Oracle 과 SQL Server 의 사용자에 대한 아키텍처는 다른 면이 많다.
Oracle 은 유저를 통해 데이터베이스에 접속한다.
즉 아이디와 비밀번호 방식으로 인스턴스에 접속하고 그에 해당하는 스키마에 오브젝트 생성 등 권한을 부여받는다.
SQL Server 는 인스턴스에 접속하기 위해 로그인이라는 것을 생성하게 되고, 인스턴스 내 존재하는 다수의 데이터베이스에 연결해 작업을 하기 위해 유저를 생성 후 로그인과 유저를 매핑해줘야한다. 더 나아가 특정 유저는 특정 데이터베이스 내의 특정 스키마에 대한 권한을 부여받을 수 있다.
로그인 방식에는 마이크로소프트 윈도우 운영체제 인증방식으로 로그인하는 방법과 혼합 모드방식으로 윈도우 인증으로도 접속 가능하고, Oracle 인증방식처럼 아이디와 비밀번호로 SQL Server 에 접속하는 방식이 있다.
ROLE 을 이용한 권한 부여
유저를 생성하면 기본적으로 CREATE SESSION, CREATE TABLE, CREATE PRODEDURE 등 많은 권한을 부여해야한다.
데이터베이스 관리자는 유저가 생성될 때마다, 각각의 권한들을 유저에게 부여하는 작업을 수행해야하는데
관리할 유저가 점점 늘어나고 자주 변경되는 상황에서는 매우 번거로운 작업이 될 것이다.
이와 같은 문제를 줄이기 위해 유저들과 권한들 사이에 중개 역할을 하는 ROLE 을 제공한다.
데이터베이스 관리자는 ROLE 을 생성하고, ROLE 에 각종 권한들을 부여한 후 ,
ROLE 을 다른 ROLE 이나 유저에게 부여할 수 있다.
또한 ROLE 에 포함된 권한들이 유저들에게는 해당 ROLE 만 부여함으로써 빠르고 정확하게 필요한 권한을 부여할 수 있다.
위 그림은 유저들과 권한들 사이 간 ROLE 의 역할을 보여주고 있다. 왼쪽은 권한을 직접 유저에게 할당할 때를, 오른쪽은 ROLE 에 권한을 부여하고 ROLE 을 유저들에게 부여하는 것을 나타내고 있다.
ROLE 에는 시스템 권한과 오브젝트 권한을 모두 부여할 수 있다.
ROLE 은 유저에게 직접 부여될 수도 있도, 다른 ROLE 에 포함해 유저에게 부여될 수도 있다.
CONN SYSTEM/MANAGER;
CREATE ROLE LOGIN_TABLE;
GRANT CREATE SESSION, CREATE TABLE TO LOGIN_TABLE;
GRANT LOGIN_TABLE TO USER1;
이와 같이 ROLE 을 만들어 사용하는 것이 권한을 직접 부여하는 것보다 빠르고 안전하게 유저를 관리할 수 있다.
Oracle 에서는 기본적으로 몇 가지 ROLE 을 제공한다.
가장 많이 사용하는 ROLE 은 CONNECT 와 RESOURCE 이다.
CONNECT 에는 CREATE SESSION 같은 로그인 권한이 포함되어 있고,
RESOURCE 에는 CREATE TABLE 같은 오브젝트 생성 권한이 포함되어 있다.
일반적으로 유저를 생성할 때 CONNECT 와 RESOUCE ROLE 을 사용해 기본 권한을 부여한다.
CONNECT | RESOUCE |
CREATE SESSION | CREATE CLUSTER |
CREATE INDEXTYPE | |
CREATE OPERATOR | |
CREATE PROCEDURE | |
CREATE SEQUENCE | |
CREATE TABLE | |
CREATE TRIGGER | |
CREATE TYPE |
유저를 삭제하는 명령어는 DROP 이고, CASCADE 옵션을 주면 해당 유저가 생성한 오브젝트를 먼저 삭제 후 유저를 삭제한다.
출처
SQL 전문가 가이드 - 한국데이터산업진흥원