Вопрос или проблема
Я работаю с Azure Data Factory (ADF) и мне нужно автоматизировать перенос учетных данных (например, строки подключения Linked Service, секреты) из развивающейся среды в производственную с использованием Azure DevOps. Я хочу создать конвейер выпуска, который:
- Автоматически обновляет учетные данные в связанных службах ADF.
- Использует Azure Key Vault для управления конфиденциальной информацией (такими как пароли или строки подключения).
- Безопасно переносит учетные данные из развивающейся среды в производственную без жесткой кодировки в конвейере.
Каков лучший способ достичь этого с использованием ARM-шаблонов и Azure DevOps? Я также хотел бы понять, как переопределять секреты Key Vault между средами во время развертывания.
Буду признателен за любые советы или пошаговые примеры по настройке этого конвейера выпуска!
Что я уже пробовал:
У меня есть такая настройка в DevOps для развертывания конвейеров.
Ответ или решение
Автоматизация обновления учетных данных Azure Data Factory (ADF) с помощью Azure DevOps
Для автоматизации продвижения учетных данных из среды разработки в производственную, используя Azure DevOps и Azure Data Factory, можно следовать следующему этапному процессу.
Шаг 1: Настройка Azure Key Vault
-
Создайте Azure Key Vault:
- Откройте Azure Portal и создайте новый экземпляр Azure Key Vault для хранения ваших секретов (например, паролей и строк подключения).
-
Добавьте секреты в Key Vault:
- Сохраните необходимые учетные данные (например, строки подключения для Linked Services) в Key Vault как секреты. Убедитесь, что вы присвоили соответствующие имена секретам, чтобы их было легко идентифицировать.
Шаг 2: Подготовка ARM шаблона
- Создайте ARM шаблон:
- Разработайте ARM шаблон для вашего Azure Data Factory, который включает конфигурацию Linked Services. Не забудьте использовать параметры для указания секретов из Key Vault.
Пример структуры ARM шаблона:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.DataFactory/factories/linkedServices",
"apiVersion": "2018-06-01",
"name": "[concat(parameters('dataFactoryName'), '/', parameters('linkedServiceName'))]",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"connectionString": "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('storageAccountName'), ';AccountKey=', listKey(parameters('keyVaultName'), '2016-10-01').keys[0].value)]"
},
"connectVia": {
"referenceName": "IntegrationRuntime",
"type": "IntegrationRuntimeReference"
}
}
}
],
"parameters": {
"dataFactoryName": {
"type": "string"
},
"linkedServiceName": {
"type": "string"
},
"keyVaultName": {
"type": "string"
},
"storageAccountName": {
"type": "string"
}
}
}
Шаг 3: Настройка Azure DevOps
-
Создайте проект в Azure DevOps и добавьте репозиторий, в который будете помещать ваш ARM шаблон.
-
Настройка CI/CD пайплайна:
- Создайте два отдельных пайплайна: один для разработки и один для продакшена.
- Для пайплайна разработки используйте шаги для развертывания ARM шаблона с параметрами, указывающими на разработку, и обеспечьте доступ к соответствующим секретам в Key Vault.
Шаг 4: Использование переменных для межсредовых настроек
-
Настройка переменных в Azure DevOps:
- Определите переменные для хранения значений секретов, включая URL-адреса и другие параметры. В каждой среде (разработка, продакшен) можно использовать разные значения.
-
Перекрытие секретов при развертывании:
- Используйте Azure DevOps для передачи необходимых параметров в ARM шаблон. Например, для продакшена можно использовать другие переменные для доступа к различным секретам в Key Vault.
Пример использования переменных в Azure DevOps:
parameters:
- name: storageAccountName
type: string
default: $(StorageAccountName)
resources:
repositories:
- repository: templates
type: git
name: your-git-repo
Шаг 5: Запуск пайплайнов
После настройки пайплайнов можно запускать их в последовательности:
-
Пайплайн для разработки: будет развертывать обновления и управлять секретами в Key Vault разработки.
-
Пайплайн для продакшена: будет использовать уже настроенные значения секретов в Azure Key Vault для продакшен среды.
Итог
Эта схема позволяет вам безопасно и надежно управлять продвижением учетных данных в Azure Data Factory, используя Azure DevOps и Azure Key Vault. Все учетные данные хранятся безопасно в Key Vault, и в ваших пайплайнах не происходит хардкодинга секретов, что обеспечивает безопасность и гибкость при развертывании.