0

我有一个连接到 Microsoft SQL Server 2000 的 Python 应用程序。该应用程序在启动时检查更新并自动应用它们。很快,它也需要处理数据库模式的更改。根据我的研究,似乎为我当前的数据库创建一个基线脚本,然后为每个架构更改创建一个新脚本是可行的方法。这样,任何版本的数据库都可以更新到最新版本。

我的问题是如何管理这些更新的权限?现在大约有 50 人在使用我的应用程序,其中大多数人具有只读访问权限。理想情况下,我希望任何用户都能够执行必要的更改,例如创建或更改表,以便第一个接收新更新的人将应用新的架构更改。如果这没有发生,那么他/她可能根本无法使用该应用程序,直到具有适当权限的人更新数据库。

如果每个用户都可以更新架构,我会看到一个问题。什么会阻止他们登录 SQL Server Management Studio 并导致删除表等问题?

现在,这个应用程序只部署在一个地方,所以我很容易手动管理模式更改。但我们确实有计划部署到更多地区,我希望这一切都能自动处理。

4

1 回答 1

0

您想限制用户的管理员权限,但同时您希望他们执行管理员活动......有点“鸡和蛋”问题:-)

选项 1:使用网络应用

将您的程序转换为作为 Web 应用程序运行。

有点激烈,但是,更简单的维护。您的用户不再需要安装 Python、集中升级和共享数据库连接池。

这解决了您的数据库身份验证问题。用户对 Web 应用程序而不是数据库进行身份验证。

我使用 liquibase 来管理我的数据库模式。它有一个servlet 侦听器,可以在部署我的应用程序的新版本时自动升级数据库。(Liquibase 还有一个命令行界面供 Python 等替代技术使用)。

选项 2:加密管理员密码

您对管理员密码进行加密并将其作为可从公司 Web 服务器检索的文本文件提供,从而使任何用户应用程序都可以在启动时下载它。

此解决方案存在安全问题....为了解密管理员密码,需要在您的 python 应用程序中构建一个共享密钥....这是默默无闻的安全性。

于 2011-10-08T09:34:32.220 回答