適用於: Windows 上的 SQL Server 2019(15.x)及更新版本
在沒有證明的情況下,在 SQL Server 中使用安全記憶體保護區設定 Always Encrypted 即可開始使用此功能。 不過,當您在生產環境中使用安全記憶體保護區時,請記住,如果沒有證明,作業系統系統管理員的保護層級會降低。 例如,如果惡意 OS 系統管理員竄改在記憶體保護區內執行的 SQL Server 程式庫,用戶端應用程式將無法偵測到這種情況。 如果您擔心這類攻擊,請考慮使用 Host Guardian Service 設置驗證。 如需詳細資訊,請參閱主機守護者服務驗證規劃。
在 SQL Server 中,具有安全記憶體保護區的 Always Encrypted 會使用虛擬化型安全性 (VBS) 記憶體保護區 (也稱為虛擬安全模式,或 VSM 記憶體保護區) - 一種依賴 Windows Hypervisor 且不需要任何特殊硬體的軟體型技術。
注意
在 VM 中部署 SQL Server 時,VBS 記憶體保護區有助於保護您的資料免受 VM 內部的攻擊。 不過,它們並未針對使用來自主機的特殊權限系統帳戶進行的攻擊提供任何保護。 例如,主機電腦上產生的 VM 記憶體轉儲可能包含封閉區域的記憶體。
必要條件
執行 SQL Server 的電腦必須同時符合安裝 SQL Server 的需求和 Hyper-V 硬體需求。
這些需求包括:
SQL Server 2019 (15.x) 或更新版本
Windows 11 (24H2 和更新版本)或 Windows Server 2019 和更新版本。
虛擬化技術的 CPU 支援:
- Intel VT-x 技術,具備延伸分頁表功能。
- 搭載快速虛擬化索引處理的 AMD-V。
- 如果您在 VM 中執行 SQL Server:
- 在 Azure 中,使用第 2 代 VM 大小 (建議),或使用啟用巢狀虛擬化的第 1 代 VM 大小。 請查看個別 VM 大小的文件,判斷哪一種第 1 代 VM 大小支援巢狀虛擬化。
- 在 Hyper-V 2016 或更新版本上 (在 Azure 外部),確定您的 VM 是第 2 代 VM (建議),或是啟用巢狀虛擬化的第 1 代 VM。 如需詳細資訊,請參閱應該在 Hyper-V 中建立第 1 代還是第 2 代的虛擬機器?和設定巢狀虛擬化。
- 在 VMware vSphere 6.7 或更新版本上,針對 VM 啟用虛擬化安全性支援,如 VMware 文件.中所述。
- 其他 hypervisor 和公用雲端平台也可能支援巢狀虛擬化功能,使得可以啟用具有 VBS 記憶保護區的 Always Encrypted 功能。 如需相容性和設定指示,請參閱虛擬化解決方案文件。
必須啟用並執行虛擬化型安全性 (VBS)。
工具需求
安裝最新版本的 SQL Server Management Studio(SSMS)。
用戶端驅動程式需求
如需了解支援使用未經驗證的安全區域的用戶端驅動程式版本的資訊,請參閱 使用具有安全區域的 Always Encrypted 開發應用程式。
確認 VBS 正在執行。
注意
此步驟應由 SQL Server 電腦系統管理員執行。
若要檢查 VBS 是否正在執行,請執行 msinfo32.exe,開啟 [系統資訊] 工具,並尋找 [系統摘要] 底部的 Virtualization-based security 項目。
要檢查的第一個項目是 Virtualization-based security,此項目可能具有下列三種值:
-
Running表示 VBS 設定正確,且能夠順利啟動。 -
Enabled but not running表示 VBS 已設定為執行,但是硬體不具備執行 VBS 的最低安全性需求。 您可能需要在 BIOS 或 UEFI 中變更硬體設定,以便啟用如 IOMMU 的選用處理器功能;而如果硬體確實不支援必要的功能,您可能需要降低 VBS 安全性需求。 請繼續閱讀本節,深入了解。 -
Not enabled表示 VBS 未設定為執行。
啟用 VBS
如果未啟用 VBS,請在提升權限的 PowerShell 主控台中執行下列命令予以啟用。
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard -Name EnableVirtualizationBasedSecurity -Value 1
變更登錄之後,請將 SQL Server 電腦重新開機,並檢查 VBS 是否再次執行。
如需啟用 VBS 的其他方式,請參閱啟用以虛擬化為基礎的程式碼完整性保護。
如果 VBS 尚未執行,那麼請執行 VBS。
如果 VBS 因為沒有在電腦上執行而被啟用,請檢查 Virtualization-based security 屬性。 比較 Required Security Properties 與 Available Security Properties 項目中的值。 必要屬性必須等於可用安全性屬性,或為可用安全性屬性的子集,以供 VBS 執行。 安全性屬性具有下列重要性:
-
Base virtualization support一律為必要,因為其代表執行虛擬程式所需的最低硬體功能。 - 建議使用
Secure Boot,但並非必要。 安全開機透過要求 Microsoft 簽署的開機載入器在 UEFI 初始化完成後立即執行,來保護系統免受 rootkit 的攻擊。 - 建議使用
DMA Protection,但並非必要。 DMA 保護使用 IOMMU 來保護 VBS 與封裝記憶體免於受到直接記憶體存取攻擊。 在生產環境中,您應該一律使用具備 DMA 保護的電腦。 在開發或測試環境中,DMA 保護的需求則可移除。 如果 SQL Server 執行個體已虛擬化,您很可能會沒有可用的 DMA 保護,並且必須移除此需求才能執行 VBS。
在降低 VBS 所需的安全性功能之前,請先洽詢 OEM 或雲端服務供應商,確認是否有方法能在 UEFI 或 BIOS 中啟用遺失的平台需求 (例如啟用安全開機、Intel VT-d 或 AMD IOV)。
若要變更 VBS 所需的平台安全性功能,請在提高權限的 PowerShell 主控台中執行下列命令:
# Value 1 = Only Secure Boot is required
# Value 2 = Only DMA protection is required (default configuration)
# Value 3 = Both Secure Boot and DMA protection are required
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard -Name RequirePlatformSecurityFeatures -Value 1
變更登錄之後,請將 SQL Server 電腦重新開機,並檢查 VBS 是否再次執行。
如果電腦是由您的公司所管理,則群組原則或 Microsoft 端點管理員可能會在重新啟動之後,覆蓋您對這些登錄機碼所做的任何變更。 請洽詢您的 IT 支援人員,確認他們是否有部署原則來管理您的 VBS 設定。
下一步
- 確定您的環境符合上述先決條件之後,請參閱在 SQL Server 中設定安全記憶體保護區。