Sql-Server

阻止 SysAdmin 執行數據庫還原

  • March 20, 2019

我是我的 SQL Server 2008 的系統管理員,我需要,但我想在生產伺服器上設置我的安全性,以防止我意外恢復到生產數據庫。我經常將數據庫恢復到測試機器上,供開發人員調試/測試,雖然我總是非常小心,但大約十年後,今天我不是了。

我的想法是在恢復權限上添加一個拒絕,如果我需要真正恢復,請刪除拒絕,但我找不到這樣的東西。

有誰知道如何做到這一點,或者可能有更好的主意?

綠石沃克是對的。如果您被授予 SA 權利,那麼實際上沒有什麼可以阻止它。我喜歡你擔心保護自己不犯這種錯誤的能力。我以前見過人們被“哎呀”恢復所燒傷。不漂亮。

不過,您可能可以做一些事情。您的里程可能會有所不同,但有一些想法可以讓您思考:

  • 使用腳本:使用恢復腳本。養成始終使用它們的習慣。您可以提前編寫和測試恢復腳本。你可以做一些事情,比如檢查你的@@ServerName 並在那裡有一些邏輯來要求採取積極的行動。在它起作用之前。就像是:

DECLARE @ServerNameToRestoreOn VARCHAR(40)

SET @ServerNameToRestoreOn = 'ChangeMe!' -- Servername\Instance

IF @ServerNameToRestoreOn <> @@ServerName

THROW 50001, 'Wrong Server!!!', 1

所以這段程式碼可能不完全是你所做的,但重點是——你需要一個積極的步驟來確定你認為你在哪裡,並檢查你是否在你認為的地方。

通過使用腳本,您還要求自己輸入要恢復的數據庫等項目,強迫自己查看內容,注意 SSMS 視窗並查看哪個伺服器等。您還需要為緊急情況做準備,通過有一個過程,有一個腳本,並有能力每次都使用相同的方法。現在,當您必須恢復時,您的 CIO 站在您身後,用手指敲打著您的立方體牆壁,反复說“完成了嗎?” 你沒有以不同的方式做這個過程的額外壓力。

  • 降低 Prod 中的預設權限許多金融機構已經要求這樣做以確保合規性。DBA 擁有 SA 權限要容易得多,但在某些組織中,DBA 沒有它。在某些情況下,您將擁有一個 DBA_SA AD 組。並且該 AD 組是空的,除非有人真正需要 DBA 訪問權限。因此,您可以為日常使用創建一組權限,並將“DBA_Normal”AD 組放入其中。當您真正需要 SA 權限或需要進行恢復等。然後您可以被放入該組。有點痛苦,取決於您每天所做的事情,並且取決於看起來像什麼,這可能是一個太大的負擔,但需要考慮一些事情。
  • 使用不同的帳戶進行恢復- 創建一個經過 SQL 身份驗證的帳戶並始終使用該帳戶進行恢復。在生產中,你可以呼叫它Prod_Restorer或任何你喜歡的東西。在開發中呼叫它Dev_Restorer或其他任何東西。每個密碼都不同,並養成始終使用它來恢復的習慣。再次有點痛苦,但需要考慮一些事情。

我相信您還可以採取其他方法。我可能會選擇腳本路線,但再次看到有人擔心防止這種情況發生的好兆頭。

引用自:https://dba.stackexchange.com/questions/53995