Skip to end of metadata
Go to start of metadata

개요


DB 유저간에는  객체에 대한 권한을 grant 구문을 사용하여 부여할 수 있습니다.   DB  전체에 부여된  DB 유저끼리의  객체권한의  관계를  쿼리를 사용하여 조회해 볼 수 있습니다.

 

대상버전


ALTIBASE HDB 4.3.9 이상  모든 버전에서 사용 가능합니다.

 

방법


아래의 쿼리로 조회가 가능합니다.

SELECT a.user_name grantee,                                     -- 권한을 부여받은 유저
       c.user_name grantor,                                     -- 권한을 준 유저
       f.user_name object_owner,                                -- 객체의 소유자
       e.table_name object_name,                                -- 객체이름
       e.table_type object_type,                                -- 객체 종류
       replace(d.priv_name, '_', ' ') priv_name,                -- 부여 권한명
       decode(b.with_grant_option, 0, 'NO', 'YES') grantable    -- 해당 객체에 대한 권한 재부여 가능 여부
  FROM system_.sys_users_ a,
       system_.sys_grant_object_ b,
       system_.sys_users_ c,
       system_.sys_privileges_ d,
       system_.sys_tables_ e,
       system_.sys_users_ f
 WHERE c.user_name <> 'SYSTEM_'
   and b.grantee_id = a.user_id
   and b.grantor_id = c.user_id
   and b.priv_id = d.priv_id
   and b.obj_id = e.table_id
   and e.user_id = f.user_id
 ORDER BY grantee,
       grantor,
       object_owner,
       object_type,
       object_name,
       priv_name ;
 
출력예시

iSQL> create user user1 identified by user1;

iSQL> create user user2 identified by user2;

iSQL> connect user1/user1;

iSQL> create table user1_t1 ( c1 integer );

iSQL> grant select on user1_t1 to user2;

iSQL> grant insert on user1_t1 to user2;

 

GRANTEE        GRANTOR         OBJECT_OWNER         OBJECT_NAME         OBJECT_TYPE          PRIV_NAME      GRANTABLE
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
USER2               USER1              USER1                           USER1_T1                     T                              INSERT                   NO
USER2               USER1              USER1                           USER1_T1                     T                             SELECT                   NO
2 rows selected.

  • No labels