【DWS】权限传递

举报
洋芋擦擦 发表于 2023/09/21 15:52:54 2023/09/21
【摘要】 【问题场景】--新建三个用户gsql -d postgres -p25308 -U dcq_test1 -W dcq52130... -rgsql -d postgres -p25308 -U dcq_test2 -W dcq52130... -rgsql -d postgres -p25308 -U dcq_test3 -W dcq52130... -r--切换第一个用户gsql -d p...

【问题场景】

--新建三个用户
gsql -d postgres -p25308 -U dcq_test1 -W dcq52130... -r
gsql -d postgres -p25308 -U dcq_test2 -W dcq52130... -r
gsql -d postgres -p25308 -U dcq_test3 -W dcq52130... -r



--切换第一个用户
gsql -d postgres -p25308 -U dcq_test1 -W dcq52130... -r
--创建一个函数
CREATE FUNCTION dcq_test1.func_add1(integer, integer) RETURNS integer
    AS 'select $1 + $2;'
    LANGUAGE SQL
    IMMUTABLE
    RETURNS NULL ON NULL INPUT;
	
--schema权限赋予用户二
grant usage on schema dcq_test1 to dcq_test2;	
	
--切换第二个用户
gsql -d postgres -p25308 -U dcq_test2 -W dcq52130... -r

--创建一张表
create  table dcq_test2.t_test (a int,b int);
insert into t_test values(1,2);
--创建一个视图
create view dcq_test2.v_test as select dcq_test1.func_add1(a, b) as c from  dcq_test2.t_test;

--权限赋予用户三
grant usage on schema dcq_test2 to dcq_test3;

grant select on  dcq_test2.v_test to dcq_test3;		


--切换第三个用户
gsql -d postgres -p25308 -U dcq_test3 -W dcq52130... -r
--执行视图
select* from dcq_test2.v_test;

-------------------------------------------------------------------------

第二个测试

--切换第一个用户
gsql -d postgres -p25308 -U dcq_test1 -W dcq52130... -r

--从public收回函数执行权限
revoke execute on function dcq_test1.func_add1(integer, integer) from public;

--将执行权限单独赋予用户二
grant execute  on function dcq_test1.func_add1(integer, integer) to dcq_test2;


--切换第三个用户
gsql -d postgres -p25308 -U dcq_test3 -W dcq52130... -r


--执行视图
select* from dcq_test2.v_test;

【问题】创建三个用户在第一个用户创建一个函数schema权限赋给第二个用户,第二个用户创建一张表和一个视图,这个视图用了第一个用户创建的函数,然后把视图的权限以及用户二的schema给第三个用户,第三个用户可以正常查询这个视图,但是用户三没有用户一的schema权限,第三个用户为什么能够执行第一个用户的函数

新创建的函数默认会给PUBLIC授予执行权限。用户可以选择收回PUBLIC默认执行权限,然后根据需要将执行权限授予其他用户,为了避免出现新函数能被所有人访问的时间窗口,应在一个事务中创建函数并且设置函数执行权限,test3用户访问test2的视图,只需要有test2的schema权限就行了,可以访问到视图之后,没有校验视图里面函数的schema权限的逻辑,只有对函数本身权限的校验;

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。