Avvio rapido: creare un insieme di credenziali delle chiavi di Azure e un certificato tramite Bicep

Azure Key Vault è un servizio cloud che fornisce un archivio sicuro per i segreti, ad esempio chiavi, password e certificati. Questa guida introduttiva è incentrata sul processo di distribuzione di un file Bicep per creare un insieme di credenziali delle chiavi e un certificato autofirmato.

Bicep è un linguaggio specifico di dominio (DSL) che usa la sintassi dichiarativa per distribuire le risorse di Azure. Fornisce sintassi concisa, sicurezza dei tipi affidabile e supporto per il riutilizzo del codice. Bicep offre la migliore esperienza di creazione per le soluzioni di infrastruttura come codice in Azure.

Prerequisiti

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

Rivedere il file Bicep

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

@description('The name of the key vault to be created.')
param vaultName string

@description('The name of the certificate to be created.')
param certificateName string

@description('The location of the resources.')
param location string = resourceGroup().location

@description('The SKU of the vault to be created.')
@allowed([
  'standard'
  'premium'
])
param skuName string = 'standard'

@description('The common name (subject) for the self-signed certificate. Defaults to the certificate name.')
param certificateCommonName string = certificateName

@description('The validity of the certificate in months.')
@minValue(1)
@maxValue(1200)
param validityInMonths int = 12

resource vault 'Microsoft.KeyVault/vaults@2023-07-01' = {
  name: vaultName
  location: location
  properties: {
    enableRbacAuthorization: true
    enableSoftDelete: true
    softDeleteRetentionInDays: 90
    enablePurgeProtection: true
    enabledForDeployment: false
    enabledForDiskEncryption: false
    enabledForTemplateDeployment: false
    tenantId: subscription().tenantId
    sku: {
      name: skuName
      family: 'A'
    }
    networkAcls: {
      defaultAction: 'Allow'
      bypass: 'AzureServices'
    }
  }
}

// Key Vault certificates are a data-plane concept and cannot be created
// directly through ARM. Use the public Bicep registry module which wraps
// `az keyvault certificate create` in a deployment script (it provisions a
// user-assigned managed identity with the Key Vault Certificate Officer
// role on the vault for the duration of the deployment).
module certificate 'br/public:deployment-scripts/create-kv-certificate:3.4.2' = {
  name: 'create-${certificateName}'
  params: {
    akvName: vault.name
    location: location
    certificateNames: [certificateName]
    certificateCommonNames: [certificateCommonName]
    validity: validityInMonths
  }
}

output location string = location
output name string = vault.name
output resourceGroupName string = resourceGroup().name
output resourceId string = vault.id
output certificateSecretId string = certificate.outputs.certificateSecretIds[0][0]
output certificateThumbprint string = certificate.outputs.certificateThumbprintHexs[0][0]

Nel file Bicep sono definite due risorse di Azure:

  • Microsoft.KeyVault/vaults: creare un insieme di credenziali delle chiavi di Azure con l'autorizzazione RBAC di Azure abilitata (enableRbacAuthorization: true).
  • Microsoft.Resources/deployments: distribuzione nidificata che esegue il modulo del registro create-kv-certificate per creare un certificato autofirmato nell'archivio. I certificati sono una risorsa del piano dati e non possono essere creati direttamente con un tipo di risorsa ARM.

Implementazione del file Bicep

  1. Salvare il file Bicep come main.bicep nel computer locale.

  2. Distribuisci il file Bicep usando l'interfaccia della riga di comando di Azure (interfaccia della riga di comando di Azure) oppure Azure PowerShell.

    az group create --name myResourceGroup --location eastus
    az deployment group create --resource-group myResourceGroup --template-file main.bicep --parameters vaultName=<vault-name> certificateName=myCert
    

    Note

    Sostituisci <vault-name> con il nome dell'insieme di credenziali delle chiavi, che deve essere univoco a livello globale nello spazio dei nomi vault.azure.net.

    Al termine della distribuzione, verrà visualizzato un messaggio che indica che la distribuzione è riuscita.

Assegnare un ruolo RBAC di Key Vault

L'insieme di credenziali delle chiavi creato da questo file Bicep usa il controllo degli accessi in base al ruolo di Azure (Azure RBAC) per l'autorizzazione. Per accedere ai certificati tramite il piano dati, ad esempio usando il interfaccia della riga di comando di Azure o Azure PowerShell, è necessario assegnare a se stessi un ruolo appropriato.

echo "Enter your key vault name:" &&
read keyVaultName &&
az role assignment create --role "Key Vault Certificates 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

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 e il certificato oppure usare lo script interfaccia della riga di comando di Azure o Azure PowerShell seguente per elencare il certificato creato.

echo "Enter your key vault name:" &&
read keyVaultName &&
az keyvault certificate list --vault-name $keyVaultName &&
echo "Press [ENTER] to continue ..."

Pulire le risorse

Quando non è più necessario, usare il portale di Azure, interfaccia della riga di comando di Azure o Azure PowerShell per eliminare il gruppo di risorse e le relative risorse.

az group delete --name myResourceGroup

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.

Passaggi successivi

In questa guida introduttiva è stato creato un insieme di credenziali e un certificato tramite Bicep, quindi è stata convalidata la distribuzione. Per altre informazioni su Key Vault e Bicep, continuare con gli articoli seguenti.