Gestire le chiavi dell'account di archiviazione con Key Vault e l'interfaccia della riga di comando di Azure (legacy)

Importante

Key Vault Managed Archiviazione Account Keys (legacy) è supportato così come è senza altri aggiornamenti pianificati. Solo la firma di accesso condiviso dell'account è supportata con le definizioni di firma di accesso condiviso versione del servizio di archiviazione non successiva alla versione 2018-03-28.

Importante

Il supporto per le chiavi dell'account di Archiviazione gestite nell'interfaccia della riga di comando di Azure è stato rimosso nella versione 2.544, è necessario usare l'interfaccia della riga di comando di Azure versione 2.53.1 o precedente per i comandi di questa esercitazione.

Importante

È consigliabile usare l'integrazione Archiviazione di Azure con Microsoft Entra ID, il servizio di gestione delle identità e degli accessi basato sul cloud di Microsoft. L'integrazione di Microsoft Entra è disponibile per BLOB, code e tabelle di Azure e fornisce l'accesso basato su token OAuth2 alle Archiviazione di Azure (proprio come Azure Key Vault). Microsoft Entra ID consente di autenticare l'applicazione client usando un'applicazione o un'identità utente, anziché le credenziali dell'account di archiviazione. È possibile usare un'identità gestita di Microsoft Entra quando si esegue in Azure. Le identità gestite eliminano la necessità di eseguire l'autenticazione dei client e di archiviare le credenziali nell'applicazione. Usare la soluzione seguente solo quando l'autenticazione di Microsoft Entra non è possibile.

Un account di archiviazione Azure usa credenziali costituite da un nome account e una chiave. La chiave viene generata automaticamente e viene usata come password, invece che come chiave crittografica. Key Vault gestisce le chiavi degli account di archiviazione rigenerandole periodicamente nell'account di archiviazione e fornisce token di firma di accesso condiviso per l'accesso delegato alle risorse nell'account di archiviazione.

È possibile usare la funzionalità di chiave dell'account di archiviazione gestita di Key Vault per elencare (sincronizzare) le chiavi con un account di archiviazione di Azure e rigenerare (ruotare) le chiavi periodicamente. È possibile gestire le chiavi per gli account di archiviazione e gli account di archiviazione classici.

Quando si usa la funzionalità di chiave dell'account di archiviazione gestita, è necessario prendere in considerazione gli aspetti seguenti:

  • I valori di chiave non vengono mai restituiti in risposta a un chiamante.
  • È necessario che solo Key Vault gestisca le chiavi dell'account di archiviazione. Non è possibile gestire autonomamente le chiavi e occorre evitare di interferire con i processi di Key Vault.
  • È necessario che solo un singolo oggetto di Key Vault gestisca le chiavi dell'account di archiviazione. È necessario non consentire la gestione delle chiavi da più oggetti.
  • È necessario rigenerare le chiavi solo tramite Key Vault. Non rigenerare manualmente le chiavi dell'account di archiviazione.

Importante

La rigenerazione della chiave direttamente nell'account di archiviazione interrompe la configurazione dell'account di archiviazione gestita e può invalidare i token di firma di accesso condiviso in uso e causare un'interruzione.

ID applicazione dell'entità servizio

Un tenant di Microsoft Entra fornisce a ogni applicazione registrata un'entità servizio. L'entità servizio funge da ID applicazione, che viene usato durante la configurazione dell'autorizzazione per l'accesso ad altre risorse di Azure tramite il controllo degli accessi in base al ruolo di Azure.

Key Vault è un'applicazione Microsoft preregistrato in tutti i tenant di Microsoft Entra. Key Vault è registrato con lo stesso ID applicazione in ogni cloud di Azure.

Tenant Cloud ID applicazione
Microsoft Entra ID Azure Government 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Microsoft Entra ID Pubblico di Azure cfa8b339-82a2-471a-a3c9-0fc0be7a4093
Altro Any cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Prerequisiti

Per completare questa guida, è necessario eseguire prima di tutto la procedura seguente:

Gestire le chiavi dell'account di archiviazione

Connettersi all'account di Azure

Autenticare la sessione dell'interfaccia della riga di comando di Azure usando i comandi az login.

az login

Concedere a Key Vault l'accesso all'account di archiviazione

Usare il comando az role assignment create dell'interfaccia della riga di comando di Azure per concedere a Key Vault l'accesso all'account di archiviazione. Fornire al comando i valori dei parametri seguenti:

  • --role: passare il ruolo di Azure "ruolo del servizio dell'operatore chiave dell'account Archiviazione". Questo ruolo limita l'ambito dell'accesso all'account di archiviazione. Per un account di archiviazione classico passare invece il "Ruolo del servizio dell'operatore della chiave dell'account di archiviazione classico".
  • --assignee: passare il valore "https://vault.azure.net", ovvero l'URL per Key Vault nel cloud pubblico di Azure. Per Azure per enti pubblici cloud usare invece '--assignee-object-id', vedere ID applicazione dell'entità servizio.
  • --scope: passare l'ID risorsa dell'account di archiviazione, che è nel formato /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Trovare l'ID sottoscrizione usando il comando az account list dell'interfaccia della riga di comando di Azure. Trovare il nome dell'account di archiviazione e il gruppo di risorse dell'account di archiviazione usando il comando az storage account list dell'interfaccia della riga di comando di Azure.
az role assignment create --role "Storage Account Key Operator Service Role" --assignee "https://vault.azure.net" --scope "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Concedere all'account utente l'autorizzazione per gli account di archiviazione gestiti

Usare il cmdlet az keyvault-set-policy dell'interfaccia della riga di comando di Azure per aggiornare i criteri di accesso di Key Vault e concedere le autorizzazioni dell'account di archiviazione all'account utente.

# Give your user principal access to all storage account permissions, on your Key Vault instance

az keyvault set-policy --name <YourKeyVaultName> --upn user@domain.com --storage-permissions get list delete set update regeneratekey getsas listsas deletesas setsas recover backup restore purge

Le autorizzazioni per gli account di archiviazione non sono disponibili nella pagina "Criteri di accesso" dell'account di archiviazione nella portale di Azure.

Creare un account di archiviazione gestito da Key Vault

Creare un account di archiviazione gestito da Key Vault usando il comando az keyvault storage dell'interfaccia della riga di comando di Azure. Impostare un periodo di rigenerazione di 30 giorni. Quando è possibile ruotare, KeyVault rigenera la chiave che non è attiva e quindi imposta la chiave appena creata come attiva. Solo una delle chiavi viene usata per emettere token di firma di accesso condiviso in qualsiasi momento, ovvero la chiave attiva. Fornire al comando i valori dei parametri seguenti:

  • --vault-name: passare il nome dell'insieme di credenziali delle chiavi. Per trovare il nome dell'insieme di credenziali delle chiavi, usare il comando az keyvault list dell'interfaccia della riga di comando di Azure.
  • -n: passare il nome dell'account di archiviazione. Per trovare il nome dell'account di archiviazione, usare il comando az storage account list dell'interfaccia della riga di comando di Azure.
  • --resource-id: passare l'ID risorsa dell'account di archiviazione, che è nel formato /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Trovare l'ID sottoscrizione usando il comando az account list dell'interfaccia della riga di comando di Azure. Trovare il nome dell'account di archiviazione e il gruppo di risorse dell'account di archiviazione usando il comando az storage account list dell'interfaccia della riga di comando di Azure.
az keyvault storage add --vault-name <YourKeyVaultName> -n <YourStorageAccountName> --active-key-name key1 --auto-regenerate-key --regeneration-period P30D --resource-id "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Token di firma di accesso condiviso

È anche possibile chiedere a Key Vault di generare i token di firma di accesso condiviso. Una firma di accesso condiviso fornisce accesso delegato controllato alle risorse dell'account di archiviazione. È possibile concedere ai client l'accesso alle risorse nell'account di archiviazione, senza condividere le chiavi dell'account. Una firma di accesso condiviso offre una modalità sicura per condividere le risorse di archiviazione senza compromettere le chiavi dell'account.

I comandi in questa sezione consentono di completare le azioni seguenti:

  • Configurare una definizione di firma di accesso condiviso dell'account.<YourSASDefinitionName> La definizione viene configurata nell'account di archiviazione gestito da Key Vault <YourStorageAccountName> nell'insieme di credenziali delle chiavi <YourKeyVaultName>.
  • Configurare una definizione di firma di accesso condiviso della risorsa di archiviazione gestita di Key Vault nell'insieme di credenziali. La definizione include l'URI del modello del token di firma di accesso condiviso creato. La definizione ha una firma di accesso condiviso di tipo account ed è valida per N giorni.
  • Verificare che la firma di accesso condiviso sia stata salvata nell'insieme di credenziali delle chiavi come segreto.

Definire un modello di definizione della firma di accesso condiviso

Key Vault usa il modello di definizione della firma di accesso condiviso per generare token per le applicazioni client.

Esempio di modello di definizione della firma di accesso condiviso:

"sv=2018-03-28&ss=bfqt&srt=sco&sp=rw&spr=https"

Il modello di definizione della firma di accesso condiviso verrà passato al --template-uri parametro nel passaggio successivo.

Parametri della firma di accesso condiviso dell'account necessari nel modello di definizione della firma di accesso condiviso per Key Vault

Parametro di query SAS Descrizione
SignedVersion (sv) Obbligatorio. Specifica la versione del servizio di archiviazione firmata da usare per autorizzare le richieste effettuate con la firma di accesso condiviso dell'account. Deve essere impostato sulla versione 2015-04-05 o successiva. Key Vault supporta versioni successive alla versione 2018-03-28
SignedServices (ss) Obbligatorio. Specifica i servizi firmati accessibili con la firma di accesso condiviso dell'account. I valori possibili includono:

- BLOB (b)
- Coda (q)
- Tabella (t)
- File (f)

È possibile combinare i valori per fornire l'accesso a più servizi. Ad esempio, ss=bf specifica l'accesso agli endpoint BLOB e file.
SignedResourceTypes (srt) Obbligatorio. Specifica i tipi di risorse firmati accessibili con la firma di accesso condiviso dell'account.

- Servizio (s): accesso alle API a livello di servizio (ad esempio, Get/Set Service Properties, Get Service Stats, List Containers/Queues/Tables/Shares)
- Contenitore (c): accesso alle API a livello di contenitore (ad esempio, Crea/Elimina contenitore, Crea/Elimina coda, Crea/Elimina tabella, Crea/Elimina tabella, Crea/Elimina condivisione, Elenca BLOB/File e directory)
- Oggetto (o): accesso alle API a livello di oggetto per BLOB, messaggi in coda, entità di tabella e file(ad esempio, Put BLOB, entità query, get messages, create file e così via)

È possibile combinare i valori per fornire l'accesso a più tipi di risorsa. Ad esempio, srt=sc specifica l'accesso alle risorse del servizio e del contenitore.
SignedPermission (sp) Obbligatorio. Specifica le autorizzazioni firmate per la firma di accesso condiviso dell'account. Le autorizzazioni sono valide solo se corrispondono al tipo di risorsa firmato specificato; altrimenti vengono ignorati.

- Lettura (r): valida per tutti i tipi di risorse firmati (Servizio, Contenitore e Oggetto). Consente le autorizzazioni di lettura per il tipo di risorsa specificato.
- Scrittura (w): valida per tutti i tipi di risorse firmati (Servizio, Contenitore e Oggetto). Consente le autorizzazioni di scrittura per il tipo di risorsa specificato.
- Elimina (d): valido per i tipi di risorse Contenitore e Oggetto, ad eccezione dei messaggi della coda.
- Eliminazione permanente (y): valida solo per il tipo di risorsa Oggetto del BLOB.
- Elenco (l): valido solo per i tipi di risorse del servizio e del contenitore.
- Aggiungi (a): valido solo per i tipi di risorse Object seguenti: messaggi di coda, entità di tabella e BLOB di accodamento.
- Crea (c): valido solo per i tipi di risorse Object seguenti: BLOB e file. Gli utenti possono creare nuovi BLOB o file, ma potrebbero non sovrascrivere BLOB o file esistenti.
- Aggiornamento (u): valido solo per i tipi di risorse Object seguenti: messaggi della coda ed entità di tabella.
- Processo (p): valido solo per il tipo di risorsa Oggetto seguente: messaggi della coda.
- Tag (t): valido solo per il tipo di risorsa Object seguente: BLOB. Consente operazioni di tag BLOB.
- Filtro (f): valido solo per il tipo di risorsa Oggetto seguente: BLOB. Consente di filtrare in base al tag BLOB.
- Impostare i criteri di immutabilità (i): valido solo per il tipo di risorsa oggetto seguente: BLOB. Consente di impostare/eliminare criteri di immutabilità e blocco legale in un BLOB.
SignedProtocol (spr) Facoltativo. Specifica il protocollo consentito per una richiesta effettuata con la firma di accesso condiviso dell'account. I valori possibili sono solo HTTPS e HTTP (https,http) o HTTPS (https). Il valore predefinito è https,http.

SOLO HTTP non è un valore consentito.

Per altre informazioni sulla firma di accesso condiviso dell'account, vedere Creare una firma di accesso condiviso dell'account

Nota

Key Vault ignora i parametri di durata, ad esempio 'Signed Expiry', 'Signed Start' e parametri introdotti dopo la versione 2018-03-28

Impostare la definizione della firma di accesso condiviso in Key Vault

Usare il comando az keyvault storage sas-definition create dell'interfaccia della riga di comando di Azure, passando il modello di definizione della firma di accesso condiviso dal passaggio precedente al --template-uri parametro , per creare una definizione di firma di accesso condiviso. È possibile specificare il nome che si preferisce per il parametro -n.

az keyvault storage sas-definition create --vault-name <YourKeyVaultName> --account-name <YourStorageAccountName> -n <YourSASDefinitionName> --validity-period P2D --sas-type account --template-uri <sasDefinitionTemplate>

Verificare la definizione di firma di accesso condiviso

È possibile verificare che la definizione di firma di accesso condiviso sia stata archiviata nell'insieme di credenziali delle chiavi usando il comando az keyvault storage sas-definition show dell'interfaccia della riga di comando di Azure.

È ora possibile usare il comando az keyvault storage sas-definition show e la proprietà id per visualizzare il contenuto di tale segreto.

az keyvault storage sas-definition show --id https://<YourKeyVaultName>.vault.azure.net/storage/<YourStorageAccountName>/sas/<YourSASDefinitionName>

Passaggi successivi