Chiavi dell'account di archiviazione Key VaultAzure Key Vault Storage Account Keys

Prima delle chiavi dell'account di archiviazione Key Vault gli sviluppatori dovevano gestire le proprie chiavi dell'account di archiviazione di Azure (ASA) e ruotarle manualmente o mediante automazione esterna.Before Azure Key Vault Storage Account Keys, developers had to manage their own Azure Storage Account (ASA) keys and rotate them manually or through an external automation. Al momento, le chiavi dell'account di archiviazione di Key Vault sono implementate come segreti di Key Vault per l'autenticazione con un account di archiviazione di Azure.Now, Key Vault Storage Account Keys are implemented as Key Vault secrets for authenticating with an Azure Storage Account.

La funzionalità chiave di Account di Archiviazione di Azure (ASA) consente di gestire la rotazione dei segreti al posto dell'utente.The Azure Storage Account (ASA) key feature manages secret rotation for you. Elimina anche la necessità di un contatto diretto con una chiave dell'account di archiviazione di Azure offrendo come metodo firme di accesso condiviso.It also removes the need for your direct contact with an ASA key by offering Shared Access Signatures (SAS) as a method.

Per informazioni più generali sugli account di archiviazione di Azure, vedere Informazioni sugli account di archiviazione di Azure.For more general information on Azure Storage Accounts, see About Azure storage accounts.

Interfacce di supportoSupporting interfaces

L'elenco completo delle interfacce di programmazione e di script Microsoft e i collegamenti a queste sono disponibili in Guida per gli sviluppatori di Key Vault.You'll find a complete listing and links to our programming and scripting interfaces in the Key Vault Developer's Guide.

Ciò che Key Vault gestisceWhat Key Vault manages

Key Vault esegue diverse funzioni di gestione interne per conto dell'utente quando si usano chiavi dell'account di archiviazione gestite.Key Vault performs several internal management functions on your behalf when you use Managed Storage Account Keys.

  • Azure Key Vault gestisce le chiavi di un account di archiviazione di Azure.Azure Key Vault manages keys of an Azure Storage Account (ASA).
    • Internamente Key Vault consente di elencare (sincronizzazione) le chiavi con un account di archiviazione di Azure.Internally, Azure Key Vault can list (sync) keys with an Azure Storage Account.
    • Key Vault rigenera (ruota) le chiavi periodicamente.Azure Key Vault regenerates (rotates) the keys periodically.
    • I valori di chiave non vengono mai restituiti in risposta al chiamante.Key values are never returned in response to caller.
    • Key Vault gestisce le chiavi sia degli account di archiviazione che degli account di archiviazione classici.Azure Key Vault manages keys of both Storage Accounts and Classic Storage Accounts.
  • Key Vault consente al proprietario dell'insieme di credenziali/oggetto di creare definizioni SAS (SAS di account o di servizio).Azure Key Vault allows you, the vault/object owner, to create SAS (account or service SAS) definitions.
    • Il valore SAS, creato utilizzando la definizione SAS, viene restituito come una chiave privata tramite il percorso dell'URI REST.The SAS value, created using SAS definition, is returned as a secret via the REST URI path. Per altre informazioni, vedere Azure Key Vault storage account operations (Operazioni dell'account di archiviazione di Azure Key Vault).For more information, see Azure Key Vault storage account operations.

Linee guida sulla denominazioneNaming guidance

  • I nomi degli account di archiviazione devono avere una lunghezza compresa tra 3 e 24 caratteri e possono contenere solo numeri e lettere minuscole.Storage account names must be between 3 and 24 characters in length and may contain numbers and lowercase letters only.
  • Un nome di una definizione SAS deve avere da 1 a 102 caratteri e contenere solo i caratteri da 0 a 9, da a a z e da A a Z.A SAS definition name must be 1-102 characters in length containing only 0-9, a-z, A-Z.

Esperienza per sviluppatoriDeveloper experience

Prima delle chiavi di archiviazione Key VaultBefore Azure Key Vault Storage Keys

Gli sviluppatori in precedenza dovevano eseguire le seguenti procedure con una chiave di account di archiviazione per ottenere l'accesso all'archiviazione di Azure.Developers used to need to do the following practices with a storage account key to get access to Azure storage.

//create an Azure Storage Account using a connection string containing an account name and a storage key 

var storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
var blobClient = storageAccount.CreateCloudBlobClient();

Dopo le chiavi di archiviazione Key VaultAfter Azure Key Vault Storage Keys

//Make sure to set storage permissions appropriately on your key vault
Set-AzureRmKeyVaultAccessPolicy -VaultName 'yourVault' -ObjectId yourObjectId -PermissionsToStorage all

//Get secret URI 

Set-AzureKeyVaultManagedStorageSasDefinition -Service Blob -ResourceType Container,Service -VaultName yourKV  

-AccountName msak01 -Name blobsas1 -Protocol HttpsOnly -ValidityPeriod ([System.Timespan]::FromDays(1)) -Permission Read,List

//Get a SAS token from Key Vault

var secret = await kv.GetSecretAsync("SecretUri");

// Create new storage credentials using the SAS token. 

var accountSasCredential = new StorageCredentials(secret.Value); 

// Use the storage credentials and the Blob storage endpoint to create a new Blob service client. 

var accountWithSas = new CloudStorageAccount(accountSasCredential, new Uri ("https://myaccount.blob.core.windows.net/"), null, null, null); 

var blobClientWithSas = accountWithSas.CreateCloudBlobClient(); 

// If your SAS token is about to expire, Get sasToken again from Key Vault and update it.

accountSasCredential.UpdateSASToken(sasToken);

Materiale sussidiario per sviluppatoriDeveloper guidance

  • Consentire solo a Key Vault di gestire le chiavi ASA.Only allow Key Vault to manage your ASA keys. Non tentare di gestirle manualmente onde evitare di interferire con i processi di Key Vault.Do not attempt to manage them yourself, you will interfere with Key Vault's processes.
  • Non consentire alle chiavi ASA di essere gestite da più di un oggetto di Key Vault.Do not allow ASA keys to be managed by more than one Key Vault object.
  • Se è necessario rigenerare manualmente le chiavi ASA, è consigliabile rigenerarle tramite Key Vault.If you need to manually regenerate your ASA keys, we recommend that you regenerate them via Key Vault.

IntroduzioneGetting started

Configurazione per le autorizzazioni di controllo degli accessi in base al ruolo (RBAC)Setup for role-based access control (RBAC) permissions

Per elencare e rigenerare le chiavi per un account di archiviazione, l'identità di applicazione di Azure Key Vault necessita di autorizzazioni.The Azure Key Vault application identity needs permissions to list and regenerate keys for a storage account. Impostare queste autorizzazioni usando la procedura seguente:Set up these permissions using the following steps:

  • Ottenere l'ObjectId dell'identità di Azure Key Vault:Get ObjectId of Azure Key Vault Identity:

    Get-AzureRmADServicePrincipal -ServicePrincipalName cfa8b339-82a2-471a-a3c9-0fc0be7a4093

  • Assegnare il ruolo "Operatore chiave di archiviazione" all'identità di Azure Key Vault:Assign Storage Key Operator role to Azure Key Vault Identity:

    New-AzureRmRoleAssignment -ObjectId <objectId of AzureKeyVault from previous command> -RoleDefinitionName 'Storage Account Key Operator Service Role' -Scope '<azure resource id of storage account>'

    Nota

    Per un tipo di account classico, impostare il parametro del ruolo su "Ruolo del servizio dell'operatore della chiave dell'account di archiviazione classico".For a classic account type, set the role parameter to "Classic Storage Account Key Operator Service Role."

Esempio di funzionamentoWorking example

L'esempio seguente illustra la creazione di un account di archiviazione di Azure gestito da Key Vault e le definizioni di firma di accesso condiviso (SAS) associate.The following example demonstrates creating a Key Vault managed Azure Storage Account and the associated Shared Access Signature (SAS) definitions.

PresuppostiAssumptions

Per questo esempio di funzionamento, vengono fornite le istruzioni seguenti.The following statements are givens for this working example.

  • La risorsa di archiviazione si trova in: /subscriptions/subscriptionId/resourceGroups/yourresgroup1/providers/Microsoft.Storage/storageAccounts/yourtest1Your storage resource is located at: /subscriptions/subscriptionId/resourceGroups/yourresgroup1/providers/Microsoft.Storage/storageAccounts/yourtest1

  • Il nome dell'insieme di credenziali delle chiavi è: yourtest1The name of your key vault is: yourtest1

Ottenere un'entità servizioGet a service principal

$yourKeyVaultServicePrincipalId = (Get-AzureRmADServicePrincipal -ServicePrincipalName cfa8b339-82a2-471a-a3c9-0fc0be7a4093).Id

L'output del comando precedente includerà l'entità servizio, denominata yourKeyVaultServicePrincipalId.The output of the preceding command will include your ServicePrincipal, which we'll call yourKeyVaultServicePrincipalId.

Impostare le autorizzazioniSet permissions

Verificare che le autorizzazioni di archiviazione siano impostate su tutte.Make sure you have your storage permissions set to all. È possibile ottenere yourUserPrincipalId e impostare le autorizzazioni nell'insieme di credenziali usando i comandi seguenti.You can get youruserPrincipalId and set permissions on the vault using the following commands.

$youruserPrincipalId = (Get-AzureRmADUser -SearchString "your user principal name").Id

Cercare ora il nome e ottenere il relativo ObjectId da usare per l'impostazione delle autorizzazioni nell'insieme di credenziali.Now search for your name and get the related ObjectId, which you will use in setting permissions on the vault.

Set-AzureRmKeyVaultAccessPolicy -VaultName 'yourtest1' -ObjectId $youruserPrincipalId -PermissionsToStorage all

Consentire l'accessoAllow access

Prima di poter creare un account di archiviazione gestito e le definizioni di firma di accesso condiviso, è necessario concedere al servizio Key Vault l'accesso agli account di archiviazione.You need to give the Key Vault service access to the storage accounts, before you can create a managed storage account and SAS definitions.

New-AzureRmRoleAssignment -ObjectId $yourKeyVaultServicePrincipalId -RoleDefinitionName 'Storage Account Key Operator Service Role' -Scope '/subscriptions/subscriptionId/resourceGroups/yourresgroup1/providers/Microsoft.Storage/storageAccounts/yourtest1'

Crea account di archiviazioneCreate storage account

Creare ora un account di archiviazione gestito e due definizioni di firma di accesso condiviso.Now create a Managed Storage Account and two SAS definitions. La firma di accesso condiviso dell'account consente di accedere al servizio BLOB con autorizzazioni diverse.The account SAS provides access to the blob service with different permissions.

Add-AzureKeyVaultManagedStorageAccount -VaultName yourtest1 -Name msak01 -AccountResourceId /subscriptions/subscriptionId/resourceGroups/yourresgroup1/providers/Microsoft.Storage/storageAccounts/yourtest1 -ActiveKeyName key2 -DisableAutoRegenerateKey

RigenerazioneRegeneration

Impostazione del periodo di rigenerazione tramite i comandi seguenti.Setting the regeneration period using the following commands.

$regenPeriod = [System.Timespan]::FromDays(3)
Add-AzureKeyVaultManagedStorageAccount -VaultName yourtest1 -Name msak01 -AccountResourceId /subscriptions/subscriptionId/resourceGroups/yourresgroup1/providers/Microsoft.Storage/storageAccounts/yourtest1 -ActiveKeyName key2 -RegenerationPeriod $regenPeriod

Impostare le definizioni di firma di accesso condivisoSet SAS definitions

Impostare le definizioni di firma di accesso condiviso in Key Vault per l'account di archiviazione gestito.Set the SAS definitions in Key Vault for your managed storage account.

Set-AzureKeyVaultManagedStorageSasDefinition -Service Blob -ResourceType Container,Service -VaultName yourtest1  -AccountName msak01 -Name blobsas1 -Protocol HttpsOnly -ValidityPeriod ([System.Timespan]::FromDays(1)) -Permission Read,List
Set-AzureKeyVaultManagedStorageSasDefinition -Service Blob -ResourceType Container,Service,Object -VaultName yourtest1  -AccountName msak01 -Name blobsas2 -Protocol HttpsOnly -ValidityPeriod ([System.Timespan]::FromDays(1)) -Permission Read,List,Write

Ottenere un tokenGet token

Ottenere i token SAS corrispondenti ed eseguire chiamate all'account di archiviazione.Get the corresponding SAS tokens and make calls to storage.

$sasToken1 = (Get-AzureKeyVaultSecret -VaultName yourtest1 -SecretName msak01-blobsas1).SecretValueText
$sasToken2 = (Get-AzureKeyVaultSecret -VaultName yourtest1 -SecretName msak01-blobsas2).SecretValueText

Creazione dell'account di archiviazioneCreate storage

Si noti che il tentativo di accesso con $sastoken1 ha esito negativo, è possibile accedere con $sastoken2.Notice that trying to access with $sastoken1 fails, but that we are able to access with $sastoken2.

$context1 = New-AzureStorageContext -SasToken $sasToken1 -StorageAccountName yourtest1
$context2 = New-AzureStorageContext -SasToken $sasToken2 -StorageAccountName yourtest1
Set-AzureStorageBlobContent -Container containertest1 -File "abc.txt"  -Context $context1
Set-AzureStorageBlobContent -Container cont1-file "file.txt"  -Context $context2

Riepilogo dell'esempioExample summary

È possibile accedere al contenuto del BLOB di archiviazione con un token SAS che abbia accesso in scrittura.You are able access the storage blob content with the SAS token that has write access.

Cmdlet PowerShell pertinentiRelevant Powershell cmdlets

Onboarding dell'account di archiviazioneStorage account onboarding

Esempio: il proprietario di un oggetto Key Vault aggiunge un oggetto account di archiviazione in Azure Key Vault per eseguire l'onboarding di un account di archiviazione.Example: As a Key Vault object owner you add a storage account object to your Azure Key Vault to onboard a storage account.

Durante il caricamento, Key Vault deve verificare che l'identità dell'account onboarding abbia le autorizzazioni per accedere agli elenchi e rigenerare le chiavi di archiviazione.During onboarding, Key Vault needs to verify that the identity of the onboarding account has permissions to list and to regenerate storage keys. Per verificare queste autorizzazioni, Key Vault ottiene un token OBO (per conto di) dal servizio di autenticazione, pubblico impostato su Gestione Risorse di Azure e crea una chiamata chiave dell'elenco al servizio di archiviazione di Azure.In order to verify these permissions, Key Vault gets an OBO (On Behalf Of) token from the authentication service, audience set to Azure Resource Manager, and makes a list key call to the Azure Storage service. Se la chiamata di elenco ha esito negativo, la creazione dell'oggetto Key Vault ha esito negativo con il codice di stato HTTP Forbidden.If the list call fails, the Key Vault object creation fails with an HTTP status code of Forbidden. Le chiavi elencate in questo modo vengono memorizzate nella cache con l'archiviazione di entità key vault.The keys listed in this fashion are cached with your key vault entity storage.

Key Vault deve verificare che l'identità disponga delle autorizzazioni rigenera prima di acquisire la proprietà della rigenerazione delle chiavi.Key Vault must verify that the identity has regenerate permissions before it can take ownership of regenerating your keys. Per verificare che l'identità, tramite il token OBO, nonché l'identità Key Vault propria possieda queste autorizzazioni:To verify that the identity, via OBO token, as well as the Key Vault first party identity has these permissions:

  • Key Vault elenca le autorizzazioni RBAC per la risorsa dell'account di archiviazione.Key Vault lists RBAC permissions on the storage account resource.
  • Key Vault convalida la risposta tramite la corrispondenza mediante espressioni regolari di azioni e non-azioni.Key Vault validates the response via regular expression matching of actions and non-actions.

Trovare alcuni esempi di supporto in Key Vault - Managed Storage Account Keys Samples (Key Vault - Esempi di chiavi dell'account di archiviazione gestito).Find some supporting examples at Key Vault - Managed Storage Account Keys Samples.

Se l'identità non dispone dell'autorizzazione rigenera o l'identità Key Vault propria non dispone dell'autorizzazione elenca o rigenera, la richiesta di onboarding ha esito negativo restituendo un messaggio e codice di errore appropriati.If the identity does not have regenerate permissions or if Key Vault's first party identity doesn’t have list or regenerate permission, then the onboarding request fails returning an appropriate error code and message.

Il token OBO funziona solo quando si usano applicazioni client native e proprie di PowerShell o dell'interfaccia della riga di comando.The OBO token will only work when you use first-party, native client applications of either PowerShell or CLI.

Altre applicazioniOther applications

  • I token SAS, costruiti usando le chiavi dell'account di archiviazione Key Vault, forniscono un accesso ancora più controllato a un account di archiviazione di Azure.SAS tokens, constructed using Key Vault storage account keys, provide even more controlled access to an Azure storage account. Per altre informazioni, vedere Uso delle firme di accesso condiviso.For more information, see Using shared access signatures.

Vedere ancheSee also