Generare un URI di firma di accesso condiviso per un'immagine di macchina virtuale

Nota

È possibile usare un URI di firma di accesso condiviso (SAS) per pubblicare la macchina virtuale. In alternativa, è possibile condividere un'immagine nel Centro per i partner tramite la raccolta di calcolo di Azure. Per altre istruzioni, vedere Creare una macchina virtuale usando una base approvata o Creare una macchina virtuale usando la propria immagine.

Prima di iniziare, è necessario quanto segue:

Estrarre il disco rigido virtuale da una macchina virtuale

Nota

È possibile ignorare questo passaggio se è già stato caricato un disco rigido virtuale in un account di archiviazione.

Per estrarre il disco rigido virtuale dalla macchina virtuale, è prima necessario creare uno snapshot del disco della macchina virtuale e quindi estrarre il disco rigido virtuale dallo snapshot nell'account di archiviazione.

Creare uno snapshot del disco della macchina virtuale

  1. Accedere al portale di Azure.
  2. Selezionare Crea una risorsa, quindi cercare e selezionare Snapshot.
  3. Nel pannello Snapshot selezionare Crea.
  4. Selezionare la Sottoscrizione. Selezionare un gruppo di risorse esistente all'interno della sottoscrizione selezionata o Crea nuovo e immettere il nome di un nuovo gruppo di risorse da creare. Si tratta del gruppo di risorse a cui verrà associato lo snapshot.
  5. Immettere un Nome per lo snapshot.
  6. In Tipo di origine selezionare Disco.
    1. Selezionare la sottoscrizione di origine, ovvero la sottoscrizione che contiene il disco della macchina virtuale. Questo potrebbe essere diverso dalla sottoscrizione di destinazione del nuovo snapshot.
  7. Per Disco di origine, selezionare il disco gestito di cui creare lo snapshot.
  8. Per Tipo di archiviazione selezionare HDD Standard a meno che non sia necessario archiviarlo in un'unità SSD con prestazioni elevate.
  9. Selezionare Rivedi e crea. Al termine della convalida, selezionare Crea.

Estrarre il disco rigido virtuale nell'account di archiviazione

Usare lo script seguente per esportare lo snapshot in un disco rigido virtuale nell'account di archiviazione. Per ogni parametro, inserire le informazioni di conseguenza.

#Provide the subscription Id where the snapshot is created
subscriptionId=yourSubscriptionId

#Provide the name of your resource group where the snapshot is created
resourceGroupName=myResourceGroupName

#Provide the snapshot name
snapshotName=mySnapshot

#Provide Shared Access Signature (SAS) expiry duration in seconds (such as 3600)
#Know more about SAS here: https://video2.skills-academy.com/azure/storage/storage-dotnet-shared-access-signature-part-1
sasExpiryDuration=3600

#Provide storage account name where you want to copy the underlying VHD file.
storageAccountName=mystorageaccountname

#Name of the storage container where the downloaded VHD will be stored.
storageContainerName=mystoragecontainername

#Provide the access key for the storage account that you want to copy the VHD to.
storageAccountKey=mystorageaccountkey

#Give a name to the destination VHD file to which the VHD will be copied.
destinationVHDFileName=myvhdfilename.vhd

az account set --subscription $subscriptionId

sas=$(az snapshot grant-access --resource-group $resourceGroupName --name $snapshotName --duration-in-seconds $sasExpiryDuration --query [accessSas] -o tsv)

az storage blob copy start --destination-blob $destinationVHDFileName --destination-container $storageContainerName --account-name $storageAccountName --account-key $storageAccountKey --source-uri $sas

Questo script precedente usa i comandi seguenti per generare l'URI di firma di accesso condiviso per uno snapshot e copia il disco rigido virtuale sottostante in un account di archiviazione usando l'URI di firma di accesso condiviso.

Comando Note
az disk grant-access Genera una firma di accesso condiviso di sola lettura usata per copiare il file VHD sottostante in un account di archiviazione o scaricarlo in locale.
az storage blob copy start Copia un BLOB in modo asincrono da un account di archiviazione a un altro. Usare az storage blob show per controllare lo stato del nuovo BLOB.

Generare l'URI di firma di accesso condiviso

Esistono due strumenti comuni usati per creare un indirizzo di firma di accesso condiviso (URI):

  • Archiviazione di Azure browser: disponibile nel portale di Azure.
  • Interfaccia della riga di comando di Azure: consigliata per sistemi operativi non Windows e ambienti di integrazione automatica o continua.

Uso dello strumento 1: browser Archiviazione di Azure

  1. Passare all'account di archiviazione.
  2. Aprire il browser di archiviazione e selezionare contenitori BLOB.
  3. Nel contenitore fare clic con il pulsante destro del mouse sul file VHD e scegliere Genera firma di accesso condiviso.
  4. Nel menu Firma di accesso condiviso visualizzato completare i campi seguenti:
    • Autorizzazioni: selezionare autorizzazioni di lettura. Non fornire autorizzazioni di scrittura o eliminazione.
    • Data/ora di inizio: data di inizio dell'autorizzazione per l'accesso al disco rigido virtuale. Per proteggersi dalle modifiche all'ora UTC, specificare una data di un giorno prima della data corrente. Ad esempio, se la data corrente è il 15 luglio 2022, impostare la data su 07/14/2022.
    • Data/ora di scadenza: data di scadenza dell'autorizzazione per l'accesso al disco rigido virtuale. Specificare una data successiva di almeno tre settimane alla data corrente.
  5. Per creare l'URI di firma di accesso condiviso associato per questo disco rigido virtuale, selezionare Genera token di firma di accesso condiviso e URL.
  6. Copiare l'URL della firma di accesso condiviso BLOB e salvarlo in un file di testo in un percorso sicuro.
  7. Ripetere questi passaggi per ogni disco rigido virtuale da pubblicare.

Nota

Se è necessario generare un URI di firma di accesso condiviso con autorizzazioni di lettura ed elenco, è possibile farlo generandolo a livello di contenitore. Seguire gli stessi passaggi precedenti, ma assicurarsi di selezionare sia le autorizzazioni di lettura che di elenco. Al termine del passaggio 6, sarà quindi necessario aggiungere il nome del file BLOB prima di "?sp=rl" per fare riferimento al file VHD all'interno del contenitore. Ad esempio, se il file VHD è "mytestvhd.vhd", l'URI di firma di accesso condiviso sarà simile al seguente:

<container-service-endpoint>/mytestvhd.vhd?<sas-connection-string>

Uso dello strumento 2: Interfaccia della riga di comando di Azure

  1. Nell'interfaccia della riga di comando di Azure eseguire il comando seguente: Azure CLICopy

  2. Aprire Cloud Shell, eseguire il comando seguente:

    az storage container generate-sas --connection-string 'DefaultEndpointsProtocol=https;AccountName=\<account-name\>;AccountKey=\<account-key\>;EndpointSuffix=core.windows.net' --name \<container-name\> --permissions r --start '\<start-date\>' --expiry '\<expiry-date\>'

  3. Prima di eseguire il comando precedente, ricordarsi di inserire i valori dei parametri seguenti.

    Valore parametro Descrizione
    account-name Nome dell'account di archiviazione di Azure.
    account-key La chiave dell'account di archiviazione di Azure.
    container-name Contenitore BLOB che ospita il file VHD.
    data di inizio Questa è la data di inizio dell'autorizzazione per l'accesso al disco rigido virtuale. Specificare la data del giorno precedente rispetto alla data corrente. Ad esempio, se la data corrente è il 15 luglio 2022, impostare la data su 07/14/2022. Specificare le date nel formato di data/ora UTC (AAAA-MM-DDT00:00:00Z), ad esempio 2022-04-01T00:00:00Z.
    data di scadenza Questa è la data di scadenza dell'autorizzazione per l'accesso al disco rigido virtuale. Specificare una data successiva di almeno tre settimane alla data corrente. Specificare le date nel formato di data/ora UTC (AAAA-MM-DDT00:00:00Z), ad esempio 2022-04-01T00:00:00Z.
  4. Copiare la stringa di connessione della firma di accesso condiviso e salvarla in un file di testo in un percorso sicuro. Modificare la stringa per aggiungere le informazioni sul percorso del disco rigido virtuale per creare l'URI di firma di accesso condiviso finale.

  5. Nella portale di Azure passare al contenitore BLOB che include il disco rigido virtuale associato al nuovo URI.

  6. Copiare l'URL dell'endpoint del servizio BLOB.

  7. Modificare il file di testo con la firma di accesso condiviso stringa di connessione dal passaggio 2. Creare l'URI di firma di accesso condiviso completo usando questo formato. Assicurarsi di inserire "?" tra l'URL dell'endpoint e il stringa di connessione.

    <blob-service-endpoint-url>?<sas-connection-string>

Messaggi di errore della firma di accesso condiviso della macchina virtuale

Questa tabella mostra gli errori comuni riscontrati quando si fornisce un URI di firma di accesso condiviso nel Centro per i partner, insieme alle risoluzioni suggerite.

Problema Messaggio di errore Fix
"?" non trovato nell'URI di firma di accesso condiviso Must be a valid Azure shared access signature URI. Assicurarsi che l'URI di firma di accesso condiviso fornito usi la sintassi corretta e includa "?" carattere.
Sintassi: <blob-service-endpoint-url>?<sas-connection-string>
Parametro "st" non nell'URI di firma di accesso condiviso Specified SAS URL cannot be reached. Aggiornare l'URI di firma di accesso condiviso con il valore corretto data di inizio ("st").
Parametro "se" non nell'URI di firma di accesso condiviso The end date parameter (se) is required. Aggiornare l'URI di firma di accesso condiviso con il valore di data di fine ("se") appropriato.
"sp=r" non nell'URI di firma di accesso condiviso Missing Permissions (sp) must include 'read' (r). Aggiornare l'URI di firma di accesso condiviso con le autorizzazioni impostate come Read ("sp=r").
Errore di autorizzazione dell'URI di firma di accesso condiviso Failure: Copying Images. Not able to download blob due to authorization error. Rivedere e correggere il formato dell'URI di firma di accesso condiviso. Se necessario, rigenerarlo.
L'indicazione di data e ora dei parametri "st" e "se" dell'URI di firma di accesso condiviso non è completa The start time parameter (st) is not a valid date string.
OPPURE
The end date parameter (se) is not a valid date string.
I parametri data e data di fine dell'URI SAS ("st" e "se" sottostringhe) devono avere un formato di data e ora completa (AAAA-MM-DDT00:00:00Z), ad esempio 11-02-2017T00:00:00Z. Le versioni abbreviate non sono valide (alcuni comandi nell'interfaccia della riga di comando di Azure potrebbero generare valori abbreviati per impostazione predefinita).

Per informazioni dettagliate, vedere Concedere l'accesso limitato alle risorse Archiviazione di Azure usando firme di accesso condiviso.For details, see Grant limited access to Archiviazione di Azure resources using shared access signatures (SAS).

Verificare l'URI di firma di accesso condiviso

Controllare l'URI di firma di accesso condiviso prima di pubblicarlo nel Centro per i partner per evitare problemi relativi all'URI di firma di accesso condiviso dopo l'invio della richiesta. Questo processo è facoltativo ma consigliato.

  • L'URI include il nome file dell'immagine del disco rigido virtuale, inclusa l'estensione .vhddel nome file .
  • Sp=r viene visualizzato in prossimità del centro dell'URI. Questa stringa mostra che viene concessa l'autorizzazione Lettura.
  • Quando viene visualizzato sr=c, significa che l'accesso è specificato a livello di contenitore.
  • Copiare e incollare l'URI in un browser per eseguire il test e scaricare il BLOB (è possibile annullare l'operazione prima del completamento del download).