[Oracle] 사용자 관리(실습)

HYEOB KIM·2022년 12월 22일
0

Oracle

목록 보기
25/58
post-custom-banner

기본 실습

사용자 생성하기

  1. default tablespace 생성
  2. temporary tablespace 생성
  3. user 생성
  4. 권한 설정
SQL> create tablespace khyup
  2  datafile '/ORA19/app/oracle/oradata/ORACLE19/khyup01.dbf' size 10M;

SQL> select tablespace_name, bytes/1024/1024 MB, file_name
  2  from dba_data_files;

SQL> create temporary tablespace temp_khyup
  2  tempfile '/ORA19/app/oracle/oradata/ORACLE19/temp_khyup01.dbf' size 10M;

SQL> create user khyup
  2  identified by khyup
  3  default tablespace khyup
  4  temporary tablespace temp_khyup
  5  quota unlimited on khyup  -- 할당량을 무제한으로 설정
  6  quota 0m on system;  -- system tablespace를 사용하지 못하게 설정

-- 여기서 resource, connect는 모두 role입니다.
SQL> grant resource, connect to khyup;

SQL> select username, default_tablespace "Default TS", temporary_tablespace "Temp TS"
  2  from dba_users
  3  where username='KHYUP';

SQL> conn khyup/khyup;

profile 생성하기(password 관련)

  • 조건1: 로그인 시도 3회 실패 시 계정을 5일 동안 사용 못하게 할 것
  • 조건2: 계정의 암호는 15일에 한 번씩 변경하도록 할 것
  • 조건3: 동일한 암호는 15일 동안 사용 못하게 할 것
SQL> create profile sample_prof limit
  2  failed_login_attempt 3
  3  password_lock_time 5
  4  password_life_time 15
  5  password_reuse_time 15;

profile 생성하기(리소스 관련)

  • 조건1: 1명당 연속적으로 CPU를 사용할 수 있는 시간을 10초로 제한
  • 조건2: 하루 중 8시간만 DB에 접속 가능하게 할 것.
  • 조건3: 10분 동안 사용하지 않으면 강제로 접속 종료
SQL> create profile re_sample_prof limit
  2  cpu_per_session 1000
  3  connect_time 480
  4  idle_time 10;

사용자에게 profile 할당하기

  1. 사용자가 적용 받고 있는 profile 확인
  2. 해당 profile에 어떤 내용이 있는지 확인
  3. 사용자에게 profile 적용 후 확인
  4. 사용 안 하는 profile 삭제하기
SQL> select username, profile
  2  from dba_users
  3  where username='KHYUP';

SQL> select *
  2  from dba_profiles
  3  where profile='SAMPLE_PROF';

SQL> select *
  2  from dba_profiles
  3  where profile='RE_SAMPLE_PROF';

SQL> alter user khyup profile sample_prof;

SQL> alter user khyup profile re_sample_prof;

-- 여러 개의 profile을 적용하는 것이 불가능하다는 것을 알 수 있음.
SQL> select username, profile
  2  from dba_users
  3  where username='KHYUP';

-- 할당되어 있는 profile은 삭제 불가능
SQL> drop profile re_sample_prof;

-- 할당되어 있는 profile을 삭제하기 위해서는 cascade를 붙여주면 됨
SQL> drop profile re_sample_prof cascade;

-- 그 profile을 사용하는 user의 profile은 default로 변경됨.
SQL> select username, profile
  2  from dba_users
  3  where username='KHYUP';

권한 할당/해제하기

SQL> grant create table, create session to khyup;

-- System 권한 관련 받은 권한을 다른 사람에 줄 수 있는 권한 부여(with admin option)
SQL> grant create table, create session to khyup with admin option;

SQL> revoke create table from khyup;

SQL> grant select on khyup.testtable to khyup;

-- 받은 권한을 다른 사람에 줄 수 있는 권한 부여(with grant option)
SQL> grant update on khyup.testtable to khyup with grant option;

SQL> revoke select on khyup.testtable from khyup;

권한 조회하기

SQL> select *
  2  from dba_sys_privs
  3  where grantee='KHYUP';

Role 관리하기

SQL> create role trole;

SQL> grant create session, create table to trole;

SQL> grant trole to khyup;

-- user가 어떤 role을 가지고 있는지 조회
SQL> select *
  2  from dba_role_privs where grantee='KHYUP';

GRANTEE         GRANTED_ROLE    ADM DEL DEF COM INH
--------------- --------------- --- --- --- --- ---
KHYUP           RESOURCE        NO  NO  YES NO  NO
KHYUP           TROLE           NO  NO  YES NO  NO
KHYUP           CONNECT         NO  NO  YES NO  NO

-- user, role 별로 어떤 권한을 가지고 있는지 조회
SQL> select *
  2  from dba_sys_privs where grantee='CONNECT';

SQL> select *
  2  from dba_sys_privs where grantee='RESOURCE';
profile
Devops Engineer
post-custom-banner

0개의 댓글