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