为表授予权限,限定时间内有效

6
我有一个作为特定用户运行的PL/SQL作业,需要在作业完成前执行授权以使该用户访问特定的表。该作业永远不会超过30分钟。
我的问题是,在Oracle中是否有一种方法可以为特定用户限时授予对表的访问权限,或者我应该创建另一个函数在作业完成后撤销权限?我进行了一些快速搜索,但未能找到任何有关此事的信息。是否有人知道这是否可能?
如果我能够在30分钟内授予所有授权就太好了。

1
看看Oracle调度程序。 - OTTA
1
创建一个专门用于此工作的特殊用户怎么样? - ksa
你正在使用dbms_job还是dbms_scheduler? - tbone
1
我建议在授权用户访问时使用函数/过程将id、start_time和end_time插入表(Access_tab)。部署一个每15分钟运行一次的作业,根据表(Access_tab)中指定的end_time撤销访问权限。这将减少手动干预撤销访问权限的情况。 - mahi_0707
2个回答

2

@ksa的评论是正确答案。您应该创建一个新用户,仅赋予所需权限,并在该模式上定义此过程。然后,您可以向需要运行它的角色或用户GRANT EXECUTE此过程。尽管这是默认设置,但您也可以明确指定AUTHID DEFINER。本质上,这意味着无论谁调用该过程,该过程都将作为定义者运行。这样可以避免任何时间/调度问题,并且您的继任者可以清楚地了解权限。如果您不喜欢每次调用时都要指定模式,可以定义同义词。


-2

在PL/SQL中有一个名为grantAccess()的方法。它允许您指定用户被授予访问权限的秒数。

因此,如果您想要给他们一年的访问权限,您可以编写以下代码:

rightSideUser.grantAccess(31536000) 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接