반응형
1. 시스템 권한과 오브젝트 권한의 차이
- 시스템 권한:
- 데이터베이스 시스템에서 전역적으로 적용되는 권한을 의미하며, CREATE, ALTER, DROP 같은 작업을 수행할 수 있습니다.
- 예: CREATE ANY TABLE, DROP ANY INDEX, ALTER ANY SESSION
- WITH ADMIN OPTION을 사용할 경우, 해당 시스템 권한을 다른 사용자에게 부여할 수 있으며, 이를 취소(REVOKE)할 때 모든 사용자에게 적용된 권한을 직접 취소해야 합니다.
- 오브젝트 권한:
- 특정 데이터베이스 오브젝트(테이블, 뷰, 프로시저 등)에 대한 권한을 의미합니다. SELECT, INSERT, UPDATE, DELETE 등의 권한을 부여할 수 있습니다.
- 예: SELECT ON <table_name>, EXECUTE ON <procedure_name>
- WITH GRANT OPTION을 사용하면 해당 오브젝트 권한을 부여받은 사용자가 다른 사용자에게 권한을 부여할 수 있습니다. REVOKE를 할 때, 해당 권한을 받은 모든 사용자의 권한도 함께 제거됩니다.
2. 시스템 권한 부여 및 취소
- WITH ADMIN OPTION:
- 시스템 권한을 다른 사용자에게 부여할 때 사용되며, 이 권한을 받은 사용자는 다른 사용자에게도 권한을 부여할 수 있습니다.
- 예: GRANT CREATE SESSION TO user_name WITH ADMIN OPTION;
- 이 권한을 취소할 때는 모든 사용자에게 직접 REVOKE해야 합니다. 그렇지 않으면 해당 권한이 계속 남아 있을 수 있습니다.
- REVOKE의 주의 사항:
- WITH ADMIN OPTION으로 부여된 권한을 취소할 때, 해당 권한이 전달된 모든 사용자를 파악하여 적절하게 권한을 제거해야 합니다. 이를 간과하면 보안 이슈로 이어질 수 있습니다.
시스템 권한
TABLE
- [CREATE/ALTER/DROP/SELECT/UPDATE/DELETE] [ANY] TABLE
INDEX
- [CREATE/ALTER/DROP] [ANY] INDEX
TABLESPACE
- [CREATE/ALTER/DROP/UNLIMITED] TABLESPACE
SESSION
- [CREATE/ALTER/RESTRICTED] SESSION
WITH ADMIN OPTION
- SYSTEM 권한을 부여할 경우
- REVOKE할때 주의 필요 -> 모든 사람을 다 REVOKE 해야 함
- EX. CREATE SESSION/CONNECT
WITH GRANT OPTION
- 오브젝트에 권한을 부여할 경우 (DML,ALTER,EXECUTE,INDEX)
- REVOKE시 권한이 취소된 유저가 그동안 부여됐던 권한 한번에 제거
- 옵션없이 GRANT
- 조회는 가능
SQL> GRANT SELECT ON DAMIN.STUDENT TO SCOTT;
Grant succeeded.
SQL> EXIT
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[/home/oracle]$
[/home/oracle]$ sqlplus scott/
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jun 9 14:15:52 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Sun May 14 2023 20:46:30 +09:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> select * from DAMIN.STUDENT;
STUDNO NAME ID GRADE JUMIN
---------- ---------- -------------------- ---------- -------------
BIRTHDAY TEL HEIGHT WEIGHT DEPTNO1 DEPTNO2
------------------ --------------- ---------- ---------- ---------- ----------
PROFNO
----------
9411 서진수 75true 4 7510231901813
23-OCT-75 055)381-2158 180 72 101 201
1001
9412 서재수 pooh94 4 7502241128467
24-FEB-75 051)426-1700 172 64 102
2001
STUDNO NAME ID GRADE JUMIN
---------- ---------- -------------------- ---------- -------------
BIRTHDAY TEL HEIGHT WEIGHT DEPTNO1 DEPTNO2
------------------ --------------- ---------- ---------- ---------- ----------
PROFNO
----------
9413 이미경 angel000 4 7506152123648
15-JUN-75 053)266-8947 168 52 103 203
3002
9414 김재수 gunmandu 4 7512251063421
25-DEC-75 02)6255-9875 177 83 201
.
.
.
.
.
.
20 rows selected.
- 다른사람에게 권한을 주려고 하면 에러발생
- WITH GRANT OPTION을 주지 않았기 때문에
SQL> GRANT SELECT ON DAMIN.STUDENT TO DAMIN2;
GRANT SELECT ON DAMIN.STUDENT TO DAMIN2
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> EXIT
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[/home/oracle]$ sqlplus damin/
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jun 9 14:16:38 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
3. WITH GRANT 옵션을 준 후 다시 다른 유저에게 권한 부여
SQL> GRANT SELECT ON DAMIN.STUDENT TO SCOTT WITH GRANT OPTION;
Grant succeeded.
SQL> EXIT
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[/home/oracle]$ sqlplus scott/
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jun 9 14:17:31 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Enter password:
Last Successful login time: Fri Jun 09 2023 14:15:52 +09:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> GRANT SELECT ON DAMIN.STUDENT to DAMIN2;
Grant succeeded.
권한 부여 시 성능 및 보안 고려사항
- 성능 이슈:
- 대규모 테이블에 대해 SELECT 권한을 잘못 부여할 경우, 여러 사용자가 동시에 데이터를 조회하면서 성능 문제가 발생할 수 있습니다. 필요한 권한만 최소한으로 부여하여 성능을 관리하는 것이 중요합니다.
- 보안 이슈:
- 권한을 부여할 때, 최소 권한 원칙을 따르는 것이 중요합니다. 사용자가 수행해야 할 작업에 필요한 권한만 부여하고, 불필요한 권한은 제거해야 합니다. 특히 WITH GRANT OPTION을 사용하는 경우, 잘못된 권한 부여로 인한 보안 취약점이 발생할 수 있습니다.
반응형
'ORACLE > Oracle_SQL' 카테고리의 다른 글
인덱스 관련 쿼리 정리 (0) | 2023.07.02 |
---|---|
인덱스 (0) | 2023.06.26 |
시스템 권한부여 (ANY) (0) | 2023.06.25 |
인덱스 생성 속도 향상 (NOLOGGING, PARALLEL) (0) | 2023.06.24 |
DISTINCT, GROUP BY 중복 제거 (0) | 2023.06.04 |