Поделиться через


Создание URI SAS для образа виртуальной машины

Заметка

Подписанный URL-адрес с общей подписью доступа (SAS) можно использовать для публикации виртуальной машины. Кроме того, вы можете поделиться изображением в Центре партнеров через коллекцию изображений Azure. Дополнительные инструкции вы можете найти в разделах: Создать виртуальную машину, используя утвержденную базу, или Создать виртуальную машину, используя собственный образ.

Перед началом работы вам потребуется следующее:

  • Виртуальная машина
  • Учетная запись хранения с контейнером для хранения виртуального жесткого диска (VHD)
  • Ключ вашей учетной записи хранения

Извлечь виртуальный жесткий диск из ВМ

Заметка

Этот шаг можно пропустить, если у вас уже есть виртуальный жесткий диск, загруженный в хранилище.

Чтобы извлечь виртуальный жесткий диск из виртуальной машины, необходимо сначала создать моментальный снимок диска виртуальной машины, а затем извлечь виртуальный жесткий диск из моментального снимка в учетную запись хранения.

Сделайте моментальный снимок диска виртуальной машины

  1. Войдите на портал Azure .
  2. Выберите Создать ресурс, а затем найдите и выберите слепок.
  3. На панели моментального снимка выберите Создать.
  4. Выберите подписку . Выберите существующую группу ресурсов в выбранной подписке или Создать новую и введите имя создаваемой группы ресурсов. Это группа ресурсов, с которой будет связан моментальный снимок.
  5. Введите имя для моментального снимка.
  6. Для типа источника выберите диск .
    1. Выберите подписку "Source", которая содержит диск виртуальной машины. Это может отличаться от целевой подписки нового моментального снимка.
  7. Для диска-источника , выберите управляемый диск для создания снимка.
  8. Для типа хранилища выберите стандартный HDD, если вам не требуется хранение на высокопроизводительном SSD.
  9. Выберите Проверить и создать. После успешной проверки, выберите Создать.

Извлеките виртуальный жесткий диск (VHD) в вашу учетную запись хранения

Используйте следующий сценарий для экспорта моментального снимка в VHD в учетной записи хранения. Для каждого из параметров вставьте данные соответствующим образом.

#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: /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

Приведенный выше сценарий использует следующие команды для создания URI SAS для моментального снимка и копирует базовый виртуальный жесткий диск в учетную запись хранения с помощью URI SAS.

Команда Примечания
az disk предоставление доступа Создает SAS только для чтения, который используется для копирования базового VHD-файла в учетную запись хранения или скачивания его в локальную среду.
az storage blob copy start Копирует блоб асинхронно из одной учетной записи в другую. Используйте az storage blob show, чтобы проверить статус нового blob.

Создание URI SAS

Существует два распространенных инструмента, используемых для создания адреса SAS (URI):

  • браузер службы хранилища Azure — доступен на портале Azure.
  • Azure CLI— рекомендуется использовать для операционных систем, отличных от Windows, и автоматизированных или непрерывных сред интеграции.

Использование средства 1. Браузер службы хранилища Azure

  1. Перейдите к учетной записи хранения .
  2. Откройте браузер хранилища и выберите контейнеры BLOB.
  3. В контейнере , щелкните правой кнопкой мыши VHD-файл и выберите Создать SAS.
  4. В меню Подпись общего доступа, появившемся, заполните следующие поля:
    • Разрешения — выбор разрешений для чтения. Не предоставляйте разрешения на запись или удаление.
    • Дата и время начала — это дата начала разрешенного доступа к VHD. Чтобы защититься от изменений времени в формате UTC, укажите дату, которая находится за день до текущей даты. Например, если текущая дата — 15 июля 2022 г., задайте дату 07.14.2022.
    • Дата и время окончания срока действия — это дата истечения срока разрешения на доступ к виртуальному жесткому диску (VHD). Укажите дату не менее трех недель после текущей даты.
  5. Чтобы создать связанный URI SAS для этого виртуального жесткого диска, выберите Создать маркер SAS и URL-адрес.
  6. Скопируйте URL-адрес SAS объекта BLOB и сохраните его в текстовом файле в безопасном месте.
  7. Повторите эти действия для каждого VHD, который требуется опубликовать.

Заметка

Если вам нужно создать URI SAS с разрешениями на чтение и список, это можно сделать, создав его на уровне контейнера. Выполните те же действия, описанные выше, но не забудьте выбрать разрешения на чтение и список. После завершения шага 6 необходимо добавить имя файла blob перед "?sp=rl" для ссылки на ваш VHD-файл в контейнере. Например, если VHD-файл был mytestvhd.vhd, URI SAS будет выглядеть следующим образом:

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

Использование инструмента 2: Azure CLI

  1. В Azure CLI выполните следующую команду: Azure CLICopy

  2. Откройте Cloud Shell, выполните следующую команду:

    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. Перед выполнением приведенной выше команды не забудьте вставить следующие значения параметров.

    Значение параметра Описание
    имя учетной записи Имя учетной записи хранения Azure.
    ключ учетной записи Ключ учетной записи хранения Azure.
    имя контейнера Контейнер BLOB-объектов, на котором размещен VHD-файл.
    дата начала Это дата начала действия разрешения на доступ к виртуальному жесткому диску. Укажите дату за день до текущей даты. Например, если текущая дата — 15 июля 2022 г., задайте дату 07.14.2022. Укажите даты в формате UTC даты и времени (ГГГГ-ММ-ДДT00:00:00Z), например 2022-04-01T00:00:00Z.
    дата окончания срока действия Это дата истечения срока действия разрешения на доступ к VHD. Укажите дату не менее трех недель после текущей даты. Укажите даты в формате UTC даты и времени (ГГГГ-ММ-ДДT00:00:00Z), например 2022-04-01T00:00:00Z.
  4. Скопируйте строку подключения SAS и сохраните ее в текстовом файле в безопасном расположении. Измените эту строку, чтобы добавить сведения о расположении VHD, чтобы создать окончательный URI SAS.

  5. На портале Azure перейдите к контейнеру BLOB, который включает VHD, связанный с новым URI.

  6. Скопируйте URL-адрес конечной точки службы Blob.

  7. Измените текстовый файл со строкой подключения SAS на шаге 2. Создайте полный URI SAS с помощью этого формата. Не забудьте вставить "?" между URL-адресом конечной точки и строкой подключения.

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

Сообщения об ошибках SAS виртуальной машины

В этой таблице показаны распространенные ошибки, возникающие при предоставлении URI подписанных URL-адресов (SAS) в Центре партнеров, а также предлагаемых разрешений.

Проблема Сообщение об ошибке Исправить
"?" не найден в URI SAS Must be a valid Azure shared access signature URI. Убедитесь, что предоставленный URI SAS использует правильный синтаксис и включает символ "?".
Синтаксис: <blob-service-endpoint-url>?<sas-connection-string>
Параметр st не в URI SAS Specified SAS URL cannot be reached. Обновите универсальный код ресурса (URI) SAS с правильным значением даты начала (st).
Параметр se не в URI SAS The end date parameter (se) is required. Обновите URI SAS с правильным значением даты окончания (se).
"sp=r" не в URI SAS Missing Permissions (sp) must include 'read' (r). Обновите URI SAS с разрешениями, заданными как Read (sp=r).
Ошибка авторизации URI SAS Failure: Copying Images. Not able to download blob due to authorization error. Проверьте и исправьте формат URI SAS. При необходимости создайте повторно.
Параметры URI SAS "st" и se не имеют полной спецификации даты и времени The start time parameter (st) is not a valid date string.
ИЛИ
The end date parameter (se) is not a valid date string.
URI SAS дату начала и параметры даты окончания ("st" и "se" подстроки) должны иметь полный формат даты и времени (ггГГ-ММ-ДДT00:00:00Z), например 11-02-2017T00:00:00Z. Сокращенные версии недопустимы (некоторые команды в Azure CLI могут создавать сокращенные значения по умолчанию).

Дополнительные сведения см. в разделе «Предоставление ограниченного доступа к ресурсам Azure Storage с помощью общего ключа доступа (SAS)».

Проверьте SAS URI

Проверьте URI SAS на Центре Партнеров, чтобы избежать проблем, связанных с URI SAS после отправки запроса. Этот процесс является необязательным, но рекомендуется.

  • URI содержит имя файла образа VHD, включая расширение имени файла .vhd.
  • Sp=r отображается в середине URI. В этой строке отображается разрешение на чтение.
  • При появлении sr=c это означает, что указан доступ на уровне контейнера.
  • Скопируйте и вставьте URI в браузер, чтобы протестировать скачивание блоба (можно отменить операцию до завершения загрузки).