Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

DBDBDEEP

Oracle 권한 / Role 본문

Oracle ADMIN

Oracle 권한 / Role

Kihwane 2022. 7. 3. 14:40

1. 시스템 권한

- DBA가 부여하는 권한이다.

- 유저가 데이터베이스에서 특정 작업을 수행할 수 있도록 한다. ex) 세션을 생성한다.

    ⦁ Restricted Session : 이 권한을 사용하면 데이터베이스가 제한 모드로 열려있어도 로그인이 가능하다.

           ㄴ-> ex) alter system enable restricted session;

 

    ⦁ DROP ANY object : 다른 스키마 유저가 소유한 객체를 삭제할 수 있다.

    ⦁ SYSDBA / SYSOPER / SYSDG / SYSKM

           ㄴ-> DB 종료 / 시작 / recovery 등 수행 가능

           ㄴ-> sys로 시작하는 권한을 부여하면 password file에 해당 유저 등록한다.

 

 

 GRANT 를 사용하면 CREATE / MANAGER / ALTER / TABLESPACE 를 권한 사용이 가능하다.

*  GRANT ANY OBJECT PRIVILEGE  : 자신이 소유하지 않은 객체에 대해 사용 권한 부여 가능

 

시스템 권한 부여 / 제거 명령어

SQL > grant create session,create table

           to new_user, user2..

           to public (전 유저에게 부여)

 

with admin option

SQL > grant create session,create table

            to new_user with admin option

                ㄴ--> DBAnew_user에게 권한을 줬으면 받은 권한을 다른 3자에게 줄 수 있음. 

 

* 준 자와 받은 자가 동등 해지기 때문에 받은 권한을 행사해서 3자에게 막 줄 수  있음.

  준사람한테서 권한을 뺐는 것도 가능하다.

   ㄴ-->  가능하면 하지 말아야 한다

 

 

SQL > revoke create session, create table

           from new_user;

          시스템권한연쇄적으로 취소되지 않는다.


2. 객체권한 (object Privs)

- 유저가 특정 객체를 액세스 및 조작할 수 있다. ex) 사원 생성

- 유저는 객체 권한을 사용하여 테이블, 뷰, 시퀀스, 프로시저, 함수 등의 특정 개체에 대하여 특정 작업을 수행할 수 있다.

- 오브젝트를 직접 생성한 Owner가 한다.

- table : select, insert, update, delete, index, reference

 

객체권한 부여 / 제거

객체 권한 부여

┗━> grant select,insert // 부여할 권한 (select, insert)

          on employees // 권한을 부여할 테이블명

          to ora1 // 권한을 부여받을 대상

          with grant option; // 다른 스키마에 권한을 부여할 수 있는 권한

 

권한을 부여받아 다른 스키마의 테이블을 조작할 때는 소유 스키마의 이름을 앞에 붙인다.

┗━> select * from hr.employees;

 

 

객체에서  뺏는 명령어

hr > revoke select on employees from ora1;

 

* 객체권한을 뺏을때는 제 3자에게 주었던 권한도 연쇄적으로 뺐는다.


3. Role

롤에는 시스템권한, 객체권한이 들어갈 수 있음

롤에는 시스템권한+ 객체권한 동시에 들어갈 수 있음

롤은     소유자의 개념이 없음.

 

명령어

 

1. dev 라는 롤을 만든다.    *  Role 네임은 개발자를 위한 것이기에 dev. 으로 관용적으로 시작한다.

> create role dev ; 

 

2. 롤에 권한을 부여한다.

> grant create session, create table, create procedure

 

3. 사용자에게 롤 부여

> grant dev to user01, user02, user03;

 

4. 권한 추가

> grant create view to dev;

 

5. 권한 삭제

> revoke create procedure from dev;

 

 ROLE 사용의 장점

 

권한 관리가 용이성

- 권한 관리를 단순화한다.

- 여러 유저에게 일련의 동일한 권한 부여 -> 권한을 롤에 부여한 다음 유저에게 롤 부여

 

동적 권한 관리

- 롤을 수정하면 그 롤을 부여받은 모든 유저는 자동으로 즉시 수정된 권한을 얻는다.

 

권한의 선택적 가용성

- 롤을 활성화 및 비활성화하여 권한을 일시적으로 설정 및 해제할 수 있다.

- 특정 상황에서 유저의 권한을 제어할 수 있다.


미리 정의된 Role

- 데이터베이스 생성 스크립트를 실행할 때 오라클 데이터베이스에 대해 자동으로 정의된 롤.

- 실수로 필요한 기능을 비활성화 할 수 있기 때문에 Oracle 지원센터의 도움 없이 변경할 수 있다.

 

보안 롤

-롤은 비기본값으로 설정하고 필요할 때 활성화 할 수 있음

-롤은 인증, 프로그래밍 방식을 통해 보호할 수 있음

SQL > create role r2 identified by oracle_4U;

 

default Role

-필요에 따라 활성화 하여 사용하는 role

- role을 사용하려면 유저가 명시적으로 활성화시켜 주어야 한다.

- 원래 default 키워드를 안쓰면 롤은 그냥 원래 default 이다.


 

4. 권한 분석

데이터베이스 및 응용프로그램 유저의 권한이 지나치게 커지는 것을 방지한다. 권한을 제대로 쓰고 있지 않다면 회수를 해야하므로 Monitoring 한다. 불필요한 권한을 취소하기 위해 사용된 권한을 분석한다.

 

권한 분석에는 DBMS_PRIVILEGE_CAPTURE 패키지를 사용한다.                         ㄴ-> 12cNF 버전부터 사용 가능                         ㄴ-> 이 패키지 안에는 권한분석에 필요한 프로시저들이 들어있다

 

권한분석 흐름

 

1) 사용된 권한 분석의 대상이 될 객체 정의한다.

- 분석 유형 설정, 연산자를 이용해 여러 조건 조합가능

 

   1. 데이터베이스 분석

       - 어떤 조건도 지정되지 않은 경우 전체 데이터베이스에서 사용된 권한을 분석

       ㄴ-> 관리 유저가 사용하는 권한제외

 

   2. 롤 분석

     - 롤이 정의 된 경우 그 롤에서 실행한 권한 분석

 

    3. 컨텍스트별 분석

      - 컨텍스트가 정의된 경우 해당 응용프로그램 모듈 또는 지정된 컨텍스트에서 사용된 권한을 분석한다

 

2) 정책활성화

- 생성된 정책은 기본적으로 활성화되지 않는다.

  ㄴ--> 정책을 활성화 하여 사용된 권한의 분석 시작

ENABLE_CAPTURE : 사용된 권한 분석을 시작한다.                                                 DISABLE_CAPTURE : 사용된 권한 분석을 종료한다.

3)보고서 생성(두가지 유형의 결과)

DBA_USER_... / DBA_UNUSED_.. 

                사용  / 미사용

권한이 어떻게 쓰이고 있는지 알 수 있다.