Автоматизация развертывания HDInsight с нуля с сертификатом .pfx - PullRequest
0 голосов
/ 29 августа 2018

Когда в Azure создается кластер HDInsight, в качестве основного хранилища можно выбрать ADLS. Для аутентификации от HDInsight до ADLS требуется субъект обслуживания , и его можно сгенерировать и сертификат / ключ загрузить в виде файла .pfx на шаге 2. Azure явно указывает, что файл должен быть загружен и сохранен в безопасности, если кластер необходимо воссоздать. ( На шаге 2 вторым вариантом является использование существующего принципала, куда должен быть загружен файл .pfx.) Пока все хорошо - все работает как положено.

Проблема в том, что мне нужно автоматизировать весь процесс. Я скачал шаблон развертывания Azure RM. В этом файле нужно указать identityCertificate, который уже существует .pfx файл. Я не смог найти способ сгенерировать его с помощью шаблона.

Мы попытались создать субъект-службу, сохранить его в хранилище ключей и загрузить сертификат с помощью следующих команд интерфейса командной строки Azure:

az ad sp create-for-rbac --name ${sp_name} --create-cert --keyvault ${vault} --cert ${cert_name}
az keyvault certificate download --vault-name ${vault} --name ${cert_name} --file ${cert_name}.pem

Проблема в том, что файл .pem, созданный таким образом, содержит только открытый ключ, и развертывание завершается неудачей.

Очевидно, что я не могу сказать нашему клиенту, что ему нужно щелкать здесь и там в Azure, чтобы создать кластер, когда продукт будет запущен. Итак, главный вопрос:

Как я могу создать такого субъекта службы и получить программно .pfx для возможности развертывания HDInsight?

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Вот проект github, который предоставляет шаблон для развертывания нового кластера Linux HDInsight с новыми учетными записями хранилища и хранилища данных озера

Также сценарий PowerShell для создания файла сертификата (PFX) и создания субъекта службы

https://github.com/Azure/azure-quickstart-templates/tree/master/201-hdinsight-datalake-store-azure-storage

0 голосов
/ 10 сентября 2018

Мне удалось создать полный сертификат. Я случайно нашел пример в документации az keyvault certificate import.

Дело в том, что если az ad sp create-for-rbac вызывается без опции хранилища ключей, она генерирует пару ключей и сохраняет ее локально. Путь к файлу может быть извлечен из выходных данных (по умолчанию JSON, глобальные параметры запроса работают нормально).

Итак, фрагмент, который сделал трюк:

gen_cert_file=$(az ad sp create-for-rbac --name ${sp_name} --create-cert --query fileWithCertAndPrivateKey --output tsv)
mv ${gen_cert_file} ./${cert_file}
openssl pkcs12 -export -in ${cert_file} -passout "pass:${cert_pass}" -out ${pfx_file}
az keyvault certificate import --vault-name ${keyvault_name} --name ${cert_name} --file ${pfx_file} --password "${cert_pass}"

Результатом первой команды является файл .pem. Он преобразуется в защищенный паролем файл .pfx с помощью инструмента openssl. Этот файл также может быть использован в консоли Azure или в шаблоне развертывания.

...