Резюме
Я создаю конвейер инициализации CI / CD для новой учетной записи хранилища Azure в конвейере DevOps Azure и пытаюсь загрузить некоторые файлы в хранилище BLOB-объектов с помощью AzCopy, запущенного из задачи Azure Powershell в конвейере.
Ошибка
Сценарий успешно запускается с моего локального компьютера, но при запуске в конвейере DevOps Azure я получаю следующую ошибку ( ErrorDateTime - это просто запутанная дата-время в формате ISO 8601):
- System.Management.Automation.RemoteException: [ErrorDateTime] [ERROR] Ошибка при синтаксическом анализе места назначения
"https://newStorageAccount.blob.core.windows.net/config/import": Не удалось проверить
назначение: произошла одна или несколько ошибок. Удаленный сервер возвратил ошибку: (403) Запрещено.
[ошибка] [ErrorDateTime] [ОШИБКА] Ошибка при синтаксическом анализе места назначения "https://newStorageAccount.blob.core.windows.net/config/import": Не удалось проверить место назначения: произошла одна или несколько ошибок. Удаленный сервер возвратил ошибку: (403) Запрещено.
[отладка] Обработано: ## vso [task.logissue type = error] [ErrorDateTime] [ОШИБКА] Ошибка при синтаксическом анализе места назначения "https://newStorageAccount.blob.core.windows.net/config/import": Не удалось проверить место назначения: произошла одна или несколько ошибок. Удаленный сервер возвратил ошибку: (403) Запрещено.
- Ошибка записи:
- Этот запрос не авторизован для выполнения этой операции.
Предположения
- Учетная запись хранения настроена так, чтобы разрешать доступ только для определенных виртуальных сетей и IP-адресов.
- Похоже, что брандмауэр или учетные данные каким-то образом настроены неправильно, но ServicePrincipal, выполняющий сценарий, был успешно использован в других задачах конвейера, и для понимания этих проблем я временно предоставил разрешения Владельцу подписки ServicePrincipal и Правилам брандмауэра учетной записи хранения. на вкладке «Разрешить доверенным службам Microsoft доступ к этой учетной записи хранения»
Что я пробовал ...
Я успешно запустил скрипт с моего локального компьютера с моим IP-адресом в списке разрешенных.
Если я включу «Разрешить доступ из всех сетей» в правилах брандмауэра учетной записи хранения, сценарий запустится и файл будет успешно загружен.
Создается впечатление, что агенты конвейера Azure, работающие в собственной виртуальной сети, не имеют доступа к моей учетной записи хранения, но я бы подумал, что это требование будет удовлетворено, если установить «Разрешить доверенным службам Microsoft доступ к этой учетной записи хранения». "в настройках брандмауэра
Я использую следующую строку в задаче Azure Powershell. Я доволен значениями, потому что все работает, когда «Все сети» или мой IP-адрес включены, и я работаю локально.
.\AzCopy.exe /Source:$SourcePath /Dest:$blobUrlDir /DestKey:$key /Pattern:$FilenamePattern /Y
Будем благодарны за любые мысли или указания.
Спасибо
SJB