DBDBDEEP
Oracle 권한 / Role 본문
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
ㄴ--> DBA가 new_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) 정책활성화
- 생성된 정책은 기본적으로 활성화되지 않는다.
ㄴ--> 정책을 활성화 하여 사용된 권한의 분석 시작
3)보고서 생성(두가지 유형의 결과)
DBA_USER_... / DBA_UNUSED_..
사용 / 미사용
'Oracle ADMIN' 카테고리의 다른 글
Oracle 데이터베이스 저장 영역 구조 (0) | 2022.07.03 |
---|---|
Oracle 프로파일 생성 및 관리 (0) | 2022.07.03 |
Oracle 유저 보안 관리 (계정 종류 및 유저 인증) (0) | 2022.06.30 |
Oracle Net 서비스 구성 및 관리 도구 (0) | 2022.06.28 |
Oracle 네트워크 환경구성 , Oracle net 서비스 (0) | 2022.06.28 |