Доступ к секрету Key Vault при развертывании Управляемых приложений Azure
Если необходимо передать защищенное значение (например, пароль) в качестве параметра во время развертывания, можно извлечь его из Azure Key Vault. Чтобы получить доступ к Key Vault при развертывании управляемых приложений, нужно предоставить доступ к субъекту-службе Поставщик ресурсов устройств. Служба управляемых приложений использует это удостоверение для выполнения операций. Для успешного извлечения значения из Key Vault во время развертывания у субъекта-службы должен быть доступ к Key Vault.
Эта статья описывает настройку Key Vault для работы с управляемыми приложениями.
Активация развертывания шаблонов
Войдите на портал Azure.
Откройте хранилище ключей. Введите хранилища ключей в поле поиска или выберите Хранилища ключей.
Выберите конфигурацию Access.
Выберите Azure Resource Manager для развертывания шаблонов. Затем выберите Применить.
Добавление службы в качестве участника
Присвойте роль Участник пользователю Поставщик ресурсов устройства в области Key Vault. Роль участника — это роль привилегированного администратора для назначения роли. Подробные инструкции см. в статье "Назначение ролей Azure" с помощью портал Azure.
Поставщик ресурсов устройства — это субъект-служба в клиенте Microsoft Entra. В портал Azure можно проверить регистрацию в приложениях Microsoft Entra ID>Enterprise и изменить фильтр поиска на приложения Майкрософт. Найдите Поставщик ресурсов устройства. Если субъект-служба не найден, зарегистрируйте Microsoft.Solutions
поставщика ресурсов.
Ссылка на секрет Key Vault
Чтобы в управляемом приложении передать секрет из Key Vault в шаблон, нужно использовать связанный или вложенный шаблон со ссылкой на Key Vault в параметрах этого связанного или вложенного шаблона. Укажите идентификатор ресурса Key Vault и имя секрета.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The location where the resources will be deployed."
}
},
"vaultName": {
"type": "string",
"metadata": {
"description": "The name of the key vault that contains the secret."
}
},
"secretName": {
"type": "string",
"metadata": {
"description": "The name of the secret."
}
},
"vaultResourceGroupName": {
"type": "string",
"metadata": {
"description": "The name of the resource group that contains the key vault."
}
},
"vaultSubscription": {
"type": "string",
"defaultValue": "[subscription().subscriptionId]",
"metadata": {
"description": "The name of the subscription that contains the key vault."
}
}
},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2022-09-01",
"name": "dynamicSecret",
"properties": {
"mode": "Incremental",
"expressionEvaluationOptions": {
"scope": "inner"
},
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"adminLogin": {
"type": "string"
},
"adminPassword": {
"type": "securestring"
},
"location": {
"type": "string"
}
},
"variables": {
"sqlServerName": "[concat('sql-', uniqueString(resourceGroup().id, 'sql'))]"
},
"resources": [
{
"type": "Microsoft.Sql/servers",
"apiVersion": "2022-05-01-preview",
"name": "[variables('sqlServerName')]",
"location": "[parameters('location')]",
"properties": {
"administratorLogin": "[parameters('adminLogin')]",
"administratorLoginPassword": "[parameters('adminPassword')]"
}
}
],
"outputs": {
"sqlFQDN": {
"type": "string",
"value": "[reference(variables('sqlServerName')).fullyQualifiedDomainName]"
}
}
},
"parameters": {
"location": {
"value": "[parameters('location')]"
},
"adminLogin": {
"value": "ghuser"
},
"adminPassword": {
"reference": {
"keyVault": {
"id": "[resourceId(parameters('vaultSubscription'), parameters('vaultResourceGroupName'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]"
},
"secretName": "[parameters('secretName')]"
}
}
}
}
}
],
"outputs": {
}
}
Следующие шаги
Вы настроили Хранилище ключей для доступа во время развертывания управляемого приложения.
- Сведения о передаче значения из Key Vault в качестве параметра шаблона см. в разделе "Использование Azure Key Vault" для передачи безопасного значения параметра во время развертывания.
- Дополнительные сведения о безопасности хранилища ключей см. в разделе "Безопасность и проверка подлинности Azure Key Vault" в Azure Key Vault.
- Примеры управляемых приложений см. в разделе "Примеры проектов для управляемых приложений Azure".
- Чтобы узнать, как создать файл определения пользовательского интерфейса для управляемого приложения, перейдите к разделу "Начало работы с CreateUiDefinition".