메뉴 건너뛰기

Korea Oracle User Group

23c Free Developer Release

23c에서 개발자를 위해 새로 추가된 DB_DEVELOPER_ROLE role

 

새로 소개할 정도의 내용인지는 모르겠습니다.

전 그냥 새로 추가된 ROLE 정도외에는 큰 의미성은 모르겠네요.

 

기존에는 오라클에서 제공하는 ROLE 중 CONNECT, RESOURCE 권한을 개발자나 운영자가 사용했습니다.

혹은 사이트에서 정의한 ROLE을 만들어서 DB 유저에게 권한을 부여하여 사용했습니다.

 

이번 23c에서 DB_DEVELOPER_ROLE 을 추가되었습니다.

ROLE 이름에서 알수 있듯이 개발자를 위한 추가 ROLE인 것 같습니다.

이제 CONNECT, RESOURCE ROLE 대신 이 DB_DEVELOPER_ROLE을 부여해서 사용하게 하면 될 거 같습니다.

하지만 사이트에서 직접 적절하게 리스트업한 권한으로 ROLE을 생성해 부여하는 것을 더 추천합니다.

 

이번에 생성된 ROLE을 사용할지 여부는 판단하셔서 사용해야 할 거 같습니다.

 

아래는 DB_DEVELOPER_ROLE ROLE에 어떤 권한이 있는지 확인하고

CONNECT, RESOURCE ROLE과 어떤 권한이 다른지 확인을 해 보았습니다.

 

먼저 이번에 새로 생성된 DB_DEVELOPER_ROLE 에 어떤 권한이 있는지 확인해 봅니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
SQL> col role for A20
SQL> col PRIVILEGE for A28
SQL> col GRANTED_ROLE for a20
SQL> col table_name for a25
SQL> col owner for A10
SQL> SELECT ROLE
  2        ,PRIVILEGE
  3        ,ADMIN_OPTION
  4        ,COMMON
  5        ,INHERITED
  6  FROM ROLE_SYS_PRIVS
  7  WHERE ROLE = 'DB_DEVELOPER_ROLE';
 
ROLE                 PRIVILEGE                    ADMIN_OPT COMMON    INHERITED
-------------------- ---------------------------- --------- --------- ---------
DB_DEVELOPER_ROLE    CREATE DOMAIN                NO        YES       YES
DB_DEVELOPER_ROLE    CREATE MLE                   NO        YES       YES
DB_DEVELOPER_ROLE    CREATE ANALYTIC VIEW         NO        YES       YES
DB_DEVELOPER_ROLE    CREATE HIERARCHY             NO        YES       YES
DB_DEVELOPER_ROLE    CREATE ATTRIBUTE DIMENSION   NO        YES       YES
DB_DEVELOPER_ROLE    EXECUTE DYNAMIC MLE          NO        YES       YES
DB_DEVELOPER_ROLE    CREATE CUBE BUILD PROCESS    NO        YES       YES
DB_DEVELOPER_ROLE    CREATE CUBE                  NO        YES       YES
DB_DEVELOPER_ROLE    CREATE CUBE DIMENSION        NO        YES       YES
DB_DEVELOPER_ROLE    CREATE MINING MODEL          NO        YES       YES
DB_DEVELOPER_ROLE    CREATE JOB                   NO        YES       YES
DB_DEVELOPER_ROLE    DEBUG CONNECT SESSION        NO        YES       YES
DB_DEVELOPER_ROLE    ON COMMIT REFRESH            NO        YES       YES
DB_DEVELOPER_ROLE    CREATE DIMENSION             NO        YES       YES
DB_DEVELOPER_ROLE    CREATE TYPE                  NO        YES       YES
DB_DEVELOPER_ROLE    CREATE MATERIALIZED VIEW     NO        YES       YES
DB_DEVELOPER_ROLE    CREATE TRIGGER               NO        YES       YES
DB_DEVELOPER_ROLE    CREATE PROCEDURE             NO        YES       YES
DB_DEVELOPER_ROLE    FORCE TRANSACTION            NO        YES       YES
DB_DEVELOPER_ROLE    CREATE SEQUENCE              NO        YES       YES
DB_DEVELOPER_ROLE    CREATE VIEW                  NO        YES       YES
DB_DEVELOPER_ROLE    CREATE SYNONYM               NO        YES       YES
DB_DEVELOPER_ROLE    CREATE TABLE                 NO        YES       YES
DB_DEVELOPER_ROLE    CREATE SESSION               NO        YES       YES
 
24 행이 선택되었습니다.
 
SQL> SELECT ROLE
  2        ,GRANTED_ROLE
  3        ,ADMIN_OPTION
  4        ,COMMON
  5        ,INHERITED
  6  FROM ROLE_ROLE_PRIVS
  7  WHERE ROLE = 'DB_DEVELOPER_ROLE';
 
ROLE                 GRANTED_ROLE         ADMIN_OPT COMMON    INHERITED
-------------------- -------------------- --------- --------- ---------
DB_DEVELOPER_ROLE    SODA_APP             NO        YES       YES
DB_DEVELOPER_ROLE    CTXAPP               NO        YES       YES
 
SQL> SELECT OWNER, TABLE_NAME, PRIVILEGE
  2  FROM ROLE_TAB_PRIVS
  3  WHERE ROLE = 'DB_DEVELOPER_ROLE';
 
OWNER      TABLE_NAME                PRIVILEGE
---------- ------------------------- ----------------------------
SYS        JAVASCRIPT                EXECUTE
SYS        V_$STATNAME               READ
SYS        V_$PARAMETER              READ
SYS        DBA_PENDING_TRANSACTIONS  SELECT

 

위와 같은 권한을 부여받고 있습니다.

 

이제 CONNECT, RESOURCE ROLE 이 어떤 권한을 가지고 있는지 확인해 보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
SQL> SELECT ROLE
  2        ,PRIVILEGE
  3        ,ADMIN_OPTION
  4        ,COMMON
  5        ,INHERITED
  6  FROM ROLE_SYS_PRIVS
  7  WHERE ROLE = 'CONNECT';
 
ROLE                 PRIVILEGE                    ADMIN_OPT COMMON    INHERITED
-------------------- ---------------------------- --------- --------- ---------
CONNECT              SET CONTAINER                NO        YES       YES
CONNECT              CREATE SESSION               NO        YES       YES
 
SQL> SELECT ROLE
  2        ,GRANTED_ROLE
  3        ,ADMIN_OPTION
  4        ,COMMON
  5        ,INHERITED
  6  FROM ROLE_ROLE_PRIVS
  7  WHERE ROLE = 'CONNECT';
 
선택된 레코드가 없습니다.
 
SQL> SELECT OWNER, TABLE_NAME, PRIVILEGE
  2  FROM ROLE_TAB_PRIVS
  3  WHERE ROLE = 'CONNECT';
 
선택된 레코드가 없습니다.
 
SQL> SELECT ROLE
  2        ,PRIVILEGE
  3        ,ADMIN_OPTION
  4        ,COMMON
  5        ,INHERITED
  6  FROM ROLE_SYS_PRIVS
  7  WHERE ROLE = 'RESOURCE';
 
ROLE                 PRIVILEGE                    ADMIN_OPT COMMON    INHERITED
-------------------- ---------------------------- --------- --------- ---------
RESOURCE             CREATE PROPERTY GRAPH        NO        YES       YES
RESOURCE             CREATE ANALYTIC VIEW         NO        YES       YES
RESOURCE             CREATE HIERARCHY             NO        YES       YES
RESOURCE             CREATE ATTRIBUTE DIMENSION   NO        YES       YES
RESOURCE             CREATE INDEXTYPE             NO        YES       YES
RESOURCE             CREATE OPERATOR              NO        YES       YES
RESOURCE             CREATE TYPE                  NO        YES       YES
RESOURCE             CREATE MATERIALIZED VIEW     NO        YES       YES
RESOURCE             CREATE TRIGGER               NO        YES       YES
RESOURCE             CREATE PROCEDURE             NO        YES       YES
RESOURCE             CREATE SEQUENCE              NO        YES       YES
RESOURCE             CREATE VIEW                  NO        YES       YES
RESOURCE             CREATE SYNONYM               NO        YES       YES
RESOURCE             CREATE CLUSTER               NO        YES       YES
RESOURCE             CREATE TABLE                 NO        YES       YES
 
15 행이 선택되었습니다.
 
SQL> SELECT ROLE
  2        ,GRANTED_ROLE
  3        ,ADMIN_OPTION
  4        ,COMMON
  5        ,INHERITED
  6  FROM ROLE_ROLE_PRIVS
  7  WHERE ROLE = 'RESOURCE';
 
ROLE                 GRANTED_ROLE         ADMIN_OPT COMMON    INHERITED
-------------------- -------------------- --------- --------- ---------
RESOURCE             SODA_APP             NO        YES       YES
 
SQL> SELECT OWNER, TABLE_NAME, PRIVILEGE
  2  FROM ROLE_TAB_PRIVS
  3  WHERE ROLE = 'RESOURCE';
 
선택된 레코드가 없습니다.

 

일단 리스트를 봤을 때는 DB_DEVELOPER_ROLE 가 CONNECT, RESOURCE ROLE 보다 더 많은 권한을 받은 거 같습니다.

그러기에 DB_DEVELOPER_ROLE ROLE을 사용할지는 내용을 살펴보고 

적합한지 판단을 해서 검토해 봐야 할 거 같습니다.

 

추천은 적합한 권한을 별도로 ROLE 로 만들어 사용하는 것입니다.

 

 

 

 

위로