DCL의 개요
유저를 생성하고 권한을 제어할 수 있는 DCL(DATA CONTROL LANGUAGE) 명령어이며, 보안을 위해 필요하다.
GRANT 권한 ON 오브젝트 TO 유저명;
REVOKE 권한 ON 오브젝트 TO 유저명;
- SCOTT: 테스트용 샘플 유저
- SYS: DBA 권한이 부여된 최상위 유저
- SYSTEM: DB의 모든 시스템 권한이 부여된 DBA
privileges(권한) | 설 명 |
SELECT | 지정된 테이블에 SELECT 권한 부여 |
INSERT | 지정된 테이블에 INSERT 권한 부여 |
UPDATE | 지정된 테이블에 UPDATE 권한 부여 |
DELETE | 지정된 테이블에 DELETE 권한 부여 |
ALTER | 지정된 테이블에 ALTER 권한 부여 |
INDEX | 지정된 테이블에 INDEX 생성 권한 부여 |
REFERENCES | 지정된 테이블에 제약조건 생성 권한 부여 |
ALL | 지정된 테이블에 모든 권한 부여 |
SELECT, INSERT, UPDATE, DELETE, ALTER, ALL : DML 관련 권한
REFERENCES : 지정된 테이블을 참조하는 제약조건을 생성하는 권한
INDEX : 지정된 테이블에서 인덱스를 생성하는 권한
많은 데이터베이스에서 유저들과 권한들 사이에서 중개 역할을 하는 ROLE을 제공한다.
데이터베이스 관리자는 ROLE을 생성하고, ROLE에 각종 권한들을 부여한 후 ROLE을 다른 ROLE이나 유저에게 부여할 수 있다.
ROLE에 포함되어 있는 권한들이 필요한 유저에게는 해당 ROLE만을 부여함으로써 빠르고 정확하게 필요한 권한을 부여한다.
오라클에서 기본적으로 CONNECT, RESOURCE, DBA ROLE이 제공된다.
ROLE 생성
CREATE ROLE ROLE이름;
ROLE 권한부여
GRANT 권한 TO ROLE이름;
다른 유저에게 권한부여
GRANT ROLE이름 TO User1, User2.... ;
REVOKE CREATE SESSION, CREATE TABLE FROM ZINU;
부여했었던 권한 취소하기
REVOKE CREATE TABLE FROM ZINU;
부여했었던 권한 취소하기
CONN SYSTEM/MANAGER;
CREATE ROLE LOGIN_TABLE;
GRANT CREATE SESSION, CREATE TABLE TO LOGIN_TABLE;
GRANT LOGIN_TABLE TO ZINU;
CONN ZINU/KOREA7;
CREATE TABLE MENU2(MENU_SEQ NUMBER NOT NULL,TITLE VARCHER2(10));
Role 만들기(LOGIN_TABLE 이라는 롤 만들기)
DROP USER ZINU CASCADE;
유저 삭제 명령(유저가 만든 테이블도 같이 삭제 )
CREATE USER ZINU IDENTIFIED BY KOREA7;
사용자 생성 명령
GRANT CONNECT, RESOURCE TO ZINU;
롤을 이용한 권한 부여
SQL Server에서는 롤을 생성하여 사용하기 보다는 기본적으로 제공되는 롤에 멤버로 참여하는 방식으로 사용된다. 하지만오라클과 같이 롤을 자주 사용하지는 않는다.
인스턴스 수준의 작업이 필요한 경우 : 서버 수준 역할명을 이용하여 로그인 및 사용자 권한을 제어한다.
데이터베이스 수준의 작업이 필요한 경우: 데이터베이스 수준 역할을 이용하여 부여한다.