본문 바로가기

ORACLE/Oracle_SQL

시스템 권한 | WITH GRANT/ADMIN OPTION

반응형

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. 시스템 권한 부여 및 취소

  1. WITH ADMIN OPTION:
    • 시스템 권한을 다른 사용자에게 부여할 때 사용되며, 이 권한을 받은 사용자는 다른 사용자에게도 권한을 부여할 수 있습니다.
    • 예: GRANT CREATE SESSION TO user_name WITH ADMIN OPTION;
    • 이 권한을 취소할 때는 모든 사용자에게 직접 REVOKE해야 합니다. 그렇지 않으면 해당 권한이 계속 남아 있을 수 있습니다.
    주의: WITH ADMIN OPTION을 받은 사용자가 다른 사용자에게 권한을 부여하고 나면, 권한 취소 시 모든 사용자에게 영향을 주지 않도록 주의해야 합니다.
  2. 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시 권한이 취소된 유저가 그동안 부여됐던 권한 한번에 제거


  1. 옵션없이 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.
  1. 다른사람에게 권한을 주려고 하면 에러발생
  • 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.

권한 부여 시 성능 및 보안 고려사항

  1. 성능 이슈:
    • 대규모 테이블에 대해 SELECT 권한을 잘못 부여할 경우, 여러 사용자가 동시에 데이터를 조회하면서 성능 문제가 발생할 수 있습니다. 필요한 권한만 최소한으로 부여하여 성능을 관리하는 것이 중요합니다.
  2. 보안 이슈:
    • 권한을 부여할 때, 최소 권한 원칙을 따르는 것이 중요합니다. 사용자가 수행해야 할 작업에 필요한 권한만 부여하고, 불필요한 권한은 제거해야 합니다. 특히 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