IT/Oracle

오라클 profile 생성, 확인, 적용, 삭제, grant, revoke, role

노마드오브 2018. 8. 9. 00:30

-- resource_limit = true

alter system set resource_limit = true;


-- password profile 생성

create profile prof_passwd limit

failed_login_attempts 5

password_lock_time 30

password_life_time 30

password_reuse_time 30;


-- resource profile 생성

create profile prof_resource limit

cpu_per_session 1500

connect_time 480

idle_time 15;


---------------------


-- scott가 적용 받고 있는 Profile 확인

select username, profile

from dba_users

where username = 'SCOTT';


-- 해당 profile에 어떤 내용이 들어있는지 확인

set pagesize 50

set line 200;

col profile for a15

col resource_name for a25

select * from dba_profiles;

where profile='PROF_PASSWD';


-- scott에게 위에서 만든 profile 적용하기

alter user scott profile prof_passwd;

-- scott에게 위에서 만든 profile 적용하기

alter user scott profile prof_resource;


-- scott가 적용 받고 있는 Profile 확인. 마지막으로 적용한 profile만 조회됨. 

-- 1명의 사용자에게 여러개의  profile을 동시에 적용할 수 없다.

select username, profile

from dba_users

where username='SCOTT';


-- profile 삭제

drop profile prof_resource;


-- 사용자에게 할당이 되어 사용중인 profile은 삭제 불가. cascade옵션을 주면 삭제가능. 

-- 해당프로파일을 사용하던 사용자는 default profile을 적용받게 된다.

drop profile prof_resource cascade;


-- 확인

select username, profile

from dba_users

where username='SCOTT';


---------------------


-- create table, create session 권한을 scott에게 주기

grant create table, create session to scott;

-- create view 권한을 다른 계정에게 줄 수 있는 권한을 scott에게 주기

grant create view to scott with admin option;


-- scott로 부터 create table 권한 회수

revoke create table from scott;


-- 사용자가 가지고 있는 권한 조회하기

select * from dba_sys_privs

where grantee='SCOTT';


-- scott의 emp 테이블을 select 할 수 있는 권한을 hr에게 주기

grant select on scott.emp to hr;

-- scott의 emp 테이블을 update 할 수 있는 권한을 다른 계정에게 줄 수 있는 권한을 hr에게 주기

grant update on scott.emp to hr with grant option;

-- scott의 emp 테이블을 select 할 수 있는 권한을 hr에게서 권한 뺐기

revoke select on scott.emp from hr;


-- role 생성, role에 권한 할당하기

create role testrole;

grant create session, create table to testrole;


-- hr 사용자에세 testrole 할당하기

grant testrole to hr;


-- 어떤 사용자가 어떤 role을 사용하는지 확인

select * from dba_role_privs where grantee='HR';


-- 어떤 role에 어떤 권한이 있는지 확인

select * from dba_sys_privs where grantee='CONNECT';

select * from dba_sys_privs where grantee='RESOURCE';