PostgreSQL函数权限测试
·
1.函数定义ACL测试
以用户A创建函数:
CREATE FUNCTION calculate_tax(amount numeric)
RETURNS numeric
LANGUAGE plpgsql
AS BEGINRETURNamount∗0.1;END; BEGIN RETURN amount * 0.1; END; BEGINRETURNamount∗0.1;END;;
收回权限:
REVOKE ALL ON FUNCTION calculate_tax FROM PUBLIC;
此时以用户B执行:
select calculate_tax(10); //发现权限不足
此时以用户A授权给B:
GRANT EXECUTE ON FUNCTION calculate_tax TO B;
再以用户B执行,发现可以。
2.INVOKE测试
以用户A创建test数据表
create table test(id int);
以别的用户以INVOKE模式创建函数==
CREATE FUNCTION get_test_id(emp_id INT)
RETURNS numeric
SECURITY INVOKER
LANGUAGE SQL
AS SELECTidFROMtestWHEREid=empid; SELECT id FROM test WHERE id = emp_id; SELECTidFROMtestWHEREid=empid;;
==以用户B执行函数=
SELECT get_test_id(1);
更多推荐
所有评论(0)