Шифрование данных восстановления в базе данных

Относится к Configuration Manager (Current Branch)

При создании политики управления BitLocker Configuration Manager развертывает службу восстановления в точке управления. На странице Управление клиентами политики управления BitLocker при настройке служб управления BitLocker клиент выполняет резервное копирование сведений о восстановлении ключей в базе данных сайта. Эта информация включает ключи восстановления BitLocker, пакеты восстановления и хэши паролей доверенного платформенного модуля. Когда пользователи заблокированы на защищенном устройстве, вы можете использовать эти сведения, чтобы помочь им восстановить доступ к устройству.

Учитывая конфиденциальный характер этой информации, необходимо защитить ее. Configuration Manager требуется HTTPS-подключение между клиентом и службой восстановления для шифрования данных при передаче по сети. Дополнительные сведения см. в статье Шифрование данных восстановления по сети.

Рассмотрите также возможность шифрования этих данных при хранении в базе данных сайта. При установке сертификата SQL Server Configuration Manager шифрует данные в SQL.

Если вы не хотите создавать сертификат шифрования управления BitLocker, согласитесь на хранение данных восстановления в виде обычного текста. При создании политики управления BitLocker включите параметр Разрешить хранение сведений о восстановлении в виде обычного текста.

Примечание.

Другой уровень безопасности — шифрование всей базы данных сайта. Если включить шифрование в базе данных, в Configuration Manager не возникает никаких функциональных проблем.

Шифрование с осторожностью, особенно в крупномасштабных средах. В зависимости от таблиц, которые вы шифруете, и версии SQL вы можете заметить снижение производительности до 25 %. Обновите планы резервного копирования и восстановления, чтобы можно было успешно восстановить зашифрованные данные.

Примечание.

Configuration Manager никогда не удаляет сведения о восстановлении устройств из базы данных, даже если клиент неактивен или удален. Это поведение по соображениям безопасности. Это помогает в сценариях, когда устройство украдено, но позже восстановлено. Для больших сред на размер базы данных влияет около 9 КБ данных на зашифрованный том.

сертификат шифрования SQL Server

Используйте этот сертификат SQL Server для Configuration Manager для шифрования данных восстановления BitLocker в базе данных сайта. Самозаверяющий сертификат можно создать с помощью скрипта в SQL Server.

Кроме того, можно использовать собственный процесс для создания и развертывания этого сертификата при условии, что он соответствует следующим требованиям:

  • Имя сертификата шифрования управления BitLocker должно быть BitLockerManagement_CERT.

  • Зашифруйте этот сертификат с помощью главного ключа базы данных.

  • Следующие SQL Server пользователям требуются разрешения на управление сертификатом:

    • RecoveryAndHardwareCore
    • RecoveryAndHardwareRead
    • RecoveryAndHardwareWrite
  • Разверните один и тот же сертификат во всех базах данных сайта в иерархии.

  • Создайте сертификат с последней версией SQL Server.

    Важно!

    • Сертификаты, созданные с SQL Server 2016 или более поздней версии, совместимы с SQL Server 2014 или более ранних версий.
    • Сертификаты, созданные с помощью SQL Server 2014 или более ранних версий, несовместимы с SQL Server 2016 или более поздней версии.

Управление сертификатом шифрования при обновлении SQL Server

Если база данных сайта находится в SQL Server 2014 или более ранней версии, перед обновлением SQL Server до версии 2016 или более поздней используйте следующую процедуру, чтобы сменить сертификат до поддерживаемой версии.

  1. В экземпляре SQL Server под управлением последней доступной версии, по крайней мере версии 2016:

    1. Создание сертификата

    2. Резервное копирование нового сертификата

  2. В экземпляре SQL Server с зашифрованной базой данных сайта, которую вы планируете обновить:

    1. Переместите существующий сертификат на сервере базы данных сайта SQL Server экземпляре на другое имя.

    2. Восстановите новый сертификат.

    3. Смените новый сертификат в для существующего сертификата. Использование предоставленной функции SQL [RecoveryAndHardwareCore].[RecryptKey]

Важно!

Если вы обновляете SQL Server перед сменой сертификата, обратитесь к служба поддержки Майкрософт за помощью в обходе.

Этот процесс также можно использовать, если в бизнес-требованиях указано, что необходимо регулярно обновлять этот сертификат.

Примеры скриптов

Эти скрипты SQL являются примерами создания и развертывания сертификата шифрования управления BitLocker в базе данных сайта Configuration Manager.

Создание сертификата

Этот пример скрипта выполняет следующие действия:

  • Создает сертификат
  • Задает разрешения
  • Создает главный ключ базы данных

Прежде чем использовать этот скрипт в рабочей среде, измените следующие значения:

  • Имя базы данных сайта (CM_ABC)
  • Пароль для создания главного ключа (MyMasterKeyPassword)
  • Дата окончания срока действия сертификата (20391022)
USE CM_ABC
IF NOT EXISTS (SELECT name FROM sys.symmetric_keys WHERE name = '##MS_DatabaseMasterKey##')
BEGIN
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MyMasterKeyPassword'
END

IF NOT EXISTS (SELECT name from sys.certificates WHERE name = 'BitLockerManagement_CERT')
BEGIN
    CREATE CERTIFICATE BitLockerManagement_CERT AUTHORIZATION RecoveryAndHardwareCore
    WITH SUBJECT = 'BitLocker Management',
    EXPIRY_DATE = '20391022'

    GRANT CONTROL ON CERTIFICATE ::BitLockerManagement_CERT TO RecoveryAndHardwareRead
    GRANT CONTROL ON CERTIFICATE ::BitLockerManagement_CERT TO RecoveryAndHardwareWrite
END

Примечание.

Дата окончания срока действия сертификата не проверяется и не применяется SQL Server, когда сертификат используется для шифрования базы данных, как это происходит здесь.

Если бизнес-требования указывают на регулярное продление этого сертификата, используйте тот же процесс для управления сертификатом шифрования при SQL Server обновлении.

Резервное копирование сертификата

Этот пример скрипта выполняет резервное копирование сертификата. При сохранении сертификата в файл его можно восстановить в других базах данных сайта в иерархии.

Прежде чем использовать этот скрипт в рабочей среде, измените следующие значения:

  • Имя базы данных сайта (CM_ABC)
  • Путь к файлу и имя (C:\BitLockerManagement_CERT_KEY)
  • Экспорт пароля ключа (MyExportKeyPassword)
USE CM_ABC
BACKUP CERTIFICATE BitLockerManagement_CERT TO FILE = 'C:\BitLockerManagement_CERT'
    WITH PRIVATE KEY ( FILE = 'C:\BitLockerManagement_CERT_KEY',
        ENCRYPTION BY PASSWORD = 'MyExportKeyPassword')

Важно!

Всегда создайте резервную копию сертификата. Если необходимо восстановить базу данных сайта, может потребоваться восстановить сертификат, чтобы восстановить доступ к ключам восстановления.

Сохраните экспортируемый файл сертификата и связанный пароль в безопасном расположении.

Восстановление сертификата

Этот пример скрипта восстанавливает сертификат из файла. Используйте этот процесс для развертывания сертификата, созданного в другой базе данных сайта.

Прежде чем использовать этот скрипт в рабочей среде, измените следующие значения:

  • Имя базы данных сайта (CM_ABC)
  • Пароль главного ключа (MyMasterKeyPassword)
  • Путь к файлу и имя (C:\BitLockerManagement_CERT_KEY)
  • Экспорт пароля ключа (MyExportKeyPassword)
USE CM_ABC
IF NOT EXISTS (SELECT name FROM sys.symmetric_keys WHERE name = '##MS_DatabaseMasterKey##')
BEGIN
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MyMasterKeyPassword'
END

IF NOT EXISTS (SELECT name from sys.certificates WHERE name = 'BitLockerManagement_CERT')
BEGIN

CREATE CERTIFICATE BitLockerManagement_CERT AUTHORIZATION RecoveryAndHardwareCore
FROM FILE  = 'C:\BitLockerManagement_CERT'
    WITH PRIVATE KEY ( FILE = 'C:\BitLockerManagement_CERT_KEY',
        DECRYPTION BY PASSWORD = 'MyExportKeyPassword')

GRANT CONTROL ON CERTIFICATE ::BitLockerManagement_CERT TO RecoveryAndHardwareRead
GRANT CONTROL ON CERTIFICATE ::BitLockerManagement_CERT TO RecoveryAndHardwareWrite
END

Проверка сертификата

Используйте этот скрипт SQL, чтобы убедиться, что SQL Server успешно создали сертификат с необходимыми разрешениями.

USE CM_ABC
declare @count int
select @count = count(distinct u.name) from sys.database_principals u
join sys.database_permissions p on p.grantee_principal_id = u.principal_id or p.grantor_principal_id = u.principal_id
join sys.certificates c on c.certificate_id = p.major_id
where u.name in('RecoveryAndHardwareCore', 'RecoveryAndHardwareRead', 'RecoveryAndHardwareWrite') and
c.name = 'BitLockerManagement_CERT' and p.permission_name like 'CONTROL'
if(@count >= 3) select 1
else select 0

Если сертификат действителен, скрипт возвращает значение 1.

См. также

Дополнительные сведения об этих командах SQL см. в следующих статьях:

Дальнейшие действия

Развертывание клиента управления BitLocker