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

  1. Inicie sesión en Azure Portal.

  2. Abra el almacén de claves. Escriba almacenes de claves en el cuadro de búsqueda o seleccione Almacenes de claves.

    Captura de pantalla de la página principal de Azure para abrir un almacén de claves usando la búsqueda o seleccionando Almacenes de claves.

  3. Seleccione Directivas de acceso.

    Captura de pantalla de la configuración del almacén de claves para seleccionar directivas de acceso.

  4. Seleccione Azure Resource Manager para la implementación de plantillas. Después, seleccione Guardar.

    Captura de pantalla de las directivas de acceso del almacén de claves que habilitan a Azure Resource Manager para la implementación de plantillas.

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.