1. 권한 관리
- 시스템 권한
. 사용자가 데이터베이스에서 특정 작업을 수행할 수 있도록 함
. 테이블, 슈, 롤백 세그먼트 및 프로시저의 생성, 삭제 및 변경 등
. DBA가 부여
- 객체 권한
. 사용자가 특정 객체를 액세스 및 조작할 수 있도록 함
. 객체의 OWNER가 부여

2. 시스템 권한
- 약 126개의 시스템 권한이 있으며 그 수는 계속 증가
- 권한의 분류
. CREATE SESSION 및 CREATE TABLESPACE와 같은 시스템 작업 권한
. CREATE TABLE과 같이 사용자가 소유한 스키마에 있는 객체의 관리 권한
. CREATE ANY TABLE과 같이 모든 스키마에 있는 객체의 관리 권한
- 권한은 사용자나 롤에 시스템 권한을 추가 및 취소하는 DDL 명령인 GRANT와
  REVOKE를 사용하여 제어 가능
- ANY 권한을 가진 사용자는 접두어 USER_ 및 ALL이 붙은 딕셔너리 테이블을
  제외한 딕셔너리 테이블과 권한이 PUBLIC에 부여된 뷰를 엑세스할 수 있음
 
3. 시스템 권한 : 예제
- INDEX
. CREATE ANY INDEX
. ALTER ANY INDEX
. DROP ANY INDEX
- TABLE
. CREATE TABLE
. CREATE ANY TABLE
. ALTER ANY TABLE
. DROP ANY TABLE
. SELECT ANY TABLE
. UPDATE ANY TABLE
. DELETE ANY TABLE
- SESSION
. CREATE SESSION
. ALTER SESSION
. RESTRICTED SESSION
- TABLESPACE
. CREATE TABLESPACE
. ALTER TABLESPACE
. DROP TABLESPACE
. UNLIMITED TABLESPACE
- 설명
. CREATE INDEX라는 권한은 없음
. CREATE TABLE, CREATE PROCEDURE 또는 CREATE CLUSTER 등의 권한은
  이러한 객체의 삭제 권한을 포함함
. CREATE TABLE은 CREATE INDEX 및 ANALYZE 명령을 포함
. UNLIMITED TABLESPACE는 롤에 부여할 수 없음
. 테이블을 자르기 위해서는 DROP ANY TABLE 권한이 필요

4. 시스템 권한 부여
- 예제
. GRANT CREATE SESSION, CREATE TABLE TO managers;
. GRANT CREATE SESSION TO scott WITH ADMIN OPTION;
- 구문
. GRANT { system_priv | role } [, { system_priv | role } ]...
  TO { user | role | PUBLIC } [, { user | role | PUBLIC } ]...
  [ WITH ADMIN OPTION ]
- 설명
. system_priv : 부여할 시스템 권한을 지정
. role : 부여할 롤 이름을 지정
. PUBLIC : 모든 사용자에게 시스템 권한을 부여
. WITH_ADMIN_OPTION : 권한을 부여받은 사람이 해당 권한이나 롤을
  다시 다른 사용자나 롤에 부여할 수 있게 함
- 지침
. 시스템 권한을 부여하려면 WITH_ADMIN_OPTION 권한이 필요
. ADMIN OPTION 권한을 부여받은 사람은 다시 ADMIN OPTION을 사용하여
  시스템 권한이나 롤을 부여할 수 있음
. GRANT ANY ROLE 시스템 권한을 부여받은 사용자는 데이터베이스의 롤 부여 가능
. ADMIN OPTION 권한을 부여받은 사용자는 데이터베이스에 있는 사용자나 롤에
  시스템 권한을 부여하거나 취소할 수 있음
 
5. 패스워드 파일 인증
- SYSDBA 및 SYSOPER 권한
- SYSOPER
. STARTUP
. SHUTDOWN
. ALTER DATABASE OPEN | MOUNT
. ALTER DATABASE BACKUP CONTROLFILE
. ALTER TABLESPACE BEGIN/END BACKUP
. RECOVER DATABASE
. ALTER DATABASE ARCHIVELOG
. RESTRICTED SESSION
- SYSDBA
. SYSOPER privileges WITH ADMIN OPTION
. CREATE DATABASE : internal 접속시에만 가능
. RECOVER DATABASE UNTIL

6. 패스워드 파일 인증
- 패스워드 파일의 생성 여부를 확인하고, 생성되지 않았으면 ORAPWD를 사용하여
  생성함
- 초기화 파라미터 REMOTE_LOGIN_PASSWORD_FILE이 EXCLUSIVE로 설정되었는지 확인
- 사용자에게 SYSOPER 및 SYSDBA 권한을 부여 : WITH ADMIN OPTION 사용 불가
- V$PWFILE_USERS를 질의하여 패스워드 파일 멤버를 확인

7. 시스템 권한 표시
- DBA_SYS_PRIVS : 데이터베이스 레벨
. GRANTEE
. PRIVILEGE
. ADMIN OPTION
- SESSION_PRIVS : 세션 레벨
. PRIVILEGE

8. 시스템 권한 제한 : 딕셔너리에 대한 승인되지 않은 액세스를 방지하는 방법
- O7_DICTIONARY_ACCESSIBILITY = TRUE (SYS스키마에 있는 객체를 액세스 가능)
. ORACLE 7 작업 방식으로 반전
. ANY 키워드를 사용하여 시스템 권한의 제한 제거
. 기본값은 TRUE
- O7_DICTIONARY_ACCESSIBILITY = FALSE 인 경우 SELECT ANY TABLE문으로
  SYS스키마를 제외한 스키마에 있는 뷰나 테이블을 액세스 할 수 있음

9. 시스템 권한 취소
- 예제
. REVOKE CREATE TABLE FROM karen;
. REVOKE CREATE SESSION FROM scott;
- 구문
. REVOKE { system_priv | role } [, { system_priv | role } ]...
  FROM { user | role | PUBLIC } [, { user | role | PUBLIC } ]...
- 참고
. REVOKE 명령은 GRANT 명령을 사용하여 직접 부여받은 권한만 취소 가능
. 시스템 권한 취소는 일부 종속 객체에 영향을 줄 수도 있음. 예를 들어,
  SELECT ANY TABLE 권한을 부여받은 사용자가 이 권한을 다른 스키마에서
  테이블을 사용하는 프로시저나 뷰에 부여한 경우에 권한을 취소하면
  해당 프로시저나 뷰가 무효화됨

10. WITH ADMIN OPTION을 사용하여 시스템 권한 취소
- WITH ADMIN OPTION 사용 유무와 관계없이 시스템 권한을 취소할 때는
  연쇄적으로 취소되지 않음
- 시나리오
. DBA가 ADMIN OPTION을 사용하여 KAREN에게 CREATE TABLE 시스템 권한 부여
. KAREN이 테이블 생성
. KAREN이 CREATE TABLE 시스템 권한을 SCOTT에게 부여
. SCOTT이 테이블을 생성
. 관리자가 KAREN에게 부여된 CREATE TABLE 시스템 권한을 취소
- 결과
. KAREN의 테이블은 여전히 존재하지만 KAREN은 새 테이블을 생성할 수 없음
. SCOTT은 여전히 테이블과 CREATE TABLE 시스템 권한을 갖음
- 참고
. KAREN이 CREATE TABLE WITH ADMIN OPTION TO SCOTT으로 권한을 부여했을 경우
  SCOTT은 KAREN의 권한을 취소할 수 있음
 
11. 객체 권한
- 각 객체 권한을 부여받은 사람은 객체에 일부 작업을 수행할 수 있도록 인증됨
- 객체 권한 요약
. ALTER      : 테이블 / 시퀀스
. DELETE     : 테이블 / 뷰
. EXECUTE    : 프로시저
. INDEX      : 테이블
. INSERT     : 테이블 / 뷰
. REFERENCES : 테이블
. SELECT     : 테이블 / 뷰 / 시퀀스
. UPDATE     : 테이블 / 뷰

12. 객체 권한 부여
- 예제
. GRANT EXECUTE ON dbms_pipe TO public;
. GRANT UPDATE(first_name, salary) ON
  employee TO karen WITH GRANT OPTION;
- 구문
. GRANT { object_priv [(column_list)]
  [, object_priv [(column_list)] ]...
  | ALL [ PRIVILEGES ] }
  ON [schema.]object
  TO { user | role | PUBLIC }
  [, { user | role | PUBLIC } ]...
  [ WITH GRANT OPTION ]
- 지침
. 권한을 부여하려면 객체가 사용자의 스키마에 있어야 하거나
  WITH GRANT OPTION 권한을 부여받았어야 함
. 기본적으로 객체를 소유하는 경우 해당 객체의 모든 권한은 자동으로 획득됨
. 보안 문제가 발생할 수 있을 경우에는 객체 권한을 다른 사용자에게 부여시 주의
. 롤에 권한을 부여할 때는 WITH GRANT OPTION 옵션을 사용할 수 없음

13. 객체 권한 표시
- DBA_TAB_PRIVS
. GRANTEE
. OWNER
. TABLE_NAME
. GRANTOR
. PRIVILEGE
. GRANTABLE
- DBA_COL_PRIVS
. GRANTEE
. OWNER
. TABLE_NAME
. COLUMN_NAME
. GRANTOR
. PRIVILEGE
. GRANTABLE

14. 객체 권한 취소
- 예제
. REVOKE execute ON dbms_pipe FROM scott;
- 구문
. REVOKE { object_priv [, object_priv ]...
   | ALL [ PRIVILEGES ] }
  ON [schema.]object
  FROM { user | role | PUBLIC }
     [, { user | role | PUBLIC } ]...
  [ CASCADE CONSTRAINTS ]
- 제한 사항
. 권한을 부여한 사람은 자신이 권한을 부여했던 사용자의 권한만을 취소 가능

15. WITH GRANT OPTION을 사용하여 객체 권한 취소
- WITH GRANT OPTION을 사용하여 부여한 객체 권한을 취소하면 취소 작업이
  연쇄적으로 수행됨
- 시나리오
. USER1에게 GRANT OPTION을 사용하여 SELECT 객체 권한을 부여
. USER1이 EMP의 SELECT권한을 USER2에게 부여
- 결과
. 나중에 SELECT권한을 USER1에게서 취소시 이 작업이 USER2에게도 연쇄적으로 수행

16. 감사 지침
- 감사 목적 정의
. 의심이 가는 데이터베이스 작업
. 기록 정보 수집
- 감사 대상 정의
. 사용자, 명령문 또는 객체 감사
. 세션별 감사
. 성공 또는 실패 중 하나만 감사
- 감사 트레일 관리
. 감사 트레일 성장 모니터
. 승인되지 않은 액세스로부터 감사 트레일 보호

17. 감사 범주
- 권한이 부여된 작업 감사
. 항상 감사
. 시작, 종료 및 SYSDBA 연결
- 데이터베이스 감사
. DBA가 활성화 함
. 열 값을 기록할 수 없음
- 값 기준 또는 응용 프로그램 감사
. 코드를 통해 구현
. 열 값을 기록할 수 있음
. 테이블 변경 추적에 사용

18. 데이터베이스 감사 사용
- 데이터베이스 감사 활성화 및 비활성화 : AUDIT_TRAIL 초기화 파라미터를 설정
. AUDIT_TRAIL = DB / OS / NONE
. DB : 감사를 활성화하고 모든 감사 레코드를 데이터베이스 감사 트레일
  (SYS.AUD$)로 지정
. OS : 운영 체제에서 허용하는 경우 감사를 활성화하고 모든 감사 레코드를
  운영체제 감사 트레일로 지정
. NONE : 기본값으로 감사를 비활성화함
- 감사 옵션 지정
. AUDIT 명령을 사용하여 특정 감사 옵션을 설정
- 명령문 실행
. PL/SQL문과 SQL문을 실행할 때 서버 프로세스는 감사 옵션을 검사하여
  실행중인 명령문이 감사 레코드를 생성할지 여부를 결정
- 감사 데이터 생성
- 감사 정보 검토

19. 감사 옵션 활성화
- 명령문 감사
. AUDIT user;
- 권한 감사
. AUDIT select any table BY summit BY ACCESS;
- 스키마 객체 감사
. AUDIT LOCK ON summit.employee BY ACCESS WHENEVER SUCCESSFUL;

20. 감사 옵션 보기
- ALL_DEF_AUDIT_OPTS : 기본 감사 옵션
- DBA_STMT_AUDIT_OPTS : 명령문 감사 옵션
- DBA_PRIV_AUDIT_OPTS : 권한 감사 옵션
- DBA_OBJ_AUDIT_OPTS : 스키마 객체 감사 옵션

21. 감사 결과 보기
- DBA_AUDIT_TRAIL : 모든 감사 트레일 항목
- DBA_AUDIT_EXISTS : AUDIT EXISTS/NOT EXISTS에 대한 레코드
- DBA_AUDIT_OBJECT : 스키마 객체 관련 레코드
- DBA_AUDIT_SESSION : 모든 연결 및 연결 해제 항목
- DBA_AUDIT_STATEMENT : 명령문 감사 레코드 





 





 

Posted by 나른한스누피