Регистрация компьютера в службе защиты узла

Область применения: SQL Server 2019 (15.x) и более поздних версий — только для Windows

В этой статье описывается, как зарегистрировать компьютеры SQL Server для аттестации с помощью службы защиты узлов (HGS).

Заметка

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

Перед началом работы нужно развернуть по крайней мере один компьютер HGS и настроить службу аттестации HGS. Дополнительные сведения см. в статье "Развертывание службы защиты узла для SQL Server".

Шаг 1. Установка клиентских компонентов аттестации

Заметка

Этот шаг должен выполняться администратором компьютера SQL Server.

Чтобы разрешить клиенту SQL проверить, что он разговаривает с надежным компьютером SQL Server, компьютер SQL Server должен успешно проверить работу службы защиты узлов. Процесс аттестации управляется дополнительным компонентом Windows, который называется "клиент HGS". Выполните приведенные ниже шаги, чтобы установить этот компонент и начать аттестацию.

  1. Убедитесь, что компьютер SQL Server соответствует предварительным требованиям, описанным в документации по планированию HGS.

  2. Выполните приведенную ниже команду в консоли PowerShell с повышенными привилегиями, чтобы установить компонент "Служба защиты узла — поддержка Hyper-V", который включает в себя клиент HGS и компоненты аттестации.

    Enable-WindowsOptionalFeature -Online -FeatureName HostGuardian -All
    
  3. Чтобы завершить установку, перезагрузите компьютер.

Шаг 2. Проверка безопасности на основе виртуализации выполняется

Заметка

Этот шаг должен выполняться администратором компьютера SQL Server.

При установке компонента "Служба защиты узла — поддержка Hyper-V" автоматически настраивается и включается функция безопасности на основе виртуализации (VBS). Анклава для SQL Server Always Encrypted защищены и выполняются в среде VBS. Функция VBS может не запуститься, если на компьютере не установлено и не включено устройство IOMMU. Чтобы проверить, работает ли VBS, откройте средство "Сведения о системе", запустив файл msinfo32.exe, и найдите элементы Virtualization-based security ближе к концу списка "Сведения о системе".

System Information screenshot showing virtualization-based security status and configuration

Первый элемент, который нужно проверить, — Virtualization-based security. Он может иметь одно из трех состояний.

  • Running означает, что функция VBS настроена правильно и была успешно запущена. Если вы видите это состояние, то можете перейти к шагу 3.
  • Enabled but not running означает, что запуск функции VBS настроен, но оборудование не отвечает минимальным требованиям для запуска VBS. Может потребоваться изменить конфигурацию оборудования в BIOS или UEFI посредством включения дополнительных функций процессора, таких как IOMMU, либо (если оборудование действительно не поддерживает необходимые функции) снизить требования для VBS. Дополнительные сведения см. далее в этом разделе.
  • Not enabled означает, что запуск функции VBS не настроен. Компонент "Служба защиты узла — поддержка Hyper-V" автоматически включает функцию VBS, поэтому, если вы видите это состояние, рекомендуется повторить шаг 1.

Если функция VBS не выполняется на компьютере, проверьте свойства Virtualization-based security. Сравните значения элемента Required Security Properties со значениями элемента Available Security Properties. Чтобы функция VBS выполнялась, требуемые свойства должны быть равны доступным свойствам безопасности или являться их подмножеством.

В контексте проверки анклавов SQL Server свойства безопасности имеют следующее значение:

  • Base virtualization support требуется всегда, так как представляет минимальный набор компонентов оборудования, необходимый для запуска гипервизора.
  • Secure Boot рекомендуется, но не требуется для SQL Server Always Encrypted. Безопасная загрузка защищает от программ rootkit, требуя запуска подписанного корпорацией Майкрософт загрузчика после завершения инициализации UEFI. Если вы используете аттестацию доверенного платформенного модуля (TPM), безопасная загрузка включается после соответствующей оценки независимо от того, требует ли функция VBS ее включения.
  • DMA Protection рекомендуется, но не требуется для SQL Server Always Encrypted. Защита DMA использует IOMMU для защиты VBS и памяти анклава от атак с прямым доступом к памяти. В рабочей среде следует всегда использовать компьютеры с защитой DMA. В среде разработки или тестирования можно сделать защиту DMA необязательной. Если экземпляр SQL Server виртуализирован, скорее всего, у вас нет защиты DMA и потребуется удалить требование для запуска VBS. Сведения о более низких гарантиях безопасности при выполнении в виртуальной машине см. в описании модели доверия.

Прежде чем понижать требования к функциям безопасности для VBS, обратитесь к изготовителю оборудования (OEM) или поставщику облачных служб, чтобы узнать, можно ли каким-либо образом обеспечить выполнение недостающих требований платформы в UEFI или BIOS (например, включить безопасную загрузку, Intel VT-d или AMD IOV).

Чтобы изменить требуемые функции безопасности платформы для VBS, выполните следующую команду в консоли PowerShell с повышенными привилегиями:

# Value 0 = No security features required
# 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 0

После изменения реестра перезапустите компьютер SQL Server и проверьте, работает ли VBS снова.

Если компьютер управляется вашей компанией, групповая политика или Microsoft Endpoint Manager могут переопределить любые изменения, внесенные в эти разделы реестра после перезапуска. Чтобы узнать, развернуты ли политики, управляющие конфигурацией VBS, обратитесь в свою службу технической ИТ-поддержки.

Шаг 3. Настройка URL-адреса аттестации

Заметка

Этот шаг должен выполняться администратором компьютера SQL Server.

Далее вы настроите на компьютере с SQL Server URL-адрес службы аттестации HGS, полученный от администратора HGS.

В консоли Windows PowerShell с повышенными привилегиями выполните приведенную ниже команду, чтобы настроить URL-адрес аттестации, изменив ее нужным образом.

  • Замените hgs.bastion.local именем кластера HGS.
  • Чтобы узнать имя кластера, можно выполнить командлет Get-HgsServer на любом компьютере HGS.
  • URL-адрес аттестации всегда должен заканчиваться на /Attestation.
  • SQL Server не использует функции защиты ключей HGS, поэтому укажите для -KeyProtectionServerUrl любой фиктивный URL-адрес, например http://localhost.
Set-HgsClientConfiguration -AttestationServerUrl "https://hgs.bastion.local/Attestation" -KeyProtectionServerUrl "http://localhost"

Если вы не зарегистрировали этот компьютер в службе HGS ранее, команда сообщит об ошибке аттестации. Это нормальный результат.

В поле AttestationMode в выходных данных командлета указывается режим аттестации, используемый в HGS.

Перейдите к шагу 4А, чтобы зарегистрировать компьютер в режиме TPM, или шагу 4Б, чтобы зарегистрировать компьютер в режиме ключа узла.

Шаг 4A. Регистрация компьютера в режиме TPM

Заметка

Этот шаг выполняется совместно администратором компьютера SQL Server и администратором HGS. Дополнительные сведения см. в примечаниях ниже.

Подготовить

Заметка

Это действие должно выполняться администратором компьютера SQL Server.

На этом шаге вы собираете сведения о состоянии модуля TPM компьютера и регистрируете их в службе HGS.

Если для службы аттестации HGS настроен режим ключа узла, вместо этого перейдите к шагу 4Б.

Прежде чем приступить к сбору показателей TPM, убедитесь в том, что вы работаете с известной конфигурацией компьютера SQL Server. На компьютере должно быть установлено все необходимое оборудование, а также применены последние обновления встроенного ПО и программного обеспечения. Служба HGS измеряет показатели компьютеров относительно этих базовых показателей при аттестации, поэтому при сборе показателей модуля TPM важно иметь максимально безопасное состояние.

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

Артефакт аттестации Что измеряется Уникальность
Идентификатор платформы Открытый ключ подтверждения в модуле TPM компьютера и сертификат ключа подтверждения от производителя модуля TPM. 1 на каждый компьютер
Базовые показатели TPM Регистры конфигурации платформы (PCR) в модуле TPM, которые измеряют показатели конфигурации встроенного ПО и ОС, загруженной в процессе загрузки. К примерам относятся состояние безопасной загрузки и шифрование аварийных дампов. Один базовый план на уникальную конфигурацию компьютера (для одинакового оборудования и программного обеспечения можно использовать один и тот же базовый план)
Политика целостности кода Надежная политика управления приложениями в Защитнике Windows для защиты компьютеров Одна на уникальную политику непрерывной интеграции, развернутую на компьютерах.

В HGS можно настроить более одного артефакта аттестации каждого типа для поддержки смешанного парка оборудования и программного обеспечения. Служба HGS требует, чтобы проходящий аттестацию компьютер соответствовал хотя бы одной политике из каждой категории. Например, если в службе HGS зарегистрированы три базовых плана TPM, компьютер будет считаться соответствующим политике, если его показатели соответствуют любому из них.

Настройка политики целостности кода

Заметка

Эти действия должны выполняться администратором компьютера SQL Server.

Служба HGS требует, чтобы к каждому компьютеру, проходящему аттестацию в режиме TPM, применялась политика управления приложениями в Защитнике Windows (WDAC). Политики целостности кода WDAC ограничивают программное обеспечение, которое может выполняться на компьютере, проверяя каждый процесс, пытающийся выполнить код, по списку доверенных издателей и хэшей файлов. В варианте использования SQL Server анклавы защищены функцией безопасности на основе виртуализации и не могут изменяться из операционной системы узла (OS), поэтому строгость политики WDAC не влияет на безопасность зашифрованных запросов. Таким образом, рекомендуется развернуть политику режима аудита на компьютерах SQL Server, чтобы обеспечить соответствие требованиям аттестации без применения дополнительных ограничений в системе.

Если вы уже используете настраиваемую политику целостности кода WDAC на компьютерах для защиты конфигурации ОС, можно перейти к разделу Получение сведений для аттестации TPM.

  1. В операционных системах Windows Server 2019, Windows 10 версии 1809 и более поздних версий имеются готовые примеры политик. Политика AllowAll позволяет запускать на компьютере любое программное обеспечение без ограничений. Чтобы использовать политику, преобразуйте ее в двоичную форму, понятную операционной системе и службе HGS. Чтобы скомпилировать политику AllowAll, в консоли PowerShell с повышенными привилегиями выполните следующие команды.

    # We are changing the policy to disable enforcement and user mode code protection before compiling
    $temppolicy = "$HOME\Desktop\allowall_edited.xml"
    Copy-Item -Path "$env:SystemRoot\schemas\CodeIntegrity\ExamplePolicies\AllowAll.xml" -Destination $temppolicy
    Set-RuleOption -FilePath $temppolicy -Option 0 -Delete
    Set-RuleOption -FilePath $temppolicy -Option 3
    
    ConvertFrom-CIPolicy -XmlFilePath $temppolicy -BinaryFilePath "$HOME\Desktop\allowall_cipolicy.bin"
    
  2. Следуйте инструкциям в руководстве по развертыванию управления приложениями в Защитнике Windows, чтобы развернуть allowall_cipolicy.bin файл на компьютерах SQL Server с помощью групповой политики. Для компьютеров из рабочей группы выполните тот же процесс в редакторе локальных групповых политик (gpedit.msc).

  3. Запустите gpupdate /force на компьютерах SQL Server, чтобы настроить новую политику целостности кода, а затем перезапустите компьютеры, чтобы применить политику.

Сбор сведений для аттестации TPM

Заметка

Эти действия должны выполняться администратором компьютера SQL Server.

Повторите следующие действия для каждого компьютера SQL Server, который будет тестироваться с помощью HGS:

  1. На компьютере, который находится в достоверно хорошем состоянии, выполните следующие команды в PowerShell, чтобы собрать сведения для аттестации TPM:

    # Collects the TPM EKpub and EKcert
    $name = $env:computername
    $path = "$HOME\Desktop"
    (Get-PlatformIdentifier -Name $name).Save("$path\$name-EK.xml")
    
    # Collects the TPM baseline (current PCR values)
    Get-HgsAttestationBaselinePolicy -Path "$path\$name.tcglog" -SkipValidation
    
    # Collects the applied CI policy, if one exists
    Copy-Item -Path "$env:SystemRoot\System32\CodeIntegrity\SIPolicy.p7b" -Destination "$path\$name-CIpolicy.bin"
    
  2. Передайте три файла аттестации администратору HGS.

Регистрация компьютера с SQL Server в HGS

Заметка

Следующие шаги должны выполняться администратором HGS.

Повторите следующие действия для каждого компьютера SQL Server, который будет тестироваться с помощью HGS:

  1. Скопируйте файлы аттестации, полученные от администратора компьютера SQL Server на сервер HGS.

  2. На сервере HGS выполните следующие команды в консоли PowerShell с повышенными привилегиями, чтобы зарегистрировать компьютер SQL Server:

    # TIP: REMEMBER TO CHANGE THE FILENAMES
    # Registers the unique TPM with HGS (required for every computer)
    Add-HgsAttestationTpmHost -Path "C:\temp\SQL01-EK.xml"
    
    # Registers the TPM baseline (required ONCE for each unique hardware and software configuration)
    Add-HgsAttestationTpmPolicy -Name "MyHWSoftwareConfig" -Path "C:\temp\SQL01.tcglog"
    
    # Registers the CI policy (required ONCE for each unique CI policy)
    Add-HgsAttestationCiPolicy -Name "AllowAll" -Path "C:\temp\SQL01-CIpolicy.bin"
    

    Совет

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

Помимо идентификатора платформы, базовых показателей TPM и политики целостности кода, может потребоваться изменить встроенные политики, настраиваемые и применяемые службой HGS. Эти встроенные политики измеряются относительно базовых показателей модуля TPM, собирающихся с сервера, и представляют различные параметры безопасности, которые должны быть включены для защиты компьютера. Если имеются компьютеры, на которых нет IOMMU для защиты от атак путем прямого доступа к памяти (DMA) (например, виртуальные машины), необходимо отключить политику IOMMU.

Чтобы отключить требование наличия IOMMU, выполните следующую команду на сервере HGS:

Disable-HgsAttestationPolicy Hgs_IommuEnabled

Заметка

Если отключить политику IOMMU, блоки IOMMU не будут требоваться на компьютерах, проходящих аттестацию в службе HGS. Политику IOMMU нельзя отключить для отдельного компьютера.

Список зарегистрированных узлов и политик TPM можно просмотреть с помощью следующих команд PowerShell:

Get-HgsAttestationTpmHost
Get-HgsAttestationTpmPolicy

Шаг 4B. Регистрация компьютера в режиме ключа узла

Заметка

Этот шаг выполняется совместно администратором компьютера SQL Server и администратором HGS. Дополнительные сведения см. в примечаниях ниже.

В этом разделе приводятся пошаговые инструкции по созданию уникального ключа для узла и его регистрации в службе HGS. Если для службы аттестации HGS настроен режим TPM, вместо этого выполните инструкции в шаге 4А.

Создание ключа для компьютера SQL Server

Заметка

Эта часть должна выполняться совместно администратором компьютера SQL Server.

Аттестация ключей узла работает путем создания пары асимметричных ключей на компьютере SQL Server и предоставления HGS общедоступной половины этого ключа.

Повторите следующие действия для каждого компьютера SQL Server, который будет тестироваться с помощью HGS:

  1. Чтобы создать пару ключей, в консоли PowerShell с повышенными привилегиями выполните следующую команду:

    Set-HgsClientHostKey
    Get-HgsClientHostKey -Path "$HOME\Desktop\$env:computername-key.cer"
    

    Если вы уже создали ключ узла и хотите создать новую пару ключей, вместо этого используйте следующие команды:

    Remove-HgsClientHostKey
    Set-HgsClientHostKey
    Get-HgsClientHostKey -Path "$HOME\Desktop\$env:computername-key.cer"
    
  2. Передайте файл сертификата администратору HGS.

Регистрация компьютера с SQL Server в HGS

Заметка

Следующие шаги должны выполняться администратором HGS.

Повторите следующие действия для каждого компьютера SQL Server, который будет тестироваться с помощью HGS:

  1. Скопируйте файл сертификата, полученный администратором компьютера SQL Server, на сервер HGS.

  2. Выполните следующую команду в консоли PowerShell с повышенными привилегиями, чтобы зарегистрировать компьютер SQL Server:

    Add-HgsAttestationHostKey -Name "YourComputerName" -Path "C:\temp\yourcomputername.cer"
    

Шаг 5. Подтверждение успешного подтверждения узла

Заметка

Этот шаг должен выполняться администратором компьютера SQL Server.

После регистрации компьютера SQL Server в HGS (шаге 4A для TPM, шаге 4B для режима ключа узла) убедитесь, что он сможет успешно проверить.

Вы можете проверить конфигурацию клиента аттестации HGS и выполнить попытку аттестации в любое время с помощью командлета Get-HgsClientConfiguration.

Выходные данные команды будут выглядеть следующим образом:

PS C:\> Get-HgsClientConfiguration


IsHostGuarded                  : True
Mode                           : HostGuardianService
KeyProtectionServerUrl         : http://localhost
AttestationServerUrl           : http://hgs.bastion.local/Attestation
AttestationOperationMode       : HostKey
AttestationStatus              : Passed
AttestationSubstatus           : NoInformation
FallbackKeyProtectionServerUrl :
FallbackAttestationServerUrl   :
IsFallbackInUse                : False

Два наиболее важных поля в выходных данных — AttestationStatus (показывает, прошел ли компьютер аттестацию) и AttestationSubStatus (показывает, какие политики не соблюдаются, если компьютер не прошел аттестацию).

Ниже описываются наиболее распространенные значения поля AttestationStatus.

AttestationStatus Пояснение
Срок действия истек Узел проходил аттестацию ранее, но истек срок действия выданного ему сертификата работоспособности. Проверьте, синхронизировано ли время узла и службы HGS.
InsecureHostConfiguration Компьютер не соответствует одной или нескольким политикам аттестации, настроенным на сервере HGS. Дополнительные сведения см. в разделе AttestationSubStatus.
NotConfigured На компьютере не настроен URL-адрес аттестации. Настройте URL-адрес.
Передано Компьютер прошел аттестацию и доверяет запуск анклавов SQL Server.
TransientError Попытка аттестации завершилась сбоем из-за временной ошибки. Эта ошибка обычно означает, что возникла проблема при обращении к службе HGS по сети. Проверьте сетевое подключение и возможность разрешения имени службы HGS и маршрутизации к нему.
TpmError Устройство TPM компьютера сообщило об ошибке во время попытки аттестации. Дополнительные сведения см. в журналах TPM. Очистка модуля TPM может помочь устранить эту проблему, но перед этим не забудьте приостановить работу BitLocker и других служб, использующих модуль TPM.
UnauthorizedHost Ключ узла неизвестен службе HGS. Чтобы зарегистрировать компьютер в службе HGS, выполните инструкции из шага 4Б.

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

AttestationSubStatus Пояснение и требуемые меры
CodeIntegrityPolicy Политика целостности кода на компьютере не зарегистрирована в службе HGS или на компьютере в настоящее время не используется политика целостности кода. Инструкции см. в разделе Настройка политики целостности кода.
DumpsEnabled На компьютере разрешены аварийные дампы, но политика Hgs_DumpsEnabled запрещает их. Отключите дампы на этом компьютере или отключите политику Hgs_DumpsEnabled, чтобы продолжить.
FullBoot Компьютер вышел из спящего режима или гибернации, что привело к изменениям в показателях TPM. Перезапустите компьютер, чтобы создать изначальные показатели TPM.
HibernationEnabled На компьютере разрешена гибернация с незашифрованными файлами гибернации. Чтобы устранить эту проблему, отключите гибернацию на компьютере.
HypervisorEnforcedCodeIntegrityPolicy На компьютере не настроено использование политики целостности кода. Проверьте узел "Групповая политика" или "Локальная групповая политика" > "Конфигурация компьютера" > "Административные шаблоны" > "Система" > Device Guard > "Включить средство обеспечения безопасности на основе виртуализации" > "Защита проверки целостности кода на основе виртуализации". Этот элемент политики должен иметь значение "Включено без блокировки UEFI".
Iommu На этом компьютере не включено устройство IOMMU. Если это физический компьютер, включите IOMMU в меню конфигурации UEFI. Если это виртуальная машина и IOMMU недоступен, выполните команду Disable-HgsAttestationPolicy Hgs_IommuEnabled на сервере HGS.
SecureBoot На этом компьютере не включена безопасная загрузка. Чтобы устранить эту ошибку, включите безопасную загрузку в меню конфигурации UEFI.
VirtualSecureMode На этом компьютере не запущена функция безопасности на основе виртуализации. Следуйте инструкциям на шаге 2. Убедитесь, что VBS запущен на компьютере.

Далее