Acceso al secreto de Key Vault al implementar Azure Managed Applications
Cuando tiene que pasar un valor seguro (por ejemplo, una contraseña) como un parámetro durante la implementación, puede recuperar el valor de Azure Key Vault. Para acceder a Key Vault cuando se implementa Managed Applications, debe conceder acceso a la entidad de servicio del proveedor de recursos de dispositivos. El servicio Managed Applications utiliza esta identidad para ejecutar operaciones. Para recuperar correctamente un valor de un almacén de claves durante la implementación, es necesario que la entidad de servicio pueda obtener acceso al almacén de claves.
En este artículo se describe cómo configurar Key Vault para que funcione con Managed Applications.
Habilitar la implementación de plantillas
Inicie sesión en Azure Portal.
Abra el almacén de claves. Escriba almacenes de claves en el cuadro de búsqueda o seleccione Almacenes de claves.
Seleccione Directivas de acceso.
Seleccione Azure Resource Manager para la implementación de plantillas. Después, seleccione Guardar.
Agregar servicio como colaborador
Asigne el rol de Colaborador al usuario del proveedor de recursos del dispositivo en el ámbito del almacén de claves. Para asignar roles, consulte Asignación de roles de Azure mediante Azure Portal.
El Proveedor de recursos del dispositivo es una entidad de servicio en el inquilino de Azure Active Directory. En Azure Portal, puede ver si está registrada yendo a Azure Active Directory>Aplicaciones empresariales y cambiando el filtro de búsqueda a Aplicaciones de Microsoft. Busque por proveedor de recursos de dispositivos. Si no se encuentra, registre el proveedor de recursos Microsoft.Solutions
.
Referencia a secreto de Key Vault
Para pasar un secreto desde Key Vault a una plantilla de la aplicación administrada, debe usar una plantilla vinculada o anidada y hacer referencia a Key Vault en los parámetros de la plantilla vinculada o anidada. Proporcione el identificador de recurso de Key Vault y el nombre del secreto.
{
"$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": "2021-04-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-02-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": {
}
}
Pasos siguientes
Ha configurado Key Vault para que esté accesible durante la implementación de una aplicación administrada.
- Para obtener información acerca de cómo pasar un valor de Key Vault como parámetro de plantilla, consulte Uso de Azure Key Vault para pasar el valor de parámetro seguro durante la implementación.
- Para más información sobre la seguridad del almacén de claves, consulte Seguridad de Azure Key Vault y Autenticación en Azure Key Vault.
- Para ver ejemplos de aplicaciones administradas, consulte Sample projects for Azure managed applications (Ejemplos de proyectos para aplicaciones administradas de Azure).
- Para aprender a crear un archivo de definición de interfaz de usuario para una aplicación administrada, consulte Introducción a CreateUiDefinition.