我有一个连接到Microsoft SQL Server 2000的Python应用程序。应用程序在启动时检查更新并自动应用它们。很快,它还需要处理数据库模式更改。根据我的研究,似乎创建我当前数据库的基线脚本,然后为每个模式更改创建一个新脚本是要走的路。这样,任何版本的数据库都可以更新到最新版本。
我的问题是如何管理这些更新的权限?现在有大约50人使用我的应用程序,其中大多数都具有只读访问权限。理想情况下,我希望任何用户都能够执行必要的更改,例如创建或更改表,以便第一个接收新更新的人将应用新的架构更改。如果没有发生这种情况,那么在具有适当权限的人更新数据库之前,他/她可能根本无法使用该应用程序。
如果每个用户都可以更新架构,我会发现问题。什么会阻止他们登录到SQL Server Management Studio并导致丢失表等问题?
目前,此应用程序仅部署在一次,因此我很容易手动管理架构更改。但是我们确实计划部署到更多区域,我会自动处理所有这些。
答案 0 :(得分:0)
您希望限制用户管理员权限,但同时您希望他们执行管理员活动......“鸡与鸡蛋”问题:-)
转换您的程序以作为Web应用程序运行。
但是,有点急剧,维护更简单。您的用户不再需要安装Python,集中升级和共享连接池到数据库。这解决了数据库身份验证问题。用户对Web应用程序进行身份验证,而不是数据库。
我使用liquibase来管理我的数据库模式。它有servlet listener,可以在部署新版本的应用程序时自动升级数据库。 (Liquibase还有一个命令行界面供Python等替代技术使用)。
您加密管理员密码并将其作为可从公司Web服务器检索的文本文件提供,使任何用户应用程序都能在启动时下载。
此解决方案存在安全问题....为了解密管理员密码,需要在python应用程序中构建共享密钥....这是默默无闻的安全性。