Compartilhar via


Gerar um URI de SAS para uma imagem de VM

Observação

Um URI de SAS (Assinatura de Acesso Compartilhado) pode ser usado para publicar sua VM (máquina virtual). Como alternativa, você pode compartilhar uma imagem no Partner Center por meio da galeria de computação do Azure. Veja Criar uma máquina virtual usando uma base aprovada ou Criar uma máquina virtual usando sua própria imagem para obter mais instruções.

Antes de começar, você precisará do seguinte:

Extrair o VHD de uma VM

Observação

Será possível ignorar esta etapa se já tiver um VHD carregado em uma conta de armazenamento.

Para extrair o VHD da VM, primeiro você precisa tirar um instantâneo do disco da VM e, em seguida, extrair o VHD do instantâneo para sua conta de armazenamento.

Tire um instantâneo do disco da VM

  1. Faça logon no Portal do Azure.
  2. Selecione Criar um recurso e, em seguida, pesquise e selecione Instantâneo
  3. Na folha Instantâneo, selecione Criar.
  4. Selecione a Assinatura. Selecione um grupo de recursos existente na assinatura selecionada ou Crie um novo e insira o nome de um novo grupo de recursos a ser criado. Esse é o grupo de recursos ao qual o instantâneo será associado.
  5. Insira um Nome para o instantâneo.
  6. Para o Tipo de origem, selecione Disk.
    1. Selecione a Assinatura de origem, que é a assinatura que contém o disco da VM. Isso pode ser diferente da assinatura de destino do novo instantâneo.
  7. Para Disco de origem, selecione o disco gerenciado para instantâneo.
  8. Para o Tipo de armazenamento, selecione HDD Standard, a menos que você precise dele armazenado em um SSD de alto desempenho.
  9. Selecione Examinar + criar. Após a validação bem-sucedida, selecione Criar.

Extrair o VHD em sua conta de armazenamento

Use o script a seguir para exportar o instantâneo para um VHD na conta de armazenamento. Para cada um dos parâmetros, insira suas informações adequadamente.

#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://learn.microsoft.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

Este script acima usa os comandos a seguir para gerar o URI de SAS para um instantâneo e copia o VHD subjacente para uma conta de armazenamento usando o URI de SAS.

Comando Observações
az disk grant-access Gera o SAS somente leitura usado para copiar o arquivo VHD subjacente para uma conta de armazenamento ou o baixá-lo localmente.
az storage blob copy start Copia um blob de forma assíncrona de uma conta de armazenamento para outra. Use az storage blob show para verificar o status do novo blob.

Gere novamente o URI de SAS

Há duas ferramentas comuns usadas para criar um endereço de SAS (URI):

  • Navegador de Armazenamento do Microsoft Azure – disponível no portal do Azure.
  • CLI do Azure – recomendada para sistemas operacionais não Windows e ambientes de integração contínua ou automatizada.

Usar a ferramenta 1: Navegador de Armazenamento do Microsoft Azure

  1. Acesse a Conta de armazenamento.
  2. Abra o Navegador de Armazenamento e selecione contêineres de blob.
  3. Em seu Contêiner, clique com o botão direito do mouse no arquivo VHD e selecione Gerar a SAS.
  4. No menu Assinatura de Acesso Compartilhado exibido, preencha os seguintes campos:
    • Permissões – selecione permissões de leitura. Não forneça permissões de gravação ou exclusão.
    • Data/hora de início – esta é a data de início da permissão para acesso ao VHD. Para se proteger contra alterações da hora de UTC, forneça uma data que seja um dia antes da data atual. Por exemplo, se a data atual for 15 de julho de 2022, defina a data como 14/07/2022.
    • Data/hora de expiração – esta é a data de expiração da permissão de acesso ao VHD. Forneça uma data de pelo menos três semanas após a data atual.
  5. Para criar o URI de SAS associado para esse VHD, selecione Gerar token SAS e URL.
  6. Copie o URL do Blob de SAS e salve-o em um arquivo de texto em um local seguro.
  7. Repita as etapas para cada VHD que você deseja publicar.

Observação

Se você precisar gerar um URI SAS com permissões de leitura e lista, poderá fazer isso gerando-o no nível do contêiner. Siga as mesmas etapas acima, mas certifique-se de selecionar as permissões de leitura e lista. Depois que a etapa 6 for concluída, você precisará adicionar o nome do arquivo blob antes de "?sp=rl" para fazer referência ao arquivo VHD no contêiner. Por exemplo, se o arquivo VHD fosse "mytestvhd.vhd", o URI SAS seria semelhante a:

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

Usar a ferramenta 2: CLI do Azure

  1. Na CLI do Azure, execute o seguinte comando: Azure CLICopy

  2. Abra o Cloud Shell, execute o seguinte comando:

    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. Antes de executar o comando acima, lembre-se de inserir os seguintes valores de parâmetro.

    Valor do parâmetro Descrição
    account-name O nome da conta de armazenamento do Azure.
    account-key A chave de conta de armazenamento do Azure.
    container-name O contêiner de blob que hospeda o arquivo VHD.
    start-date Esta é a data de início da permissão de acesso ao VHD. Forneça uma data um dia antes da data atual. Por exemplo, se a data atual for 15 de julho de 2022, defina a data como 14/07/2022. Forneça datas no formato de data/hora UTC (DD-MM-AAAAT00:00:00Z), como 01-04-2022T00:00:00Z.
    expiry-date Esta é a data de expiração da permissão de acesso ao VHD. Forneça uma data de pelo menos três semanas após a data atual. Forneça datas no formato de data/hora UTC (DD-MM-AAAAT00:00:00Z), como 01-04-2022T00:00:00Z.
  4. Copie a cadeia de caracteres de conexão de SAS e salve-o em um arquivo de texto em um local seguro. Edite essa cadeia de caracteres para adicionar as informações de localização do VHD para criar o URI de SAS final.

  5. No portal do Azure, navegue até o contêiner de Blobs que inclui o VHD associado ao novo URI.

  6. Copie o URL do ponto de extremidade do serviço blob.

  7. Edite o arquivo de texto com a cadeia de caracteres de conexão SAS da etapa 2. Crie o URI de SAS completo usando este formato. Certifique-se de inserir um "?" entre a URL do ponto de extremidade e a cadeia de conexão.

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

Mensagens de falha de SAS da máquina virtual

Esta tabela mostra os erros comuns encontrados ao fornecer um URI de SAS (Assinatura de Acesso Compartilhado) no Partner Center, juntamente com resoluções sugeridas.

Problema Mensagem de Falha Fix
"?" não é encontrado no URI do SAS Must be a valid Azure shared access signature URI. Certifique-se de que o URI SAS fornecido use a sintaxe adequada e inclua o "?" personagem.
Sintaxe: <blob-service-endpoint-url>?<sas-connection-string>
O parâmetro “st” não está no URI de SAS Specified SAS URL cannot be reached. Atualize o URI de SAS com o valor adequado de Data de Início (“st”).
O parâmetro “se” não está no URI de SAS The end date parameter (se) is required. Atualize o URI da SAS com o valor adequado da Data de Término ("se").
“sp=rl” não está no URI de SAS Missing Permissions (sp) must include 'read' (r). Atualize o URI da SAS com permissões definidas como Read ("sp=r").
Erro de autorização do URI do SAS Failure: Copying Images. Not able to download blob due to authorization error. Revise e corrija o formato URI do SAS. Regenere se necessário.
Os parâmetros "st" e "se" do URI do SAS não têm especificação completa de data e hora The start time parameter (st) is not a valid date string.
OR
The end date parameter (se) is not a valid date string.
Os parâmetros de Data de Início e Data de Término do URI SAS (subcadeias de caracteres "st" e "se") devem ter o formato de data e hora completo (AAAA-MM-DDT00:00:00Z), como 11-02-2017T00:00:00Z. Versões abreviadas são inválidas (alguns comandos na CLI do Azure podem gerar valores reduzidos por padrão).

Para obter detalhes, confira Conceder acesso limitado aos recursos do Armazenamento do Azure usando SAS (assinaturas de acesso compartilhado).

Verifique o URI SAS

Verifique o URI de SAS antes de publicá-lo no Partner Center para evitar problemas relacionados ao envio de postagem do URI de SAS da solicitação. Esse processo é opcional, mas recomendado.

  • O URI inclui o nome de arquivo da imagem do VHD, incluindo a extensão do nome de arquivo .vhd.
  • Sp=r aparece próximo ao meio do URI. Essa cadeia de caracteres mostra que a permissão de leitura é concedida.
  • Quando sr=c aparece, isso significa que o acesso de nível de contêiner é especificado.
  • Copie e cole o URI em um navegador para fazer um teste de download do blob (você pode cancelar a operação antes que o download seja concluído).