Поделиться через


Внешние поставщики ключей в Кластерах больших данных SQL Server

Важно!

Поддержка надстройки "Кластеры больших данных" Microsoft SQL Server 2019 будет прекращена. Мы прекратим поддержку Кластеров больших данных SQL Server 2019 28 февраля 2025 г. Все существующие пользователи SQL Server 2019 с Software Assurance будут полностью поддерживаться на платформе, а программное обеспечение будет продолжать поддерживаться через SQL Server накопительных обновлений до этого времени. Дополнительные сведения см. в записи блога объявлений и в статье о параметрах больших данных на платформе Microsoft SQL Server.

В этой статье приводятся сведения о настройке внешних поставщиков ключей для управления ключами в Кластерах больших данных SQL Server.

Дополнительные сведения об использовании версий ключей в Кластерах больших данных SQL Server см. в статье Версии ключей в Кластерах больших данных SQL Server.

Сведения о настройке и использовании шифрования неактивных данных см. в следующих руководствах.

Предварительные требования

Шифрование корневого ключа с использованием внешних поставщиков

При использовании внешних ключей в Кластеры больших данных SQL Server главный ключ шифрования получает открытый ключ с помощью приложения, развернутого клиентом. При смене и использовании ключей HDFS вызовы для расшифровки ключей HDFS отправляются на уровень управления, а затем перенаправляются в приложение с помощью идентификатора ключа, предоставленного клиентом. Для SQL Server запросы на шифрование отправляются на уровень управления и выполняются им, так как у него есть открытый ключ. Запросы на расшифровку ключа шифрования данных (DEK) из SQL Server также отправляются на уровень управления, а затем перенаправляются в приложение, которое взаимодействует с внешним поставщиком, например аппаратным модулем безопасности (HSM).

На схеме показана ситуация после установки ключа клиента.

На приведенной ниже схеме поясняется взаимодействие при настройке внешних ключей на уровне управления.

На схеме объясняется взаимодействие при настройке внешних ключей в плоскости управления.

После установки ключа шифрование и расшифровка различных полезных данных происходит под защитой главного ключа шифрования. Эта защита аналогична обеспечиваемой ключами, управляемыми системой, за исключением того, что вызовы расшифровки, направляемые на уровень управления, затем направляются в приложение подключаемого модуля службы управления ключами (KMS). Приложение подключаемого модуля KMS направляет запрос в соответствующее расположение, например HSM, Hashicorp Vault или другой продукт.

Конфигурация

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

В шаблонном приложении приведены примеры интеграции с реализациями внешних поставщиков с помощью стандартного протокола PKCS11, использующего SoftHSM. Существуют также примеры с использованием хранилища Azure Key Vault и Hashicorp. Шаблонные приложения предоставляются в качестве эталонной реализации "как есть".

В следующих разделах приведены инструкции по настройке внешнего поставщика ключей в качестве корневого ключа шифрования для баз данных SQL Server и зон шифрования HDFS.

Создание ключа RSA 2048 во внешнем поставщике ключей

Создайте PEM-файл с 2048-разрядным ключом RSA и отправьте его в хранилище значений ключей во внешнем поставщике ключей.

Например, файл ключа можно добавить в хранилище KV в Hashicorp Vault по пути bdc-encryption-secret, а имя секрета может быть rsa2048.

Настройка и развертывание приложения для интеграции в Кластерах больших данных

  1. На локальном компьютере перейдите в папку, содержащую шаблонные приложения kms_plugin_app AppDeploy Кластеров больших данных.

  2. Настройте приложение, выбрав один из шаблонов и адаптировав его к своему сценарию:

    • Файл custom_softhsm.py содержит эталонную реализацию с использованием SoftHSM.
    • Файл custom_akv.py содержит пример Azure Key Vault.
    • Файл custom_hcv.py содержит пример HashiCorp Vault.

    Внимание!

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

  3. Присвойте соответствующее имя файлу, создаваемому на основе с приведенного выше шаблона. Например, сохраните custom_softhsm.py как my_custom_integration_v1.py, а затем выполните настройку. Этот подход важен для следующего шага.

  4. app.py — это точка входа, которая будет загружать приложение. В этом файле необходимо изменить строку 11, чтобы она указывала на имя пользовательского файла без расширения .py из предыдущего шага. В приведенном выше примере измените:

    ...
    import utils
    from json_objects import EncryptDecryptRequest
    import custom_softhsm as custom
    
    def handler(operation, payload, pin, key_attributes, version):
    ...
    

    Введите следующее значение:

    ...
    import utils
    from json_objects import EncryptDecryptRequest
    import my_custom_integration_v1 as custom
    
    def handler(operation, payload, pin, key_attributes, version):
    ...
    
  5. Из папки с файлом spec.yaml разверните приложение в Кластерах больших данных с помощью этой команды:

    azdata app create -s
    
  6. Дождитесь завершения развертывания приложения. Состояние готовности можно проверить с помощью этой команды:

    azdata app list
    

Настройка Кластеров больших данных для использования внешнего поставщика ключей

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

    export AZDATA_EXTERNAL_KEY_PIN=<your PIN/token here>
    

    Примечание

    В процессе развертывания приложения для интеграции используется маркер для доступа к внешнему поставщику ключей. Однако переменная AZDATA_EXTERNAL_KEY_PIN сохраняется в зашифрованном виде на уровне управления Кластеров больших данных, чтобы приложение могло интерпретировать ее. Можно также использовать другой механизм проверки подлинности, но приложение потребуется изменить. Изучить логику интеграции в полной форме можно в приложении Python custom*.py.

  2. Настройте ключ в Кластерах больших данных с помощью приведенной ниже структуры команды azdata. Измените необходимые параметры в соответствии со своей реализацией. В следующем примере используется структура HashiCorp Vault, предоставляемая custom2.py.

    azdata bdc kms update --app-name <YOUR-APP-NAME> --app-version <YOUR-APP-VERSION> \
    --key-attributes keypath=<YOUR-KEY-PATH>,vaulturl=http://<YOUR-IP>:<YOUR-PORT>,keyname=<YOUR-KEY-NAME> \
    --provider External
    

    Значение параметра --provider External позволяет настроить KMS для Кластеров больших данных так, чтобы в качестве конечной точки для операций с ключами использовалось приложение интеграции.

  3. Проверьте корневой ключ шифрования как ключ с внешним управлением с помощью приведенной ниже команды.

    azdata bdc kms show
    

Шифрование баз данных и зон шифрования с помощью новых ключей

После настройки базы данных SQL Server и зоны шифрования HDFS по-прежнему шифруются с использованием прежней иерархии ключей. Необходимо явно зашифровать их с помощью ключей с внешним управлением.

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

Асимметричный ключ можно просмотреть с помощью следующего запроса T-SQL в представлении системного каталога sys.asymmetric_keys.

USE master;
select * from sys.asymmetric_keys;

Асимметричных ключ отобразится с соглашением об именовании tde_asymmetric_key_<version>. Администратор SQL Server может затем сменить предохранитель DEK на асимметричный ключ с помощью инструкции ALTER DATABASE ENCRYPTION KEY. Например, используйте следующую команду T-SQL:

USE db1;
ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY tde_asymmetric_key_0;
  1. Чтобы проверить текущий ключ шифрования, выполните следующую команду:

    azdata bdc hdfs key describe
    
  2. Получите сведения о версии ключа, защищающего ключ зоны шифрования:

    azdata bdc hdfs key describe --name <key name>
    
  3. Переведите ключ на использование нового ключа с внешним управлением:

    azdata bdc hdfs key roll --name <new key name>
    
  4. Запустите шифрование с помощью этой команды:

    azdata bdc hdfs encryption-zone reencrypt –-path <your EZ path> --action start
    
  5. Проверьте иерархию ключей с помощью следующих команд:

    azdata bdc kms show
    azdata bdc hdfs key describe
    

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