2015년 4월 20일 월요일

sundb 사용자 권한 분리


SUNDB 사용자의 권한 분리










-- 권한부여 작업은 sysdba 계정을 사용한다.

[sunje@symphony conf]$ gsql --as sysdba

 Copyright (c) 2010, 2014, SUNJESOFT Inc. All rights reserved.
 Release Mercury.2.2.2 revision(14773)

Connected to SUNDB Database.

gSQL>

gSQL> \set linesize 300
gSQL> \set pagesize 1000
gSQL> 


-- 사용할 Tablespace를 생성한다.
gSQL> CREATE TABLESPACE USR_DATA_TBS DATAFILE 'USR_DATA_TBS.dbf' SIZE 10M;
gSQL> CREATE TEMPORARY TABLESPACE USR_INDX_TBS MEMORY 'USR_INDX_TBS' SIZE 10m;
gSQL> 


-- 관리자용 계정을 (app_adm) 생성한다. 계정생성시 Schema도 자동 생성한다.
gSQL> CREATE USER app_adm IDENTIFIED BY app_adm DEFAULT TABLESPACE USR_DATA_TBS TEMPORARY TABLESPACE MEM_TEMP_TBS WITH SCHEMA app_schema;
gSQL> 


-- 사용자용 계정을 (app_usr) 생성한다. (Schema를 제외하고 생성한다)
gSQL> CREATE USER app_usr IDENTIFIED BY app_usr DEFAULT TABLESPACE USR_DATA_TBS TEMPORARY TABLESPACE MEM_TEMP_TBS WITHOUT SCHEMA;
gSQL> 


-- 관리자 계정에 권한을 부여 한다. 
gSQL> GRANT CREATE SESSION ON DATABASE TO app_adm;
gSQL> GRANT CREATE TABLE, CREATE INDEX, CREATE VIEW, CREATE SEQUENCE, ADD CONSTRAINT ON SCHEMA app_schema TO app_adm;
gSQL> GRANT CREATE OBJECT ON TABLESPACE USR_DATA_TBS TO app_adm;
gSQL> GRANT CREATE OBJECT ON TABLESPACE USR_INDX_TBS TO app_adm;
gSQL> 


-- 사용자 계정에 권한을 부여한다.
gSQL> GRANT CREATE SESSION ON DATABASE TO app_usr;
gSQL> GRANT SELECT TABLE, INSERT TABLE, DELETE TABLE, UPDATE TABLE ON SCHEMA app_schema TO app_usr;
gSQL> 


-- 생성된 권한을 확인해 본다.
gSQL> SELECT
  A.GRANTOR_ID,
  A.GRANTEE_ID,
  B.AUTHORIZATION_NAME,
  A.SCHEMA_ID,
  C.SCHEMA_NAME,
  A.PRIVILEGE_TYPE
FROM
  SCHEMA_PRIVILEGES A,
  AUTHORIZATIONS B,
  DEFINITION_SCHEMA.SCHEMATA C
WHERE 1=1
AND A.GRANTEE_ID = B.AUTH_ID
AND A.SCHEMA_ID = C.SCHEMA_ID
;

GRANTOR_ID GRANTEE_ID AUTHORIZATION_NAME SCHEMA_ID SCHEMA_NAME             PRIVILEGE_TYPE 
---------- ---------- ------------------ --------- ----------------------- ---------------
         1          2 SYS                        1 DEFINITION_SCHEMA       SELECT TABLE   
         1          2 SYS                        2 FIXED_TABLE_SCHEMA      SELECT TABLE   
         1          2 SYS                        3 DICTIONARY_SCHEMA       SELECT TABLE   
         1          2 SYS                        4 INFORMATION_SCHEMA      SELECT TABLE   
         1          2 SYS                        5 PERFORMANCE_VIEW_SCHEMA SELECT TABLE   
         1          2 SYS                        6 PUBLIC                  SELECT TABLE   
         1          5 PUBLIC                     6 PUBLIC                  CREATE TABLE   
         1          5 PUBLIC                     6 PUBLIC                  CREATE VIEW    
         1          5 PUBLIC                     6 PUBLIC                  CREATE SEQUENCE
         1          5 PUBLIC                     6 PUBLIC                  CREATE INDEX   
         1          5 PUBLIC                     6 PUBLIC                  ADD CONSTRAINT 
         1          5 PUBLIC                     1 DEFINITION_SCHEMA       SELECT TABLE   
         1          5 PUBLIC                     2 FIXED_TABLE_SCHEMA      SELECT TABLE   
         1         25 APP_ADM                   27 APP_SCHEMA              CREATE TABLE   
         1         25 APP_ADM                   27 APP_SCHEMA              CREATE VIEW    
         1         25 APP_ADM                   27 APP_SCHEMA              CREATE SEQUENCE
         1         25 APP_ADM                   27 APP_SCHEMA              CREATE INDEX   
         1         25 APP_ADM                   27 APP_SCHEMA              ADD CONSTRAINT 
         1         26 APP_USR                   27 APP_SCHEMA              SELECT TABLE   
         1         26 APP_USR                   27 APP_SCHEMA              INSERT TABLE   
         1         26 APP_USR                   27 APP_SCHEMA              DELETE TABLE   
         1         26 APP_USR                   27 APP_SCHEMA              UPDATE TABLE   

22 rows selected.


gSQL>