데이터베이스 내에서 현재 사용자가 권한을 가지는 클래스에 대한 권한 정보를 보여준다.
속성명 |
데이터 타입 |
설명 |
---|---|---|
grantor_name |
VARCHAR(255) |
권한을 부여한 사용자명 |
grantee_name |
VARCHAR(255) |
권한을 받은 사용자명 |
class_name |
VARCHAR(255) |
권한부여 대상인 클래스명 |
auth_type |
VARCHAR(7) |
부여된 권한 타입명 |
is_grantable |
VARCHAR(3) |
권한 받은 클래스에 대해 다른 사용자에게 권한을 부여할 수 있으면 ‘YES’, 아니면 ‘NO’ |
CREATE VCLASS db_auth (grantor_name, grantee_name, class_name, auth_type, is_grantable )
AS
SELECT CAST(a.grantor.name AS VARCHAR(255)),
CAST(a.grantee.name AS VARCHAR(255)),
a.class_of.class_name, a.auth_type,
CASE WHEN a.is_grantable = 0 THEN 'NO' ELSE 'YES' END
FROM _db_auth a
WHERE (CURRENT_USER = 'DBA' OR
{a.class_of.owner.name} subseteq (
SELECT set{CURRENT_USER} + coalesce(sum(set{t.g.name}), set{})
from db_user u, table(groups) as t(g)
where u.name = CURRENT_USER ) OR
{a.class_of} subseteq (
SELECT sum(set{au.class_of})
FROM _db_auth au
WHERE {au.grantee.name} subseteq (
SELECT set{CURRENT_USER} + coalesce(sum(set{t.g.name}), set{})
from db_user u, table(groups) as t(g)
where u.name = CURRENT_USER ) AND
au.auth_type = 'SELECT'));
다음 예제에서는 이름이 ‘db_a’로 시작되는 클래스의 권한 정보를 검색한다.
csql> select class_name, auth_type, grantor_name
csql> from db_auth
csql> where class_name like 'db_a%'
csql> order by 1;
csql> ;xrun
=== <Result of SELECT Command in Line 1> ===
class_name auth_type grantor_name
==================================================================
'db_attr_setdomain_elm' 'SELECT' 'DBA'
'db_attribute' 'SELECT' 'DBA'
'db_auth' 'SELECT' 'DBA'
'db_authorization' 'EXECUTE' 'DBA'
'db_authorization' 'SELECT' 'DBA'
'db_authorizations' 'EXECUTE' 'DBA'
'db_authorizations' 'SELECT' 'DBA'