2011-10-07 45 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應用程序中......這是安全性的默默無聞。