在 SQL Server 中規劃具有安全記憶體保護區的 Always Encrypted,而不需證明
適用於: SQL Server 2019 (15.x) 與更新版本 - 僅限 Windows
在沒有證明的情況下,在 SQL Server 中使用安全記憶體保護區設定 Always Encrypted 即可開始使用此功能。 不過,當您在生產環境中使用安全記憶體保護區時,請記住作業系統系統管理員的保護層級會降低,完全不需要證明。 例如,如果惡意 OS 系統管理員竄改在記憶體保護區內執行的 SQL Server 程式庫,用戶端應用程式將無法偵測到這種情況。 如果您擔心這類攻擊,請考慮使用主機守護者服務設定證明。 如需詳細資訊,請參閱規劃主機守護者服務證明。
在 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 10 或更新版本,或 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)。
工具需求
用戶端驅動程式需求
如需支援在沒有證明的情況下使用安全記憶體保護區的用戶端驅動程式版本有關的資訊,請參閱使用具有安全記憶體保護區的 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 中設定安全記憶體保護區。