Oracle/user

사용자 권한

pbj1102 2022. 1. 24. 14:25
반응형

#사용자 권한

1. 시스템 권한 : 사용자가 데이터베이스에서 특정 작업을 수행할 수 있도록 함
2. 객체 권한 : 사용자가 특정 객체를 액세스 및 조작할 수 있도록 함


SCOTT 계정의 모든 테이블을 TEST사용자에게 select 권한 주기
 
select 'grant select on SCOTT.'||TABLE_NAME|| ' TO TEST;'
FROM ALL_TABLES
WHERE OWNER = 'SCOTT';


/////////////////////////////////

# 확인

DBA_SYS_PRIVS
SESSION_PRIVS
DBA_TAB_PRIVS
DBA_COL_PRIVS


# 시스템권한 부여


grant create session to PBJ;


create user emi
identified by emi
default tablespace PBJ_DAT
temporary tablespace temp2

grant create session to emi with admin option;

SQL> select * from dba_sys_privs where grantee in ('PBJ','EMI');

GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
PBJ                            CREATE SESSION                           NO
EMI                            CREATE SESSION                           YES




*WITH ADMIN OPTION: 권한을 부여받은 사람이 그 권한이나 롤을 다른 사용자나 롤에 부여 가능



revoke create session from emi;

SQL> select * from dba_sys_privs where grantee in ('PBJ','EMI');

GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
PBJ                            CREATE SESSION                           NO



# 객체권한 부여 ( sys )

grant execute on dbms_output to jeff;
grant update on emi.emp to jeff with grant option;
revoke update on emp from emi


##실습       권한취소 ( with grant option ) 

1. Jeff에게 GRANT OPTION을 사용하여 EMPLOYEES에 대한 SELECT 객체 권한을 부여
합니다.


grant select on jeff.emp to jeff with grant option;

SQL> select GRANTEE, OWNER, TABLE_NAME, GRANTOR, PRIVILEGE, grantable from user_tab_privs;

GRANTEE         OWNER      TABLE_NAME     GRANTOR    PRIVILEGE       GRA
--------------- ---------- -------------- ---------- --------------- ---
JEFF            SYS        EMP            SYS        SELECT          YES




2.Jeff가 EMPLOYEES의 SELECT 권한을 Emi에게 부여합니다.

grant select on jeff.EMP to emi;

SQL> select GRANTEE, OWNER, TABLE_NAME, GRANTOR, PRIVILEGE, grantable from user_tab_privs;

GRANTEE         OWNER      TABLE_NAME     GRANTOR    PRIVILEGE       GRA
--------------- ---------- -------------- ---------- --------------- ---
JEFF            SYS        EMP            SYS        SELECT          YES
EMI             JEFF       EMP            JEFF       SELECT          NO



3. 나중에 SELECT 권한을 Jeff에게서 취소하면 이 취소 작업이 Emi에게도 연쇄적으로
수행됩니다.  

revoke select on jeff.emp from jeff;

select GRANTEE, OWNER, TABLE_NAME, GRANTOR, PRIVILEGE, grantable from user_tab_privs;
GRANTEE         OWNER      TABLE_NAME     GRANTOR    PRIVILEGE       GRA
--------------- ---------- -------------- ---------- --------------- ---




연습문제 

1 SYSTEM 사용자로 Emi 사용자를 생성하고 Emi 사용자가 데이터베이스에
로그온하여 자신의 스키마에 객체를 생성할 수 있는 자격을 부여하십시오. 기본
테이블스페이스 DATA01 및 임시 테이블스페이스 TEMP를 할당하고 할당량을
DATA01 1M에 설정하십시오.




create tablespace DATA01
DATAFILE '/home/oracle/ts/DATA01.dbf' size 100M


create user emi 
identified by emi
default tablespace DATA01
temporary tablespace TEMP 
quota 1M on data01

grant create session, craete table to emi;




2 a lab16_02a.sql 스크립트를 실행하여 Emi로 접속하고 CUSTOMERS1 및
ORDERS1 테이블을 생성하십시오.

grant connect, resource to EMI
create table customers1(id number(10));
create table orders1(id number(10));


b SYSTEM 사용자로 접속하여 데이터를 SYSTEM.CUSTOMERS에서 Emi의
CUSTOMERS1 테이블로 복사하십시오. 레코드가 삽입되었는지 확인하십시오.


system
create table customers1 (id number(10));
insert into CUSTOMERS1 values('1');


insert into emi.CUSTOMERS1 select * from system.CUSTOMERS1;




c SYSTEM 사용자로 Bob에게 Emi의 CUSTOMERS1 테이블에서 데이터를 선택할 수
있는 자격을 부여하십시오. 결과는?

grant select on emi.CUSTOMERS1 to bob


SQL> select GRANTEE, OWNER, TABLE_NAME, GRANTOR, PRIVILEGE, grantable from user_tab_privs;

GRANTEE    OWNER      TABLE_NAME GRANTOR    PRIVILEGE       GRA
---------- ---------- ---------- ---------- --------------- ---
BOB        EMI        CUSTOMERS1 EMI        SELECT          NO




3 Emi로 재접속하여 Bob에게 Emi의 CUSTOMERS1 테이블에서 데이터를 선택할 수
있는 자격을 부여하십시오.
또한 Bob이 다른 사용자에게 선택 자격을 부여할 수 있도록 활성화하십시오.
SYSTEM 사용자로 이러한 작업을 기록하는 데이터 딕셔너리 뷰를 검사하십시오.



grant select on emi.CUSTOMERS1 to bob with grant option;



SQL> select GRANTEE, OWNER, TABLE_NAME, GRANTOR, PRIVILEGE, grantable from user_tab_privs;

GRANTEE    OWNER      TABLE_NAME GRANTOR    PRIVILEGE       GRA
---------- ---------- ---------- ---------- --------------- ---
BOB        EMI        CUSTOMERS1 EMI        SELECT          YES





4 데이터베이스에 로그온할 수 있는 자격을 가진 diamond1$로 식별된 Trevor
사용자를 생성하십시오.


create user diamond1$Trevor
identified by trevor




a Bob 사용자로 Trevor를 Emi의 CUSTOMERS1 테이블에 액세스할 수 있도록
활성화하십시오.

grant select on emi.CUSTOMERS1 to diamond1$Trevor;



b Emi 사용자로 Emi의 CUSTOMERS1 테이블을 읽을 수 있는 Bob의 권한을
제거하십시오.



SQL> show user;
USER is "BOB"
SQL> select GRANTEE, OWNER, TABLE_NAME, GRANTOR, PRIVILEGE, grantable from user_tab_privs;

no rows selected



c Trevor 사용자로 Emi의 CUSTOMERS1 테이블을 질의하십시오. 결과는?

SQL> show user;
USER is "DIAMOND1$TREVOR"
SQL> 
SQL> select * from emi.customers1;
select * from emi.customers1
                  *
ERROR at line 1:
ORA-00942: table or view does not exist





6 Emi가 새 데이터베이스를 생성할 수 있는 자격 없이 데이터베이스를 시작하고
종료할 수 있도록 하십시오.


grant sysoper to emi;



반응형

'Oracle > user' 카테고리의 다른 글

synonyms  (0) 2022.01.24
테이블 종류 및 관리  (0) 2022.01.24
PROFILE  (0) 2022.01.24
ROLE  (0) 2022.01.24
사용자 관리  (0) 2022.01.24