Segreto di accesso di Key Vault quando si distribuiscono le Applicazioni gestite di Azure

Quando è necessario passare un valore protetto (ad esempio una password) come parametro durante la distribuzione, è possibile recuperare il valore da Azure Key Vault. Per accedere a Key Vault durante la distribuzione delle applicazione gestite è necessario concedere l'accesso all'entità servizio Provider di risorse di Appliance. Il servizio Applicazioni gestite usa questa identità per eseguire le operazioni. Per recuperare correttamente un valore da un insieme di credenziali delle chiavi durante la distribuzione, l'entità servizio deve essere in grado di accedere all'insieme di credenziali delle chiavi.

Questo articolo descrive come configurare Key Vault per lavorare con le applicazioni gestite.

Abilitare la distribuzione di modelli

  1. Accedi al portale di Azure.

  2. Aprire l'insieme di credenziali delle chiavi. Immettere gli insiemi di credenziali delle chiavi nella casella di ricerca o selezionare Insiemi di credenziali delle chiavi.

    Screenshot of the Azure home page to open a key vault using search or by selecting key vault.

  3. Selezionare Configurazione di accesso.

    Screenshot of the key vault setting to select access configuration.

  4. Selezionare Azure Resource Manager per la distribuzione di modelli. Selezionare quindi Applica.

    Screenshot of the key vault's access configuration that enables Azure Resource Manager for template deployment.

Aggiungere il servizio come collaboratore

Assegnare il ruolo Collaboratore all'utente del provider di risorse dell'appliance nell'ambito dell'insieme di credenziali delle chiavi. Il ruolo Collaboratore è un ruolo di amministratore con privilegi per l'assegnazione di ruolo. Per la procedura dettagliata, vedere Assegnare i ruoli di Azure usando il portale di Azure.

Il provider di risorse appliance è un'entità servizio nel tenant di Microsoft Entra. Dal portale di Azure, è possibile verificare se è registrato passando alle applicazioni Microsoft Entra ID>Enterprise e modificare il filtro di ricerca in Applicazioni Microsoft. Cercare Provider di risorse dell'appliance. Se non viene trovato, registrare il Microsoft.Solutions provider di risorse.

Fare riferimento al segreto di Key Vault

Per passare un segreto da un insieme di credenziali delle chiavi a un modello nell'applicazione gestita, è necessario usare un modello collegato o annidato e fare riferimento all'insieme di credenziali delle chiavi nei parametri per il modello collegato o annidato. Fornire l'ID risorsa di Key Vault e il nome del segreto.

{
  "$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": {
  }
}

Passaggi successivi

Key Vault è stato configurato per essere accessibile durante la distribuzione di un'applicazione gestita.