Background
我们有一个Web应用程序,它作为通用应用程序用户登录到Oracle数据库,但是由于历史原因,我们将所有用户用户存储为Oracle数据库用户(我们对Oracle数据库进行身份验证以将其记录到Web应用程序中) . 我们还有其他Oracle Forms应用程序,它们更直接地使用数据库用户(它们无法删除) .
我试图允许用户通过web应用程序通用用户更改自己的密码 .
Question
如何授予Web应用程序通用用户更改特定用户密码的权限,而不授予其更改超级用户密码的能力?如果有人偷走了网络应用程序的凭据,我们就会想要损坏限制 .
Oracle数据库通过以下方式支持:
alter user user123 identified by new_password123 replace old_password123;
哪个适用于我们的目的,因为我们在将用户密码改为新密码时要求用户输入旧密码 .
然而,无论是否使用“替换”语法,我们都需要授予相同的权限“alter user”,这将授予该通用Web应用程序用户太多的权力(例如,更改任何用户的密码,即使不知道旧密码) .
那么是否有一些设置权限的方法,以便您可以更改所需的任何密码,但只有您知道旧密码?
1 回答
最简单的方法通常是创建一个存储过程,该存储过程由超级用户拥有,该超级用户实现实际的密码重置,然后授予该存储过程的通用应用程序用户权限 . 然后,您的存储过程可以实现您想要的任何逻辑,以确定可以重置哪些密码,谁可以重置它们,您需要哪种审计跟踪等 .
例如,像