После нескольких дней борьбы с этой проблемой я решил опубликовать ее здесь на случай, если кто-то может мне помочь, указав.
У меня есть учетная запись хранения Azure с контейнером BLOB-объектов с зашифрованным изображений. Изображения были загружены с помощью запроса PUT (из браузера) в Azure Blob Storage REST API с использованием подписи SAS (сгенерированной виртуальной машиной Azure) и ключей, предоставленных клиентом (заголовки x-ms-encryption). Однако при попытке загрузить изображения с виртуальной машины Azure с помощью запроса GET (с использованием curl) я получаю следующую ошибку 403 «AuthorizationFailure»:
<?xml version="1.0" encoding="utf-8”?>
<Error>
<Code>AuthorizationFailure</Code>
<Message>
This request is not authorized to perform this operation.
RequestId:1b203db6-c01e-0013-1553-6adb9b000000
Time:2020-08-04T11:33:42.9494992Z
</Message>
</Error>
Однако забавная вещь, когда я выполняю точно тот же запрос GET (точно такие же заголовки) с curl, Postman или браузером с моего собственного локального компьютера и даже с других Azure виртуальных машин, расположенных в разных группах ресурсов и разных виртуальных сетях, он работает, как ожидалось, и я могу успешно загрузить зашифрованное изображение. Это подтверждает, что подпись SAS и переданные заголовки построены правильно.
Я просмотрел всю конфигурацию виртуальной машины, группы сетевой безопасности, виртуальной сети и учетной записи хранения на портале Azure и сравнил ее с другие виртуальные машины, которые успешно загружают образы, и все настройки точно такие же, за исключением:
В виртуальной машине, которая не может загрузить образ, я авторизован как участник для этого Только группа ресурсов виртуальной машины, а в работающей виртуальной машине я являюсь владельцем учетной записи.
В учетной записи, владельцем которой я являюсь, Azure создал новую группу ресурсов. называется NetworkWatcherRG, к которому, похоже, не подключены никакие ресурсы. В виртуальной машине, в которой возникла проблема, у меня нет доступа к этой группе ресурсов, поэтому я игнорирую, была ли она создана Azure или нет, и влияет ли это на проблему, с которой я сталкиваюсь.
Буду очень признателен за любые идеи или предложения относительно того, в чем может заключаться проблема.