gpt4 book ai didi

database - 应用程序用户应该是数据库用户吗?

转载 作者:太空狗 更新时间:2023-10-30 01:40:16 25 4
gpt4 key购买 nike

我之前的工作涉及对包含大量数据的超大型数据库进行维护和编程。用户主要通过内联网 Web 界面查看此数据。每个用户帐户都不是一个用户帐户表,而是 RDBMS 中真正的一流帐户,这允许他们连接自己的查询工具等,并允许我们通过 RDBMS 本身控制访问使用我们自己的应用程序逻辑。

假设您不在公共(public) Intranet 上并与可能有数百万(潜在恶意)用户或其他用户打交道,这是一个好的设置吗?还是定义您自己的用户帐户处理方式、您自己的权限、您自己的应用程序安全逻辑,并且只将 RDBMS 帐户分发给有特殊需要的高级用户总是更好?

最佳答案

我不同意使用数据库进行用户访问控制就像其他人认为的那样危险。我来自 Oracle Forms Development 领域,这种类型的用户访问控制是其中的常态。就像任何设计决策一样,它有优点也有缺点。

其中一个优点是我可以通过数据库中的单个设置来控制每个表的选择/插入/更新/删除权限。在一个系统上,我们有 4 个不同的应用程序(由不同的团队管理,使用不同的语言)访问相同的数据库表。我们能够声明只有具有经理角色的用户才能在特定表中插入/更新/删除数据。如果我们不通过数据库管理它,那么每个应用程序团队都必须在整个应用程序中正确实现(复制)该逻辑。如果一个应用程序出错,那么其他应用程序就会受到影响。此外,如果您想更改单个资源的权限,您将需要管理重复的代码。

另一个优点是我们不需要担心将用户密码存储在数据库表中(以及随之而来的所有限制)。

我不同意“数据库用户帐户本质上比您的应用程序定义的帐户中的任何内容都更危险”。更改特定于数据库的权限所需的权限通常比更新/删除“PERSONS”表中的单行所需的权限要严格得多。

“缩放”不是问题,因为我们将权限分配给 Oracle 角色,然后将角色分配给用户。使用单个 Oracle 语句,我们可以更改数百万用户的权限(并不是说我们有那么多用户)。

应用程序授权不是一个小问题。许多定制解决方案都有黑客可以轻易利用的漏洞。像 Oracle 这样的大公司已经投入了大量的思想和代码来提供一个强大的应用程序授权系统。我同意使用 Oracle 安全性并不适用于每个应用程序。但我不会这么快就放弃它,转而采用自定义解决方案。

关于database - 应用程序用户应该是数据库用户吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/341271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com