7-1 유저 작성, 변경, 삭제
Oracle 데이터베이스에는 관리용 유저가 미리 작성되어 있다.
계정 | 설명 |
SYS | 데이터베이스 기동/정지를 포함한 모든 조작을 실행하는 관리용 유저 |
SYSTEM | 데이터베이스 기동/정지 등 일부를 제외한 거의 모든 조작을 실행하는 관리용 유저 |
데이터 접근권한 등 시큐리티상의 문제가 있기 때문에, 어플리케이션에서는 관리용 유저로 데이터를 관리/처리해서는 안된다.
CREATE USER 커맨드
속성 | 설명 |
유저명 | 새로 작성하는 유저명 |
패스워드 | Oracle에 접속할 때 지정하는 패스워드 |
Default 테이블스페이스 | 기본적으로 저장할 테이블스페이스 |
Default Temp 테이블스페이스 | 대량의 데이터처리를 실행할 때 사용되는 Temp 테이블스페이스 |
테이블스페이스 쿼터 | 사용 가능한 테이블스페이스 사이즈의 상한 |
프로필 | 패스워드 정책 혹은 리소스 제한 |
패스워드 유효기간 | 처음 로그인 할 때 패스워드 설정을 필요로 할지의 여부 |
계정 록 | 일시적으로 로그인 불가상태로 지정할지의 여부 |
테이블스페이스의 쿼터: 테이블스페이스에 있어서, 유저가 사용가능한 저장공간의 최대 사이즈이다. 위 사진의 경우, TBS01 테이블스페이스에는 10M를 할당하고, TBS02 테이블스페이스에는 무제한으로 공간 사용이 가능하다.
프로필
프로필은, 시큐리티 강화를 위해 유저가 지켜야 하는 패스워드 정책 룰을 모은 것이다. (*프로필은 유저 혹은 세션의 리소스 사용량을 제어하기도 한다. 이는 오라클마스터 실버에서 다룬다.) DEFAULT 프로필은 사전에 데이터베이스가 생성해 놓고, 삭제는 불가능하다.
설정가능한 파라미터 | 설명 | DEFAULT 값 |
PASSWORD_LIFE_TIME | 패스워드의 유효기간 (일수) | 180일 |
PASSWORD_GRACE_TIME | 패스워드의 유효기한이 종료된 후 경고가 발생하나, 로그인과 패스워드 변경은 허용되는 유예기간 | 7일 |
PASSWORD_REUSE_MAX | 패스워드를 재이용 가능하게 하는 변경회수 | UNLIMITED |
PASSWORD_REUSE_TIME | 패스워드 재이용 불가한 일수. | UNLIMITED |
PASSWORD_VERIFY_FUNCTION | 패스워드 룰을 실행하는 PL/SQL 함수명을 지정. 패스워드 문자수나 사용가능한 문자의 지정 등을 가능하게 함. | NULL |
PASSWORD_LOGIN_ATTEMPTS | 지정된 회수를 연속하여 로그인에 실패한 계정을 LOCK시킴 | 10회 |
PASSWORD_LOCK_TIME | FAILED_LOGIN_ATTEMPTS에 지정된 회수를 연속하여 로그인 실패했을 경우, 계정이 LOCK되는 시간 | 1일 |
패스워드 기간만료
유저 작성시에 PASSWORD EXPIRE를 지정하면, 그 유저를 [패스워드 기간만료] 상태로 바꾼다.
유저 잠금/해제 및 삭제
유저 삭제를 진행할 때, 이미 유저가 테이블이나 인덱스 등 오브젝트를 소유하고 있을 경우에는 그 오브젝트가 함께 삭제해야 할 필요가 있다. 그렇지 않으면, 유저의 삭제도 에러가 발생하기 때문이다.
DROP USER c##user02 CASCADE;
덤으로, command에서 유저를 관리할 때 앞에 'C##'라는 접두사를 붙여야 하는데,
alter session set "_ORACLE_SCRIPT"=true;
이 코드를 삽입하면 접두사를 붙이지 않고 유저 이름만 입력해도 된다.
7-2 권한 관리
Oracle 데이터베이스의 유저는 데이터베이스로 로그인하려는 모든 조작을 실행하기 위해서 권한이 필요하다.
권한 | 개요 | 권한부여 대상이 되는 조작 |
시스템 권한 | 데이터베이스에 대해 어떤 조작을 허용할까 | -데이터베이스에 로그인 (CREATE SESSION) -테이블을 작성 (CREATE TABLE) -테이블스페이스를 작성 (CREATE TABLESPACE) -유저를 작성 (CREATE USER) 등 |
오브젝트 권한 | 오브젝트에 대해 어떤 조작을 허용할까 | -검색 (SELECT) -새로운 행을 삽입 (INSERT) -기존 값을 변경 (UPDATE) -기존 행을 삭제 (DELETE) 등 |
시스템 권한 부여 및 박탈
GRANT <시스템권한명> TO <부여대상 유저>;
REVOKE <시스템권한명> TO <취소대상 유저>;
--부여대상 유저에게 또 다른 유저에게의 권한 부여권 설정
GRANT <시스템권한명> TO <부여대상 유저> WITH ADMIN OPTION;
오브젝트 권한 부여 및 박탈
GRANT <오브젝트 권한명> ON <오브젝트명> TO <부여대상 유저>;
REVOKE <오브젝트 권한명> ON <오브젝트명> FROM <취소대상 유저>;
--부여대상 유저에게 또 다른 유저에게의 권한 부여권 설정
GRANT <오브젝트 권한명> ON <오브젝트명> TO <부여대상 유저> WITH GRANT OPTION;
롤(ROLE)
여러 권한을 하나로 정리해 조작하기 쉽게 한 것.
예를 들어, EMP 테이블과 DEPT 테이블에 한 유저가 액세스하고 추가 작업을 가능하게 하려면, 다음과 같은 권한이 필요하다.
- 데이터베이스에 접속하는 <CREATE SESSION> 시스템 권한
- EMP 테이블에 SELECT와 INSERT가 가능하게 하는 권한
- DEPT 테이블에 SELECT와 INSERT가 가능하게 하는 권한
한 유저에 여러 롤이 지정되었고, 롤들의 권한이 겹치는 경우에는, 하나의 롤이 박탈되더라도 그 겹치는 권한은 여전히 실행 가능하다.
롤 부여와 박탈
GRANT <롤 이름> TO <부여대상 유저>;
REVOKE <롤 이름> FROM <취소대상 유저>;
사전정의된 주요 롤
롤 | 설명 |
CONNECT | CREATE SESSION 권한만 포함되어, 데이터베이스로의 접속을 가능하게 한다. Oracle Enterprise Manager를 사용해 유저를 작성하면, 이 롤은 자동적으로 유저에 부여됨. |
RESOURCE | 스키마 오브젝트의 작성, 변경 및 삭제를 가능하게 함. |
DBA | default로 sys 및 system 유저에 부여되는, 모든 시스템권한이 포함되어 있는 롤. 인스턴스의 기동/정지 권한은 포함되어 있지 않다. |
SELECT_CATALOG_ROLE | 데이터 딕셔너리 안의 오브젝트에 대한 select 권한 |
EM_EXPRESS_BASIC | EM Express에 접속하여 Read Only 모드로 페이지를 표시하는 권한 |
EM_EXPRESS_ALL | EM Express에 접속하여 EM Express에 의해 제공되는 모든 기능을 사용할 수 있는 권한. EM_EXPRESS_BASIC의 상위호환이다. |
관리권한- SYSDBA / SYSOPER
SYS 유저에는 DBA롤 뿐만 아니라 SYSDBA권한이 부여되어 있어, 인스턴스의 기동 및 정지와 백업과 리커버리를 포함한 모든 관리조작이 가능하다. 반면, SYSTEM 유저에는 관리권한이 부여되어 있지 않다.
관리권한 | 설명 |
SYSDBA 권한 | -인스턴스의 기동 및 정지, 백업과 리커버리를 포함한 모든 관리조작이 가능함. -SYS 유저로 접속이 가능함 -모든 유저의 데이터에 접속 가능 |
SYSOPER 권한 | -인스턴스의 기동 정지, 백업과 리커버리를 포함한 관리조작이 가능하지만, 데이터베이스의 작성과 삭제 그리고 불완전 리커버리는 실행이 불가능하다. -유저의 데이터에 접속할 수 없다. -PUBLIC 유저로 접속된다 |
관리권한을 가진 유저는 OS인증 혹은 패스워드파일 방식으로 인증한다.
(* 패스워드 파일은 데이터베이스 바깥에 위치해 있으며, 관리권한을 가진 유저의 패스워드 정보만 저장한다. 그 외의 유저는 데이터 딕셔너리에서 관리한다.)
'Oracle > Oracle Architecture' 카테고리의 다른 글
오라클마스터 브론즈(9) 데이터베이스 감시 및 어드바이저 사용 (0) | 2022.09.14 |
---|---|
오라클마스터 브론즈(8) 스키마 오브젝트 관리 (1) | 2022.09.13 |
오라클마스터 브론즈(6) 데이터베이스 저장공간구조 관리 (0) | 2022.09.09 |
오라클마스터 브론즈(5) Oracle 인스턴스 관리 (0) | 2022.09.07 |
오라클마스터 브론즈(4) Oracle 데이터베이스 환경 구성 (0) | 2022.09.06 |