개요
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.