1. 사용자 관리
1) 데이터베이스 보안을 위한 권한
- 기업에서 보유하고 있는 데이터들은 자료 이상의 가치가 있으므로 외부에 노출되지 않도록 보안을 해야 함
- 데이터베이스를 운영하려면 데이터베이스에 대한 적절한 보안 대책을 마련해야 함
- 오라클은 다수의 사용자들이 데이터베이스에 저장된 정보를 공유해서 사용
- 하지만 정보의 유출이나 불법적인 접근을 방지하기 위해서 철저한 보안 대책이 필요
- 이러한 보안 대책을 위해서 데이터베이스 관리자가 있어야 함
- 데이터베이스 관리자는 사용자가 데이터베이스의 객체(테이블, 뷰 등)에 대한 특정 권한을 가질 수 있도록 함으로서 다수의 사용자가 데이터베이스에 저장된 정보를 공유하면서도 정보에 대한 보안이 이루어지도록 함
- 데이터베이스에 접근하기 위해서는 사용자가 이름과 암호를 입력해서 로그인 인증을 받아야 함
2) 권한의 역할과 종류
시스템 권한은 사용자의 생성과 제거, DB 접근 및 각종 객체를 생성할 수 있는 권한 등 주로 DBA에 의해 부여되며 그 권한의 수가 80 가지가 넘기에 대표적인 시스템 권한만 정리
시스템 권한 | 기능 |
CREATE USER | 새롭게 사용자를 생성하는 권한 |
DROP USER | 사용자를 삭제하는 권한 |
DROP ANY TABLE | 임의의 테이블을 삭제할 수 있는 권한 |
QUERY REWRITE | 함수 기반 인덱스를 생성하는 권한 |
BACKUP ANY TABLE | 임의의 테이블을 백업할 수 있는 권한 |
데이터베이스를 관리하는 권한으로 다음과 같은 것이 있습니다. 이러한 권한은 시스템 관리자가 사용자에게 부여하는 권한
시스템 권한 | 기능 |
CREATE SESSION | 데이터베이스에 접속할 수 있는 권한 |
CREATE TABLE | 사용자 스키마에서 테이블을 생성할 수 있는 권한 |
CREATE VIEW | 사용자 스키마에서 뷰를 생성할 수 있는 권한 |
CREATE SEQUENCE | 사용자 스키마에서 시퀀스를 생성할 수 있는 권한 |
CREATE PROCEDURE | 사용자 스키마에서 함수를 생성할 수 있는 권한 |
3) 사용자 생성
- 회사에 새로운 사원이 입사하게 되면 시스템에 접속하도록 관리자가 계정을 하나 발급해줌
- 지금까지는 SCOTT 사용자로 접속해서 오라클 데이터베이스를 사용했지만, 사실은 부서별이나 사원의 직무에 따라 사용 가능한 테이블을 고려해서 오라클 데이터베이스에서도 사용자 계정을 발급해야 함
사용자 생성을 위한 CREATE USER 명령어의 형식
CREATE USER user_name
IDENTIFIED BY password;
- 사용자의 생성은 사용자의 이름과 암호를 지정하여 생성
- 사용자를 생성하기 위해서도 권한이 필요함
- 우리가 지금까지 주로 사용해 왔던 SCOTT이란 사용자는 사용자를 생성할 권한이 없습니다.
- 새로운 사용자 계정을 발급받기 전에 주의할 점이 있음
- 1장에서 언급한 바 있지만, 사용자를 생성하기 위해서는 시스템 권한을 가지고 있어야 함
- 오라클 데이터베이스를 설치할 때 자동으로 생성되는 디폴트 사용자 가운데 시스템 권한을 가진 데이터베이스 관리자인 DBA는 SYS, SYSTEM 임
- 그러므로 사용자 계정을 발급 받기 위해서 시스템 권한을 가진 SYSTEM으로 접속해야 함
사용자 생성하기
CREATE USER 명령어를 사용하여 사용자명은 USER01 암호는 TIGER로 사용자를 생성해보자
1.오라클 설치할 때 system 사용자의 암호를 manager 로 지정하였기 때문에 위와 같이 입력하였습니다. 오라클 설치할 때 암호를 변경하지 않았다면 다음과 같이 접속합니다.
CONN system/manager
2.사용자명은 USER01 암호는 TIGER로 사용자를 생성해봅시다. 사용자를 생성하기 위해서는 CREATE USER 명령어를 사용합니다.
CREATE USER USER01 IDENTIFIED BY TIGER;
3.새롭게 생성된 사용자로 접속을 해봅시다.
CONN USER01/TIGER
4) 권한을 부여하는 GRANT 명령어
GRANT privilege_name, …
TO user_name;
- 만일 user_name 대신 PUBLIC을 기술하면 모든 사용자에게 해당 시스템 권한이 부여
- PUBLIC 이란 DB 내에 있는 모든 계정을 의미
- 새로 생성된 user01에 데이터베이스에 접속할 수 있는 권한인 CREATE SESSION를 부여
CREATE SESSION 권한 부여하기
1. CREATE SESSION 권한 역시 DBA 만이 부여할 수 있으므로 system 으로
로그인합니다.
CONN system/manager
2. SYSTEM으로 로그인한 후에 다음과 같이 USER01 사용자에게
CREATE SESSION 권한을 부여합니다.
GRANT CREATE SESSION TO USER01;
3. USER01 사용자에 데이터베이스에 연결할 수 있는 권한인 CREATE SESSION이 성공적으로 부여되었기에 USER01 사용자로 데이터베이스에 접속을 시도하면 성공적으로 접속됩니다.
CONN USER01/TIGER;
5) WITH ADMIN OPTION 옵션
- 사용자에게 시스템 권한을 WITH ADMIN OPTION과 함께 부여하면 그 사용자는 데이터베이스 관리자가 아닌데도 불구하고 부여받은 시스템 권한을 다른 사용자에게 부여할 수 있는 권한도 함께 부여 받게 됨
- 데이터베이스 관리자로 로그인해서 사용자 USER02 와 USER03 를 생성
- 역시 데이터베이스 관리자에서 USER02 와 USER03 에 데이터베이스에 접속할 수 있는 권한인 CREATE SESSION 권한을 부여하는데 USER02 는 WITH ADMIN OPTION을 지정하고 USER03 은 WITH ADMIN OPTION을 지정하지 않은 채 권한 부여를 할 것
- USER02 사용자로 로그인하면 CREATE SESSION 권한을 USER01 사용자에게 부여할 수 있음
- 이것이 가능해진 것은 USER02에게 WITH ADMIN OPTION을 사용하여 CREATE SESSION 권한을 부여하여 그 권한을 다른 사용자에게도 부여할 수 있도록 허용하였기 때문
- USER03 사용자는 단순히 CREATE SESSION 권한만을 부여받았으므로 그 권한을 다른 사용자에게 부여할 수 없음
6) 객체 권한
- 객체 권한은 특정 객체에 조작을 할 수 있는 권한, 객체의 소유자는 객체에 대한 모든 권한을 가짐
권 한 | TABLE | VIEW | SEQUENCE | PROCEDURE |
ALTER | O | O | ||
DELETE | O | O | ||
EXECUTE | O | |||
INDEX | O | |||
INSERT | O | O | ||
REFERENCES | O | |||
SELECT | O | O | O | |
UPDATE | O | O |
- 객체 권한은 테이블이나 뷰나 시퀀스나 함수 등과 같은 객체별로 DML문(SELECT, INSERT, DELETE)을 사용할 수 있는 권한을 설정하는 것
GRANT privilege_name [(column_name)] | ALL ①
ON object_name | role_name | PUBLIC ②
TO user_name; ③
- GRANT 명령어의 형식은 어떤 객체(②)에 어떠한 권한(①)을 어느 사용자(③)에게 부여하는가를 설정
- 시스템 권한과 차이점이 있다면 ON 옵션이 추가된다는 점. ON 다음에 테이블 객체나 뷰 객체 등을 기술.
'DB > Oracle' 카테고리의 다른 글
Oracle DB #13 인덱스 (0) | 2021.06.15 |
---|---|
Oracle DB #12 시퀀스 (0) | 2021.06.12 |
Oracle DB #11 가상 테이블인 뷰 (0) | 2021.06.10 |
Oracle DB #10 데이터 무결성을 위한 제약 조건 (0) | 2021.06.09 |
Oracle DB #9 데이터 무결성을 위한 제약조건 (0) | 2021.06.05 |