将 BitLocker 与群集共享卷 (CSV) 一起使用

适用于:Windows Server 2022;Azure Stack HCI 版本 22H2 和 21H2

Bitlocker 概述

BitLocker 驱动器加密是一种数据保护功能,它与操作系统相集成,以解决因计算机丢失、被盗或停止使用不当而造成的数据盗窃或暴露威胁。

BitLocker 在与受信任的平台模块 (TPM) 版本 1.2 或更高版本一起使用时可提供最有力的保护。 TPM 是计算机制造商在很多较新的计算机上安装的硬件组件。 它与 BitLocker 结合使用可以帮助保护用户数据,并且确保当系统脱机时,计算机不会被篡改。

在没有 TPM 1.2 或更高版本的计算机上,仍然可以使用 BitLocker 加密 Windows 操作系统驱动器。 但是,实现此功能需要用户插入 USB 启动密钥来启动计算机或从休眠中恢复。 从 Windows 8 开始,可以使用操作系统卷密码来保护没有 TPM 的计算机上的卷。 两个选项都不能提供结合使用 BitLocker 和 TPM 能够提供的预启动系统完整性验证。

除了 TPM 之外,BitLocker 还提供在用户提供个人标识号 (PIN) 或插入可移动设备之前始终锁定正常启动过程的选项。 此设备可以是包含启动密钥的 U 盘。 这些附加的安全措施提供多重身份验证,保证在提供正确的 PIN 或启动密钥之前,计算机不会启动或从休眠中恢复。

群集共享卷概述

群集共享卷 (CSV) 使 Windows 服务器故障转移群集中的多个节点或 Azure Stack HCI 能够同时对预配为 NTFS 卷的同一逻辑单元号 (LUN) 或磁盘进行读写访问。 该磁盘可预配为弹性文件系统 (ReFS)。 但是,CSV 驱动器将处于重定向模式,这意味着写入访问权限会被发送到协调器节点。 借助 CSV,群集角色可以从一个节点快速故障转移到另一个节点,而无需对驱动器所有权进行更改,或卸载和重新装载卷。 CSV 还帮助简化管理故障转移群集中潜在大量 LUN 的管理的操作。

CSV 提供了在 NTFS 或 ReFS 上进行分层的通用群集文件系统。 CSV 应用程序包括:

  • 用于群集 Hyper-V 虚拟机的群集虚拟硬盘 (VHD/VHDX) 文件
  • 横向扩展文件共享以存储横向扩展文件服务器群集角色的应用程序数据。 此角色的应用程序数据的示例包括 Hyper-V 虚拟机文件和 Microsoft SQL Server 数据。 Windows Server 2012 R2 及早期版本中横向扩展文件服务器不支持 ReFS。 有关横向扩展文件服务器的详细信息,请参阅用于应用程序数据的横向扩展文件服务器
  • SQL Server 2012 及更早版本的 SQL Server 中的 Microsoft SQL Server 2014(或更高版本)故障转移群集实例 (FCI) Microsoft SQL Server 群集工作负载不支持使用 CSV。
  • Windows Server 2019 或更高版本的 Microsoft 分布式事务控制 (MSDTC)

将 BitLocker 与群集共享卷一起使用

群集内卷上的 BitLocker 是根据群集服务“查看”要保护的卷的方式进行管理的。 卷可以是物理磁盘资源,例如存储区域网络 (SAN) 或网络附加存储 (NAS) 上的逻辑单元号 (LUN)。

或者,卷也可以是群集内的群集共享卷 (CSV)。 将 BitLocker 与为群集指定的卷一起使用时,可以在将卷添加到群集之前或在群集中时使用 BitLocker 启用该卷。 在启用 BitLocker 之前将资源置于维护模式。

Windows PowerShell 或 Manage-BDE 命令行界面是管理 CSV 卷上的 BitLocker 的首选方法。 建议针对 BitLocker 控制面板项使用此方法,因为 CSV 卷是装入点。 装入点是用于为其他卷提供入口点的 NTFS 对象。 装入点不需要使用驱动器号。 缺少驱动器号的卷不会出现在 BitLocker 控制面板项中。

BitLocker 将通过按以下顺序尝试使用保护程序来解锁受保护的卷,而无需用户干预:

  1. 明文密钥

  2. 基于驱动程序的自动解锁密钥

  3. ADAccountOrGroup 保护程序

    1. 服务上下文保护程序

    2. 用户保护程序

  4. 基于注册表的自动解锁密钥

故障转移群集需要针对群集磁盘资源使用基于 Active Directory 的保护程序选项。 否则,CSV 资源在控制面板项中不可用。

一个 Active Directory 域服务 (AD DS) 保护程序,用于保护 AD DS 基础结构中保存的群集卷。 ADAccountOrGroup 保护程序是基于域安全标识符 (SID) 的保护程序,可以绑定到用户帐户、计算机帐户或组。 当对受保护的卷发出解锁请求时,BitLocker 服务会中断该请求并使用 BitLocker 保护/取消保护 API 来解锁或拒绝该请求。

新功能

在以前版本的 Windows Server 和 Azure Stack HCI 中,唯一受支持的加密保护程序是基于 SID 的保护程序,其中使用的帐户是在创建故障转移群集的过程中在 Active Directory 中创建的群集名称对象 (CNO)。 此设计很安全,因为保护程序存储在 Active Directory 中并受 CNO 密码保护。 此外,使用它可轻松预配和解锁卷,因为每个故障转移群集节点都可以访问 CNO 帐户。

有三个缺点:

  1. 在不具有对数据中心内的 Active Directory 控制器的任何访问权限的情况下创建故障转移群集时,此方法显然不起作用。

  2. 如果 Active Directory 控制器无响应或速度缓慢,则在故障转移过程中解锁卷可能需要很长时间(并可能超时)。

  3. 如果 Active Directory 控制器不可用,则驱动器的联机过程将失败。

添加了新功能,即故障转移群集将为卷生成并维护自己的 BitLocker 密钥保护程序。 它将经过加密并保存在本地群集数据库中。 由于群集数据库是由每个群集节点上的系统卷支持的复制存储,因此每个群集节点上的系统卷也应受 BitLocker 保护。 故障转移群集不会强制执行它,因为某些解决方案可能不希望或不需要加密系统卷。 如果系统驱动器未用 Bitlocker 加密,故障转移群集将在联机和解锁过程中将此标记为警告事件。 如果故障转移群集验证检测到这是无 Active Directory 或工作组设置并且系统卷未加密,则它会记录一条消息。

安装 BitLocker 加密

BitLocker 是一项必须添加到群集的所有节点的功能。

使用服务器管理器添加 BitLocker

  1. 通过选择“服务器管理器”图标或运行 servermanager.exe 打开“服务器管理器”。

  2. 从服务器管理器导航栏中选择“管理”,然后选择“添加角色和功能”以启动“添加角色和功能向导”。

  3. 打开“添加角色和功能向导”后,在“准备工作”窗格(如果显示)中选择“下一步”。

  4. 在“添加角色和功能向导”窗格的“安装类型”窗格中,选择“基于角色或基于功能的安装”,然后选择“下一步”以继续。

  5. 在“服务器选择”窗格中选择“从服务器池中选择服务器”选项,并确认选择用于安装 BitLocker 功能的服务器。

  6. 在“添加角色和功能”向导的“服务器角色”窗格中,选择“下一步”以进入“功能”窗格。

  7. 在“添加角色和功能”向导的“功能”窗格中,选中“BitLocker 驱动器加密”旁边的复选框。 该向导将显示可用于 BitLocker 的其他管理功能。 如果不希望安装这些功能,请取消选择“包括管理工具”选项并选择“添加功能”。 选择完可选功能后,选择“下一步”以继续。

注意

“增强存储”功能是启用 BitLocker 所需的功能。 借助此功能,可在支持的系统上启用对加密硬盘的支持。

  1. 在“添加角色和功能向导”的“确认”窗格中选择“安装”,以开始安装 BitLocker 功能。 BitLocker 功能需要重启才能完成。 在“确认”窗格中选择“必要时自动重启目标服务器”选项将在安装完成后强制重启计算机。

  2. 如果未选中“必要时自动重启目标服务器”复选框,则“添加角色和功能向导”的“结果”窗格将显示 BitLocker 功能安装是成功还是失败。 如果需要,结果文本中将显示完成功能安装所需的其他操作的通知,例如重启计算机。

使用 PowerShell 添加 BitLocker

对于每个服务器,请使用以下命令:

Install-WindowsFeature -ComputerName "Node1" -Name "BitLocker" -IncludeAllSubFeature -IncludeManagementTools

若要同时在所有群集服务器上运行该命令,请使用以下脚本,修改开头的变量列表以适应你的环境:

用自己的值填充这些变量。

$ServerList = "Node1", "Node2", "Node3", "Node4" 
$FeatureList = "BitLocker"

此部分在 $ServerList 中的所有服务器上运行 Install-WindowsFeature cmdlet,传递 $FeatureList 中的功能列表。

Invoke-Command ($ServerList) {  
    Install-WindowsFeature -Name $Using:Featurelist -IncludeAllSubFeature -IncludeManagementTools 
}

接下来,重启所有服务器:

$ServerList = "Node1", "Node2", "Node3", "Node4" Restart-Computer -ComputerName $ServerList -WSManAuthentication Kerberos

可以同时添加多个角色和功能。 例如,要添加 BitLocker、故障转移群集和文件服务器角色,$FeatureList 将包括所有需要的内容(以逗号分隔)。 例如:

$ServerList = "Node1", "Node2", "Node3", "Node4" 
$FeatureList = "BitLocker", “Failover-Clustering”, “FS-FileServer”

预配加密卷

可以在添加驱动器之前在故障转移群集过程中或过程外完成使用 BitLocker 加密预配驱动器。 若要自动创建外部密钥保护程序,驱动器必须是故障转移群集中的资源,然后才能启用 BitLocker。 如果在将驱动器添加到故障转移群集之前启用了 BitLocker,则必须完成额外的手动步骤来创建外部密钥保护程序。

预配加密卷将需要使用管理员权限运行 PowerShell 命令。 有两个选项可以加密驱动器,并使故障转移群集能够创建和使用自己的 BitLocker 密钥。

  1. 内部恢复密钥

  2. 外部恢复密钥文件

使用恢复密钥进行加密

使用恢复密钥加密驱动器将允许创建 BitLocker 恢复密钥并将其添加到群集数据库中。 当驱动器联机时,它只需要咨询本地集群配置单元以获取恢复密钥。

将磁盘资源移动到将在其中启用 BitLocker 加密的节点:

Get-ClusterSharedVolume -Name "Cluster Disk 1" | Move-ClusterSharedVolume Resource -Node Node1

将磁盘资源置于维护模式:

Get-ClusterSharedVolume -Name "Cluster Disk 1" | Suspend-ClusterResource

随即会弹出一个对话框,提示:

Suspend-ClusterResource

Are you sure that you want to turn on maintenance for Cluster Shared Volume ‘Cluster Disk 1’? Turning on maintenance will stop all clustered roles that use this volume and will interrupt client access.

若要继续,请按“是”。

若要启用 BitLocker 加密,请运行:

Enable-BitLocker -MountPoint "C:\\ClusterStorage\\Volume1" -RecoveryPasswordProtector

输入该命令后,将显示一条警告,并提供数值恢复密码。 将密码保存在安全的位置,因为在接下来的步骤中也需用到它。 警告类似如下:


WARNING: ACTIONS REQUIRED:

    1. Save this numerical recovery password in a secure location away from your computer:
        
        271733-258533-688985-480293-713394-034012-061963-682044

    To prevent data loss, save this password immediately. This password helps ensure that you can unlock the encrypted volume.

要获取卷的 BitLocker 保护程序信息,可以运行以下命令:

(Get-BitlockerVolume -MountPoint "C:\\ClusterStorage\\Volume1").KeyProtector

这将显示密钥保护程序 ID 和恢复密码字符串。

KeyProtectorId : {26935AC3-8B17-482D-BA3F-D373C7954D29}
AutoUnlockProtector :
KeyProtectorType : RecoveryPassword
KeyFileName :
RecoveryPassword : 271733-258533-688985-480293-713394-034012-061963-682044
KeyCertificateType :
Thumbprint :

将需要密钥保护程序 ID 和恢复密码并将其保存到名为 BitLockerProtectorInfo 的新物理磁盘私有属性中。 当资源退出维护模式时,将使用此新属性。 保护程序将采用字符串格式,其中保护程序 ID 和密码以“:”分隔。

Get-ClusterSharedVolume "Cluster Disk 1" | Set-ClusterParameter -Name BitLockerProtectorInfo -Value "{26935AC3-8B17-482D-BA3F-D373C7954D29}:271733-258533-688985-480293-713394-034012-061963-682044" -Create

要验证是否设置了 BitlockerProtectorInfo 密钥和值,请运行以下命令:

Get-ClusterSharedVolume "Cluster Disk 1" | Get-ClusterParameter BitLockerProtectorInfo

现在该信息已存在,加密过程完成后,磁盘便可退出维护模式。

Get-ClusterSharedVolume -Name "Cluster Disk 1" | Resume-ClusterResource

如果资源无法联机,则可能是由于存储问题或恢复密码不正确等问题。 验证 BitlockerProtectorInfo 密钥是否具有正确的信息。 如果没有,则应再次运行先前给出的命令。 如果问题不在于此密钥,建议你与组织内相应的组或存储供应商联系以解决该问题。

如果资源成功联机,则信息是正确的。 在退出维护模式的过程中,会删除 BitlockerProtectorInfo 密钥并在群集数据库中的资源下对其加密。

使用外部恢复密钥文件进行加密

使用恢复密钥文件加密驱动器将允许从所有节点均可访问的位置(例如文件服务器)创建和访问 BitLocker 恢复密钥。 驱动器联机后,拥有的节点将连接到恢复密钥。

将磁盘资源移动到将在其中启用 BitLocker 加密的节点:

Get-ClusterSharedVolume -Name "Cluster Disk 2" | Move-ClusterSharedVolume Resource -Node Node2

将磁盘资源置于维护模式:

Get-ClusterSharedVolume -Name "Cluster Disk 2" | Suspend-ClusterResource

随即会出现一个对话框

Suspend-ClusterResource

Are you sure that you want to turn on maintenance for Cluster Shared Volume ‘Cluster Disk 2’? Turning on maintenance will stop all clustered roles that use this volume and will interrupt client access.

若要继续,请按“是”。

若要启用 BitLocker 加密并在本地创建密钥保护程序文件,请运行以下命令。 建议先在本地创建文件,然后将其移动到所有节点均可访问的位置。

Enable-BitLocker -MountPoint "C:\ClusterStorage\Volume2" -RecoveryKeyProtector -RecoveryKeyPath C:\Windows\Cluster

要获取卷的 BitLocker 保护程序信息,可以运行以下命令:

(Get-BitlockerVolume -MountPoint "C:\ClusterStorage\Volume2").KeyProtector

这将显示密钥保护程序 ID 和它所创建的密钥文件名。

KeyProtectorId : {F03EB4C1-073C-4E41-B43E-B9298B6B27EC}
AutoUnlockProtector :
KeyProtectorType : ExternalKey
KeyFileName : F03EB4C1-073C-4E41-B43E-B9298B6B27EC.BEK
RecoveryPassword :
KeyCertificateType :
Thumbprint :

转到指定在其中创建它的文件夹时,无法一眼看到它。 原因是它将作为隐藏文件进行创建。 例如:

C:\Windows\Cluster\>dir f03  

Directory of C:\\Windows\\Cluster 

File Not Found 

C:\Windows\Cluster\>dir /a f03  

Directory of C:\Windows\Cluster 

<Date> <Time> 148 F03EB4C1-073C-4E41-B43E-B9298B6B27EC.BEK 

C:\Windows\Cluster\>attrib f03 

A SHR C:\Windows\Cluster\F03EB4C1-073C-4E41-B43E-B9298B6B27EC.BEK

由于它是在本地路径上创建的,因此必须使用 Copy-Item 命令将其复制到网络路径,以便所有节点都可以访问它。

Copy-Item -Path C:\Windows\Cluster\F03EB4C1-073C-4E41-B43E-B9298B6B27EC.BEK -Destination \\Server\Share\Dir

由于驱动器将会使用文件并且位于网络共享中,因此请指定文件路径使驱动器退出维护模式。 驱动器完成加密后,可用于恢复它的命令如下:

Resume-ClusterPhysicalDiskResource -Name "Cluster Disk 2" -RecoveryKeyPath \\Server\Share\Dir\F03EB4C1-073C-4E41-B43E-B9298B6B27EC.BEK

预配驱动器后,*.BEK 文件可以从共享中删除并且不再需要。

新 PowerShell cmdlet

借助此项新功能,我们创建了两个新 cmdlet 来使资源联机或使用恢复密钥或恢复密钥文件手动恢复资源。

Start-ClusterPhysicalDiskResource

示例 1

    Start-ClusterPhysicalDiskResource -Name "My Disk" -RecoveryPassword "password-string"

示例 2

    Start-ClusterPhysicalDiskResource -Name "My Disk" -RecoveryKeyPath "path-to-external-key-file"

Resume-ClusterPhysicalDiskResource

示例 1

    Resume-ClusterPhysicalDiskResource -Name "My Disk" -RecoveryPassword "password-string"

示例 2

     Resume-ClusterPhysicalDiskResource -Name "My Disk" -RecoveryKeyPath "path-to-external-key-file"

新事件

在 Microsoft-Windows-FailoverClustering/Operational 事件通道中添加了几个新事件。

成功创建密钥保护程序或密钥保护程序文件后,将显示如下所示的事件:

Source: Microsoft-Windows-FailoverClustering Event ID: 1810 Task Category: Physical Disk Resource Level: Information Description: Cluster Physical Disk Resource added a protector to a BitLocker encrypted volume.

如果创建密钥保护程序或密钥保护程序文件失败,则将显示如下所示的事件:

Source: Microsoft-Windows-FailoverClustering Event ID: 1811 Task Category: Physical Disk Resource Level: Information Description: Cluster Physical Disk Resource failed to create an external key protector for the volume

如前所述,由于群集数据库是由每个群集节点上的系统卷支持的复制存储,因此建议每个群集节点上的系统卷也应受 BitLocker 保护。 故障转移群集不会强制执行它,因为某些解决方案可能不希望或不需要加密系统卷。 如果系统驱动器不受 BitLocker 保护,则故障转移群集将在解锁/联机过程中将此标记为事件。 随即将显示如下所示的事件:

Source: Microsoft-Windows-FailoverClustering Event ID: 1824 Task Category: Physical Disk Resource Level: Warning Description: Cluster Physical Disk Resource contains a BitLocker protected volume, but the system volume is not BitLocker protected. For data protection, it is recommended that the system volume be BitLocker protected as well. ResourceName: Cluster Disk 1

如果故障转移群集验证检测到这是无 Active Directory 或工作组设置并且系统卷未加密,则它会记录一条消息。