SQL/Redshift
Redshift : has_table_privilege (특정 user의 table 권한 보유 여부 파악하기)
CosmosProject
2024. 7. 12. 19:28
728x90
반응형
Syntax
has_table_privilege(user_name, table_name, privilege)
has_table_privilege() function은
user_name이 table_name에 대해 privilege에 대한 권한을 가지고 체크합니다.
권한을 가지고 있다면 true를 return하고
권한이 없다면 false를 return합니다.
select has_table_privilege('test_user', 'test_schema.test_table', 'select') as priv_yn
;
-- Result
priv_yn
true
위처럼 사용할 수 있습니다.
test_user가
test_schema.test_table에 대해
select 권한이 있는지를 체크합니다.
만약 권한이 있다면 true를 return하고
권한이 없다면 false를 return합니다.
select has_table_privilege('test_user', 'test_schema.test_table', 'select')
, has_table_privilege('test_user', 'test_schema.test_table', 'delete')
, has_table_privilege('test_user', 'test_schema.test_table', 'drop')
, has_table_privilege('test_user', 'test_schema.test_table', 'insert')
, has_table_privilege('test_user', 'test_schema.test_table', 'update')
;
select 뿐 아니라 다양한 table에 변경을 줄 수 있는 권한들에 대한 보유 여부를 알아볼 수 있습니다.
select t.*
, t.schemaname + '.' + t.tablename as full_tablename
, has_table_privilege('test_user', full_tablename, 'select')
from pg_tables as t
;
응용하면 위와 같은 방식으로 pg_tables를 이용하여 database에 존재하는 모든 테이블에 대해 특정 유저가 권한을 가지고 있는지 아닌지도 볼 수 있습니다.
https://cosmosproject.tistory.com/763
FYI
https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/r_HAS_TABLE_PRIVILEGE.html
728x90
반응형