2011-10-07 95 views
0

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

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

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

现在,该应用程序仅部署在一次,因此我很容易手动管理模式更改。但是我们有计划部署到更多的领域,我会自动处理所有这些。

回答

0

你想限制用户管理员权限,但在同一时间,你希望他们执行管理活动......一个“鸡和蛋”的问题位:-)

方法1:使用Web应用程序

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

然而,比较激烈的维护简单得多。您的用户不再需要安装Python,集中式升级和共享连接池到数据库。

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

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

选项2:加密管理员密码

你加密的管理员密码,并使其可从企业网络服务器的文本文件检索,使用户的任何应用程序下载它在启动时。

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