* 시스템 권한(System Privilege): 데이터 베이스를 액세스할 수 있다.
* 객체 권한(Object Privilege) : 데이터 베이스 객체 내용을 조작할 수 있다.
1. System Privilege? --> DBA권한
- Create new users ( CREATE USER )
- Remove users ( DROP USER )
- Remove tables ( DROP ANY TABLE )
- Backup tables ( BACKUP ANY TABLE )
2. Creating User
CREATE USER scott
IDENTIFIED BY tiger ;
3. system privilege에서의 GRANT
GRANT privilege [, privilege...]
TO user [, user...]
[WITH ADMIN OPTION] ;
* WITH ADMIN OPTION : dba가 권한을 주는 user에게도 admin 권한을 줄 수 있다.
* user system privilege(DBA 가 USER에게 할당 할 수 있는 권한)
CREATE SESSION : 테이터베이스에 connect하는 권한
CREATE TABLE : 테이블 만드는 권한
CREATE SEQUENCE : sequence 만드는 권한
CREATE VIEW : view 만드는 권한
CREATE PROCEDURE : stored prcedure, function 만드는 권한
GRANT create table, create sequence, create view
TO scott
--> scott에게 table, sequence, view만드는 권한을 준다.
4. ROLE : 사용자에게 부여할 수 있는 관련 권한을 하나로 묶어 명명한 그룹
Grant를 줄 role user를 만든후 그 role user에 grant를 주고,
role user의 권한을 각각의 user에게 넘겨준다.
① SQL> CREATE ROLE manager ;
Role created.
② SQL> GRANT create table, create view TO manager ;
Grant succeeded.
③ SQL> GRANT mananger TO brake, clock ;
Grant succeeded.
5. User Password 변경하기
ALTER USER user IDENITIFIED BY password ;
예) ALTER USER scott IDENTIFIED BY lion ;
6. Object Privileges?
* 객체마다 다르다.
* 소유자는 객체에 대한 모든 권한을 갖는다.
* 소유자는 자신의 객체에 대한 특정 권한을 부여할 수 있다.
7. Object Privilege에서의 GRANT
GRANT object_priv [(columns)| ALL]
ON object
TO {user|role|PUBLIC}
[WITH GRANT OPTION] ;
* sue, rich 라는 user에게 emp 테이블을 select 권한을 준다.
GRANT select
ON emp
TO sue, rich ;
* scott, manager라는 user에게 dept 테이블의 dname,loc 컬럼을 update할 수 있게 권한을 준다.
GRANT update (dname, loc)
ON dept
TO scott, manager ;
* WITH GRANT OPTION
GRANT select, insert
ON dept
TO scott
WITH GRANT OPTION ;
--> scott에게 dept 테이블의 select, insert권한을 주면서 scott가 다른 유저에게도
이 권한을 줄 수 있게 한다.
* PUBLIC : 모든 유저에게 권한을 부여한다.
GRANT select
ON alice.dept
TO PUBLIC ;
--> 모든유저에게 alice가 만든 dept 테이블의 select권한을 준다.
* 모든 유저에게 모든 object권한을 주기
GRANT ALL
ON emp
TO PUBLIC ;
8. 권한 없애기 (REVOKE)
REVOKE {privilege [, privilege...] | ALL}
ON object
FROM {user[, user...]|role|PUBLIC}
[CASCADE CONSTRAINTS]
REVOKE select, insert
ON dept
FROM scott ; --> scott에게서 dept테이블의 select, insert권한을 없앤다.
* CASCADE CONSTRAINTS : 이 옵션을 않쓰면 revoke할 때 forien key
관계의 table을 revoke할 수 없다.
9. Privilege Grant를 볼 수 있는 Data Dictionary
ROLE_SYS_PRIVS : System privilege 권한에 대한 정보
ROLE_TAB_PRIVS : table(object) privilege 권한에 대한 정보
USER_ROLE_PRIVS : role정보
USER_TAB_PRIVS_MADE : 내가 다른 사람에게 준 TABLE 권한에 대한 정보
USER_TAB_PRIVS_RECD : 내가 다른 사람에게 받은 TABLE 권한에 대한 정보
USER_COL_PRIVS_MADE : 내가 다른 사람에게 준 COLUMN 권한에 대한 정보
USER_COL_PRIVS_RECD : 내가 다른 사람에게 준 COLUMN 권한에 대한 정보
* 객체 권한(Object Privilege) : 데이터 베이스 객체 내용을 조작할 수 있다.
1. System Privilege? --> DBA권한
- Create new users ( CREATE USER )
- Remove users ( DROP USER )
- Remove tables ( DROP ANY TABLE )
- Backup tables ( BACKUP ANY TABLE )
2. Creating User
CREATE USER scott
IDENTIFIED BY tiger ;
3. system privilege에서의 GRANT
GRANT privilege [, privilege...]
TO user [, user...]
[WITH ADMIN OPTION] ;
* WITH ADMIN OPTION : dba가 권한을 주는 user에게도 admin 권한을 줄 수 있다.
* user system privilege(DBA 가 USER에게 할당 할 수 있는 권한)
CREATE SESSION : 테이터베이스에 connect하는 권한
CREATE TABLE : 테이블 만드는 권한
CREATE SEQUENCE : sequence 만드는 권한
CREATE VIEW : view 만드는 권한
CREATE PROCEDURE : stored prcedure, function 만드는 권한
GRANT create table, create sequence, create view
TO scott
--> scott에게 table, sequence, view만드는 권한을 준다.
4. ROLE : 사용자에게 부여할 수 있는 관련 권한을 하나로 묶어 명명한 그룹
Grant를 줄 role user를 만든후 그 role user에 grant를 주고,
role user의 권한을 각각의 user에게 넘겨준다.
① SQL> CREATE ROLE manager ;
Role created.
② SQL> GRANT create table, create view TO manager ;
Grant succeeded.
③ SQL> GRANT mananger TO brake, clock ;
Grant succeeded.
5. User Password 변경하기
ALTER USER user IDENITIFIED BY password ;
예) ALTER USER scott IDENTIFIED BY lion ;
6. Object Privileges?
* 객체마다 다르다.
* 소유자는 객체에 대한 모든 권한을 갖는다.
* 소유자는 자신의 객체에 대한 특정 권한을 부여할 수 있다.
7. Object Privilege에서의 GRANT
GRANT object_priv [(columns)| ALL]
ON object
TO {user|role|PUBLIC}
[WITH GRANT OPTION] ;
* sue, rich 라는 user에게 emp 테이블을 select 권한을 준다.
GRANT select
ON emp
TO sue, rich ;
* scott, manager라는 user에게 dept 테이블의 dname,loc 컬럼을 update할 수 있게 권한을 준다.
GRANT update (dname, loc)
ON dept
TO scott, manager ;
* WITH GRANT OPTION
GRANT select, insert
ON dept
TO scott
WITH GRANT OPTION ;
--> scott에게 dept 테이블의 select, insert권한을 주면서 scott가 다른 유저에게도
이 권한을 줄 수 있게 한다.
* PUBLIC : 모든 유저에게 권한을 부여한다.
GRANT select
ON alice.dept
TO PUBLIC ;
--> 모든유저에게 alice가 만든 dept 테이블의 select권한을 준다.
* 모든 유저에게 모든 object권한을 주기
GRANT ALL
ON emp
TO PUBLIC ;
8. 권한 없애기 (REVOKE)
REVOKE {privilege [, privilege...] | ALL}
ON object
FROM {user[, user...]|role|PUBLIC}
[CASCADE CONSTRAINTS]
REVOKE select, insert
ON dept
FROM scott ; --> scott에게서 dept테이블의 select, insert권한을 없앤다.
* CASCADE CONSTRAINTS : 이 옵션을 않쓰면 revoke할 때 forien key
관계의 table을 revoke할 수 없다.
9. Privilege Grant를 볼 수 있는 Data Dictionary
ROLE_SYS_PRIVS : System privilege 권한에 대한 정보
ROLE_TAB_PRIVS : table(object) privilege 권한에 대한 정보
USER_ROLE_PRIVS : role정보
USER_TAB_PRIVS_MADE : 내가 다른 사람에게 준 TABLE 권한에 대한 정보
USER_TAB_PRIVS_RECD : 내가 다른 사람에게 받은 TABLE 권한에 대한 정보
USER_COL_PRIVS_MADE : 내가 다른 사람에게 준 COLUMN 권한에 대한 정보
USER_COL_PRIVS_RECD : 내가 다른 사람에게 준 COLUMN 권한에 대한 정보
'프로그래밍Tips' 카테고리의 다른 글
오라클 9i에서 테이블명및 컬럼명 변경방법 (0) | 2006.04.24 |
---|---|
자바스크립트 한글처리... (0) | 2006.04.03 |
파워빌더 7,8,9 배포파일 목록... (0) | 2006.03.14 |