Guida introduttiva: Creare un Key Vault di Azure usando un modello ARM

Azure Key Vault è un servizio cloud che fornisce un archivio sicuro per i segreti, ad esempio chiavi, password e certificati. Questa guida introduttiva rapida si concentra sul processo di distribuzione di un template di Azure Resource Manager (modello ARM) per creare un Key Vault.

Un modello di Azure Resource Manager è un file JSON (JavaScript Object Notation) che definisce l'infrastruttura e la configurazione del progetto. Il modello utilizza la sintassi dichiarativa. Si descrive la distribuzione prevista senza scrivere la sequenza di comandi di programmazione necessari per creare la distribuzione.

Se il tuo ambiente soddisfa i prerequisiti e hai familiarità con l'uso dei modelli ARM, seleziona il pulsante Distribuisci in Azure. Il modello verrà aperto nel portale di Azure.

Button per distribuire il modello di Resource Manager in Azure.

Prerequisiti

Per completare questo articolo:

  • Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Rivedere il modello

Il modello usato in questo avvio rapido proviene dai modelli di avvio rapido di Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.42.1.51946",
      "templateHash": "5424899472990749957"
    }
  },
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the Azure location where the key vault should be created."
      }
    },
    "enabledForDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault."
      }
    },
    "enabledForDiskEncryption": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys."
      }
    },
    "enabledForTemplateDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault."
      }
    },
    "tenantId": {
      "type": "string",
      "defaultValue": "[subscription().tenantId]",
      "metadata": {
        "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "Specifies whether the key vault is a standard vault or a premium vault."
      }
    },
    "secretName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the secret that you want to create."
      }
    },
    "secretValue": {
      "type": "securestring",
      "metadata": {
        "description": "Specifies the value of the secret that you want to create."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2023-07-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enabledForDeployment": "[parameters('enabledForDeployment')]",
        "enabledForDiskEncryption": "[parameters('enabledForDiskEncryption')]",
        "enabledForTemplateDeployment": "[parameters('enabledForTemplateDeployment')]",
        "enableRbacAuthorization": true,
        "tenantId": "[parameters('tenantId')]",
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "enablePurgeProtection": true,
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/secrets",
      "apiVersion": "2023-07-01",
      "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretName'))]",
      "properties": {
        "value": "[parameters('secretValue')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
      ]
    }
  ],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "name": {
      "type": "string",
      "value": "[parameters('keyVaultName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
    }
  }
}

Nel modello è definita una risorsa di Azure:

  • Microsoft.KeyVault/vaults: creare un Key Vault di Azure. Il modello abilita l'autorizzazione RBAC di Azure (enableRbacAuthorization: true), l'eliminazione temporanea e la protezione dall'eliminazione definitiva.

Altri esempi di modelli di Azure Key Vault sono disponibili in Modelli di avvio rapido di Azure.

Implementare il modello

  1. Selezionare l'immagine seguente per accedere a Azure e aprire un modello. Il modello crea un insieme di credenziali delle chiavi.

    Button per distribuire il modello di Resource Manager in Azure.

  2. Selezionare o immettere i valori seguenti. A meno che non sia specificato, usare il valore predefinito.

    • Sottoscrizione: selezionare una sottoscrizione di Azure.
    • Gruppo di risorse: selezionare Crea nuovo, immettere un nome univoco per il gruppo di risorse e quindi selezionare OK.
    • Area: selezionare una località. Ad esempio Stati Uniti centrali.
    • Nome dell'insieme di credenziali: immettere un nome per l'insieme di credenziali delle chiavi, che deve essere univoco a livello globale all'interno del namespace vault.azure.net.
    • Nome SKU: selezionare Standard o Premium. Il valore predefinito è standard.
  3. Selezionare Rivedi e crea e quindi Crea. Dopo che il Key Vault è stato distribuito correttamente, si riceve una notifica.

È anche possibile usare Azure PowerShell, il interfaccia della riga di comando di Azure o l'API REST per distribuire il modello. Per informazioni su altri metodi di distribuzione, vedere Modelli di distribuzione.

Assegnare un ruolo RBAC di Key Vault

L'insieme di credenziali creato da questo modello usa il controllo degli accessi in base al ruolo di Azure per l'autorizzazione. Per creare o leggere chiavi, segreti o certificati tramite il piano dati, è necessario assegnare a se stessi un ruolo appropriato. Ad esempio, per gestire i segreti, assegnare a se stessi il ruolo Key Vault Secrets Officer:

echo "Enter your key vault name:" &&
read keyVaultName &&
az role assignment create --role "Key Vault Secrets Officer" \
    --assignee-object-id $(az ad signed-in-user show --query id -o tsv) \
    --scope $(az keyvault show --name $keyVaultName --query id -o tsv)

Note

Per altri ruoli predefiniti, vedere Azure ruoli predefiniti per le operazioni del piano dati Key Vault. La propagazione delle assegnazioni di ruolo potrebbe richiedere un minuto o due.

Esaminare le risorse distribuite

È possibile usare il portale di Azure per controllare l'insieme di credenziali delle chiavi oppure usare lo script di interfaccia della riga di comando di Azure o di Azure PowerShell seguente:

echo "Enter your key vault name:" &&
read keyVaultName &&
az keyvault show --name $keyVaultName

Pulire le risorse

Altre guide introduttive ed esercitazioni relative a Key Vault si basano su questa guida introduttiva. Se prevedi di continuare a lavorare con le guide introduttive e i tutorial successivi, potresti voler lasciare queste risorse intatte. Quando non è più necessario, eliminare il gruppo di risorse per eliminare anche il key vault e le risorse correlate.

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName

Note

L'eliminazione del gruppo di risorse elimina anche l'insieme di credenziali delle chiavi, ma quest'ultimo entra quindi in uno stato di eliminazione temporanea e rimane recuperabile per il periodo di conservazione (90 giorni per impostazione predefinita). Il nome dell'insieme di credenziali rimane riservato a livello globale durante tale periodo e, poiché la protezione dall'eliminazione è abilitata, l'insieme di credenziali non può essere eliminato in anticipo. Per gli insiemi di credenziali delle chiavi standard, gli insiemi di credenziali eliminati temporaneamente non comportano addebiti. Per altre informazioni, vedere Panoramica dell'eliminazione temporanea di Key Vault.

Altri modelli di Resource Manager di Key Vault

Altre guide introduttive rapide illustrano come popolare un insieme di credenziali con segreti, chiavi o certificati:

Segreti Keys Certificati

Altri modelli di Key Vault sono disponibili qui: Informazioni di riferimento su Resource Manager di Key Vault.

Passaggi successivi