Настройка сертификата шифрования и шифрование секретов в кластерах Windows

В этой статье описывается, как настроить сертификат шифрования и использовать его для шифрования секретов в кластерах Windows. Инструкции для кластеров Linux приведены в разделе Настройка сертификата шифрования и шифрование секретов в кластерах Linux.

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

Получение сертификата шифрования данных

Сертификат шифрования данных используются исключительно для шифрования и расшифровки параметров в файле Settings.xml службы и переменных среды в ее файле ServiceManifest.xml. Он не применяется для аутентификации или подписывания зашифрованного текста. Сертификат должен отвечать приведенным ниже требованиям.

  • Сертификат должен содержать закрытый ключ.

  • Сертификат должен быть создан для обмена ключами, которые можно экспортировать в файл обмена личной информацией (PFX-файл).

  • Использование ключа сертификата должно включать шифрование данных (10) и не должно включать аутентификацию сервера или клиента.

    Например, при создании самозаверяющего сертификата с помощью PowerShell для флага KeyUsage необходимо задать значение DataEncipherment:

    New-SelfSignedCertificate -Type DocumentEncryptionCert -KeyUsage DataEncipherment -Subject mydataenciphermentcert -Provider 'Microsoft Enhanced Cryptographic Provider v1.0'
    

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

Этот сертификат должен быть установлен на каждом узле в кластере. Инструкции по созданию и настройке кластера с помощью Azure Resource Manager см. в этой статье.

Шифрование секретов приложений

Для шифрования секрета используется следующая команда PowerShell. Эта команда шифрует только значение; она не подписывает зашифрованный текст. Чтобы создать зашифрованные данные для значений секретов, необходимо использовать тот же сертификат шифрования, установленный в кластере.

Invoke-ServiceFabricEncryptText -CertStore -CertThumbprint "<thumbprint>" -Text "mysecret" -StoreLocation CurrentUser -StoreName My

Результирующая строка в кодировке Base-64 содержит как зашифрованные данные секрета, так и сведения о сертификате, с помощью которого выполнено шифрование секрета.

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

Узнайте, как указать зашифрованные секреты в приложении.