Sql-Server
數據庫備份和證書備份的文件權限
我已經備份了一個數據庫並將數據庫主密鑰備份到同一個文件夾。每個人都擁有對該文件夾的完全訪問權限,但是,只有數據庫備份繼承了該文件夾的權限,而密鑰備份沒有。
我需要使用管理員權限來查看主密鑰備份文件的安全性。
誰能建議為什麼會這樣?兩者都是由同一帳戶通過 T-SQL 中的備份命令創建的。
每當您執行
BACKUP CERTIFICATE
orBACKUP MASTER KEY
時,SQL Server 將修改它創建的每個生成的文件系統文件的訪問控制列表 (ACL) 1,以便除以下 Windows 主體之外的任何人都無法訪問該文件:
- OWNER_RIGHTS擁有完全控制權。OWNER_RIGHTS 是一個眾所周知的安全標識符,
S-1-3-4
它代表對象的目前所有者。當攜帶此 SID 的訪問控制條目應用於對象時,系統將忽略對象所有者的隱式 READ_CONTROL 和 WRITE_DAC 權限。- 本地“管理員”組的成員擁有完全控制權
- 用於執行 SQL Server的虛擬帳戶或託管服務帳戶具有完全控制權。請注意,這不是您在 SQL Server 配置管理器中配置的 SQL Server 服務帳戶。對於預設 SQL Server 實例,該帳戶通常是
NT SERVICE\MSSQLSERVER
. 對於命名實例,帳戶名為NT SERVICE\MSSQL$INSTANCE_NAME
。- 從對象的 ACL 中刪除繼承以防止任何其他主體訪問。
此行為是設計使然,是為了限制對生成的證書及其私鑰的訪問。允許“每個人”訪問證書和私鑰文件允許每個人將 TDE 加密數據庫的備份恢復到他們選擇的伺服器上,並且能夠查看所有加密數據,就好像它沒有加密一樣。你提議做的事情對我來說似乎是一個非常糟糕的主意,因為它基本上繞過了加密。
有關更多詳細資訊和範常式式碼,請參閱我的部落格文章。
1 - 假設 SQL Server 服務對備份語句中的目標文件夾具有“完全控制”權限。