Compartir vía


Generación de un URI de SAS para una imagen de VM

Nota:

Se puede usar un URI de Firma de acceso compartido (SAS) para publicar la máquina virtual (VM). Como alternativa, puede compartir una imagen en el Centro de partners a través de Azure Compute Gallery. Consulte Creación de una máquina virtual mediante una base aprobada o Creación de una máquina virtual mediante su propia imagen para obtener más instrucciones.

Antes de comenzar, necesitará lo siguiente:

Extracción de un disco duro virtual de una máquina virtual

Nota:

Este paso se puede omitir si ya tiene un disco duro virtual cargado en una cuenta de almacenamiento.

Para extraer el disco duro virtual de la máquina virtual, primero debe tomar una instantánea del disco de la máquina virtual y, a continuación, extraer el disco duro virtual de la instantánea en la cuenta de almacenamiento.

Realización de una instantánea del disco de la máquina virtual

  1. Inicie sesión en el Portal de Azure.
  2. Seleccione Crear un recurso y, a continuación, busque y seleccione Instantánea.
  3. En la hoja Instantánea, seleccione Crear.
  4. Seleccione la Suscripción. Seleccione un grupo de recursos existente dentro de la suscripción seleccionada o Crear nuevo y escriba el nombre de un nuevo grupo de recursos para crearlo. Este es el grupo de recursos al que se asociará la instantánea.
  5. Escriba un nombre para la instantánea.
  6. En Tipo de origen, seleccione Disco.
    1. Seleccione la suscripción de origen, que es la suscripción que contiene el disco de la máquina virtual. Esto puede ser diferente de la suscripción de destino de la nueva instantánea.
  7. Como disco de origen, seleccione el disco administrado para la instantánea.
  8. En Tipo de almacenamiento, seleccione HDD estándar, a menos que necesite almacenarla en un disco SSD de alto rendimiento.
  9. Seleccione Revisar + crear. Tras una validación correcta, seleccione Crear.

Extracción del disco duro virtual en la cuenta de almacenamiento

Use el siguiente script para exportar la instantánea a un disco duro virtual de la cuenta de almacenamiento. Para cada uno de los parámetros, inserte la información como corresponda.

#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

En este script que se acaba de incluir se usan los siguientes comandos para generar el URI de SAS de una instantánea y se copia el disco duro virtual subyacente en una cuenta de almacenamiento mediante dicho URI.

Get-Help Notas
az disk grant-access Genera la SAS de solo lectura que se usa para copiar el archivo de disco duro virtual subyacente en una cuenta de almacenamiento o descargarlo localmente.
az storage blob copy start Copia un blob de forma asincrónica desde una cuenta de almacenamiento a otra. Use az storage blob show para comprobar el estado del nuevo blob.

Generación del URI de SAS

Hay dos herramientas comunes que se usan para crear una dirección de SAS (URI):

  • Explorador de Azure Storage: disponible en Azure Portal.
  • CLI de Azure: recomendada para los sistemas operativos que no sean Windows y los entornos automatizados o de integración continua.

Uso de la herramienta 1: Explorador de Azure Storage

  1. Vaya a la cuenta de almacenamiento.
  2. Abra el explorador de almacenamiento y seleccione Contenedores de blobs.
  3. En el contenedor, haga clic con el botón derecho en el archivo de disco duro virtual y seleccione Generar SAS.
  4. En el menú Firma de acceso compartido que aparece, complete los campos siguientes:
    • Permisos: seleccione permisos de lectura. No proporcione permisos de escritura o eliminación.
    • Fecha y hora de inicio: es la fecha de inicio del permiso para el acceso al disco duro virtual. Como protección frente a los cambios de hora UTC, proporcione una fecha que sea un día anterior a la fecha actual. Por ejemplo, si la fecha actual es el 15 de julio de 2022, establezca la fecha como 14/07/2022.
    • Fecha y hora de expiración: es la fecha de expiración del permiso para el acceso al disco duro virtual. Proporcione una fecha al menos tres semanas después de la fecha actual.
  5. Para crear el URI de SAS asociado para este disco duro virtual, seleccione Generar URL y token de SAS.
  6. Copie el URL de SAS del blob y guárdelo en un archivo de texto en una ubicación segura.
  7. Repita estos pasos para cada disco duro virtual que quiera publicar.

Nota:

Si necesita generar un URI de SAS con permisos de lectura y lista, puede hacerlo generandolo en el nivel de contenedor. Siga los mismos pasos anteriores, pero asegúrese de seleccionar los permisos de lectura y lista. Una vez completado el paso 6, deberá agregar el nombre del archivo de blob antes de "?sp=rl" para hacer referencia al archivo VHD dentro del contenedor. Por ejemplo, si el archivo VHD era "mytestvhd.vhd", el URI de SAS tendría el siguiente aspecto:

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

Uso de la herramienta 2: CLI de Azure

  1. En la CLI de Azure, ejecute el siguiente comando: Azure CLICopy

  2. Abra Cloud Shell y ejecute el siguiente 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 ejecutar el comando anterior, recuerde insertar los siguientes valores de parámetro.

    Valor del parámetro Descripción
    account-name Nombre de la cuenta de Azure Storage.
    account-key Clave de la cuenta de Azure Storage.
    container-name Contenedor de blobs que hospeda el archivo de disco duro virtual.
    start-date Fecha de inicio del permiso para acceder al disco duro virtual. Proporcione una fecha un día antes de la fecha actual. Por ejemplo, si la fecha actual es el 15 de julio de 2022, establezca la fecha como 14/07/2022. Proporcione fechas en formato de fecha y hora UTC (AAAA-MM-DDT00:00:00Z), como 2022-04-01T00:00:00Z.
    expiry-date Fecha de expiración del permiso para acceder al disco duro virtual. Proporcione una fecha al menos tres semanas después de la fecha actual. Proporcione fechas en formato de fecha y hora UTC (AAAA-MM-DDT00:00:00Z), como 2022-04-01T00:00:00Z.
  4. Copie la cadena de conexión de SAS y guárdela en un archivo de texto en una ubicación segura. Edite esta cadena para agregar la información de ubicación del disco duro virtual para crear el identificador URI de SAS final.

  5. En Azure Portal, vaya al contenedor de blobs que incluya el disco duro virtual asociado con el nuevo URI.

  6. Copie la dirección URL del punto de conexión de Blob service.

  7. Edite el archivo de texto con la cadena de conexión de SAS del paso 2. Cree el URI de SAS completo con este formato. Asegúrese de insertar "?" entre la dirección URL del punto de conexión y el cadena de conexión.

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

Mensajes de error de SAS de máquina virtual

En esta tabla se muestran los errores comunes que se producen al proporcionar un URI de firmas de acceso compartido (SAS) en el Centro de partners, junto con resoluciones sugeridas.

Problema Mensaje de error Fix
"?" no se encuentra en el identificador URI de SAS Must be a valid Azure shared access signature URI. Asegúrese de que el URI de SAS proporcionado usa la sintaxis adecuada e incluye "?" carácter.
Sintaxis: <blob-service-endpoint-url>?<sas-connection-string>
El parámetro "st" no aparece en el identificador URI de SAS Specified SAS URL cannot be reached. Actualice el URI de SAS con el valor de fecha de inicio ("st") adecuado.
El parámetro "se" no aparece en el identificador URI de SAS The end date parameter (se) is required. Actualice el URI de SAS con el valor de fecha de finalización ("se") adecuado.
"sp=r" no aparece en el identificador URI de SAS Missing Permissions (sp) must include 'read' (r). Actualice el URI de SAS con permisos establecidos como Read ("sp=r").
Error de autorización del identificador URI de SAS Failure: Copying Images. Not able to download blob due to authorization error. Revise y corrija el formato del URI de SAS. Vuelva a generarlo si es necesario.
Los parámetros "st" y "se" del identificador URI de SAS no tienen una especificación de fecha y hora completa The start time parameter (st) is not a valid date string.
O BIEN
The end date parameter (se) is not a valid date string.
Los parámetros de fecha de inicio y fecha de finalización de SAS (subcadenas "st" y "se") deben tener el formato de fecha y hora completa (AAAA-MM-DDT00:00:00Z), como 11-02-2017T00:00:00Z. Las versiones abreviadas no son válidas (algunos comandos de la CLI de Azure pueden generar valores abreviados de forma predeterminada).

Para más información, consulte Concesión de acceso limitado a Azure Storage mediante firmas de acceso compartido (SAS).

Comprobación del URI de SAS

Compruebe el URI de SAS antes de publicarlo en el Centro de partners para evitar problemas relacionados con el URI de SAS después de enviar la solicitud. Este proceso es opcional, pero se recomienda.

  • El identificador URI incluye el nombre de archivo de la imagen de disco duro virtual, incluida la extensión .vhd.
  • Aparece Sp=r en la parte central del identificador URI. Esta cadena muestra que el permiso de lectura está concedido.
  • Cuando aparece sr=c, significa que se especifica el acceso de nivel de contenedor.
  • Copie y pegue el identificador URI en un explorador para probar y descargar el blob (puede cancelar la operación antes de que se complete la descarga).