C#,Delphi,Oracle,MSSQL 개발자블로그
[Oracle/기본]14. 사용자 접근 제어 본문
● 사용자 접근 제어
- 데이터베이스 보안의 두 종류
1. 시스템 보안
☞ 사용자명, 비밀번호
☞ 사용자에게 할당된 디스크 공백
☞ 사용자에 의해 허용된 시스템 작업
같은 시스템 수준에서의 데이터베이스의 액세스와 사용을 설명한다.
2. 데이터 보안
☞ 데이터베이스 객체에 대한 액세스와 사용
☞ 객체에 대해 사용자가 할 수 있는 작업
을 설명한다.
● 권한
특정 SQL문장을 실행하기 위한 권한이다.
80개 이상의 권한이 있다.
- 시스템 권한 : 데이터베이스 액세스 획득 (system privilege 필요)
- 객체권한 : 데이터베이스 객체 내용 조작 (object privilege 필요)
스키마 : 테이블, 뷰, 시퀀스 같은 객체의 모음.
● 사용자 생성
CREATE USER scott
IDENTIFIED BY tiger;
● 사용자 시스템 권한 부여
GRANT privilege [, privilege,,,]
TO user [, user...];
privilege : 허가되는 시스템 권한이다.
user : 사용자명이다.
* 주된 사용자 권한
CREATE SESSION 데이트베이스로 접속
CREATE TABLE 사용자의 스키마에서 테이블 생성
CREATE SEQUENCE 사용자의 스키마에서 시퀀스 생성
CREATE VIEW 사용자의 스키마에서 뷰 생성
CREATE PROCEDURE 사용자의 스키마에서 내장된 프로시저, 함수, 패키지 생성
Ex. GRANT create table, create sequence, create view
TO scott;
● 롤(role)
롤은 사용자에 대해 부여될 수 있는 관련 권한의 그룹이다. 롤은 권한을 부여하고 철회하는 것을 수행하고 유지하기 쉽게 한다.
한 사용자가 여러 롤을 액세스할 수 있고 다른 여러사용자에게 동일한 롤을 지정할 수 있다.
- 롤의 생성
CREATE ROLE manager;
- 롤에 권한 부여
GRANT create table, create view, TO manager;
- 롤의 권한을 다른 사용자에게 부여
GRANT manager TO BLAKE, CLARK;
● 비밀번호 변경
ALTER USER user
IDENTIFIED BY password;
user 사용자명이다.
password 새 비밀번호를 지정한다.
● 객체 권한
- 객체 권한은 객체마다 다양하다.
- 소유자는 객체에 대한 모든 권한을 가진다.
- 소유자는 사용자 객체에 대한 특정 권한을 제공할 수 있다.
- 객체 권한 종류
Object Privilege |
Table |
View |
Sequence |
Procedure |
ALTER |
O |
|
O |
|
DELETE |
O |
O |
|
|
EXECUTE |
|
|
|
ㅇ |
INDEX |
O |
|
|
|
INSERT |
O |
O |
|
|
REFERENCES |
O |
|
|
|
SELECT |
O |
O |
O |
|
UPDATE |
O |
O |
|
|
GRANT object_priv [(columns)]
ON object ☜ 시스템 권한과 다른점, 이 객체에 대한 권한
TO {user/role/public}
[WITH GRANT OPTION];
object_priv 부여받기 위한 객체 권한이다.
ALL 모든 객체 권한이다.
columns 권한이 부여되는 테이블 또는 뷰로부터 열을 지정한다.
object 권한이 부여되는 객체이다.
TO 권한이 부여될 사용자이다.
PUBLIC 모든 사용자에 대해 객체 권한을 부여한다.
WITH GRANT OPTION 부여자가 다른 사용자와 롤에 대한 객체 권한을 부여할 수 있도록 허용한다.
Ex. EMP 테이블에 대한 SELECT 권한 부여
GRANT select
ON emp
TO sue, ritch;
Ex. 사용자와 롤에게 지정 열을 UPDATE하기 위한 권한 부여
GRANT update (dname, loc)
ON dept
TO scott, manager;
- 객체에 대한 권한을 부여하기위해, 객체는 자신의 스키마에 존재해야 하거나 WITH GRANT OPTION으로 객체 권한을 부여 받아야 한다.
- 객체 소유자는 데이터베이스의 어떤 다른 사용자 또는 롤에게 객체에 대한 모든 가능한 객체 권한을 부여할 수 있다.
- 객체의 소유자는 자동적으로 그 객체에 대한 모든 권한을 얻는다.
● WITH GRANT OPTION과 PUBLIC 키워드 사용
GRANT select, insert
ON dept
TO scott
WITH GRANT OPTION;
scott계정은 dept 테이블에대한 select, insert 액세스권한을 부여받고,
scott WITH GRANT OPTION으로 인해 이 권한을 다른 사용자에게 줄 수도 있다.
GRANT select
ON alice.dept
TO PUBLIC
모든 사용자가 Alice의 DEPT 테이블의 데이터를 select할 수 있게 한다.
● 객체 권한 철회 방법
REVOKE {privilege [, privilege...] / ALL}
ON object
FROM {user[, user...] / role / PUBLIC}
[CASCADE CONSTRAINTS];
CASCADE CONSTRAINTS REFERENCES 권한을 사용하여 만들어진 객체에 대한 참조 무결성 제약조건을 제거하기 위해 필요하다.
Ex. REVOKE select, insert
ON dept
FROM scott;
DEPT 테이블에 대해 사용자 Scott에게 주어진 SELECT와 INSERT 권한을 철회한다.
☞ REVOKE는 WITH GRANT OPTION을 통해 다른 사용자에게 부여된 권한도 연이어 같이 철회한다.
예를들어, A가 WITH GRANT OPTION을 포함하여, 사용자 B에 대해 테이블에 SELECT 권한을 부여한다면, 사용자 B는 사용자 C에게
권한을 부여할 수 있고, 사용자 C는 사용자 D에게 권한을 부여할 수 있다.
이 때, 사용자 A가 사용자B에게서 권한을 철회한다면, 사용자C와 사용자D의 권한도 철회된다.
'Programming > Oracle 공부' 카테고리의 다른 글
[Oracle/기본]16. PL-SQL 변수 선언 (0) | 2017.05.31 |
---|---|
[Oracle/기본]15. SQL 제약조건 별 CREATE TABLE 예제. (0) | 2017.05.31 |
[Oracle/기본]13. 다른 데이터베이스 객체 (0) | 2017.05.24 |
[Oracle/기본]12. 뷰 생성 (0) | 2017.05.23 |
[Oracle/기본]11. 제약조건 포함 (0) | 2017.05.23 |