我正在使用 Oracle Rest-Data-Services 将多个 PL/SQL-API 导出为使用 REST 的 Web 服务。因此,每个 PL/SQL 包都是一个 ORDS 模块,并且应该有一个以它结尾的模板*/private
,必须保护它,这样只有管理员用户才能调用它。
我尝试创建以下权限。
DECLARE
l_roles_arr OWA.vc_arr;
l_patterns_arr OWA.vc_arr;
l_modules_arr OWA.vc_arr;
BEGIN
ORDS.create_role(p_role_name => 'private_role');
l_roles_arr(1) := 'private_role';
l_patterns_arr(1) := '*/private';
-- select name bulk collect into l_modules_arr from user_ords_modules;
ORDS.define_privilege (
p_privilege_name => 'private_priv',
p_roles => l_roles_arr,
p_patterns => l_patterns_arr,
--p_modules => l_modules_arr,
p_label => 'private',
p_description => 'private');
COMMIT;
END;
这没有任何效果,并且*/private
仍然可以进行未经授权的调用。当我取消注释注释行时,甚至对其他端点的所有调用都必须得到授权。
是否可以定义这样的特权模式?