Ошибка 403 при создании Azure контейнера больших двоичных объектов хранилища (брандмауэр хранилища включен - PullRequest
1 голос
/ 26 мая 2020

Обновление:

После комментария Морада я нашел журнал, который показывает мне, что операции «CreateContainer», похоже, выполняются под другим IP ?? Есть идеи, почему это могло произойти?

enter image description here


Исходное сообщение:

У меня есть учетная запись хранения azure с включенным брандмауэром, и я пытаюсь создать контейнер больших двоичных объектов в учетной записи, использующей конвейер сборки VSTS.

Этот конвейер запускается агентом, размещенным на сервере Microsoft, и поэтому в моем процессе добавление IP-адреса машины к брандмауэру перед созданием контейнера, и удалив его сразу после этого.

Проблема в том, что я получаю сообщение об ошибке 403 при запуске команды create blob. брандмауэр, но даже если я жду 5 минут, я все равно получаю 403.

Это сценарий, который я запускаю:

$MyIP = (Invoke-WebRequest 'https://ifconfig.me/ip' -Method Get).Content

Try {
    Add-AzStorageAccountNetworkRule -ResourceGroupName $ResourceGroupName `
        -Name $StorageAccountName `
        -IPAddressOrRange $MyIP

    $ctx = (Get-AzStorageAccount -ResourceGroupName $ResourceGroupName `
            -Name $StorageAccountName).Context

    New-AzStorageContainer -Name $ContainerName `
        -Context $ctx
}
Finally {
    Remove-AzStorageAccountNetworkRule -ResourceGroupName $ResourceGroupName `
        -Name $StorageAccountName `
        -IPAddressOrRange $MyIP
}

, и это результат, который я получаю (вы можно увидеть, что IP-адрес агента правильный y добавлено)

Action IPAddressOrRange
------ ----------------
 Allow 127.0.0.1
 Allow 104.40.203.123 # This is the build agent IP

New-AzStorageContainer: C:\Users\Desktop\Test.ps1:15
Line |
  15 |      New-AzStorageContainer -Name $ContainerName `
     |      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | This request is not authorized to perform this operation. HTTP Status Code: 403 - HTTP Error Message:
     | This request is not authorized to perform this operation.
ErrorCode: AuthorizationFailure
     | ErrorMessage: This request is not authorized to perform this operation.
     | RequestId:9112d81a-e01e-002a-7935-331d33000000
Time:2020-05-26T08:11:04.9195569Z

Action IPAddressOrRange
------ ----------------
 Allow 127.0.0.1

Примечание: Отключение брандмауэра работает, но я не могу этого сделать в prod

1 Ответ

0 голосов
/ 24 июня 2020

У меня есть ответ от Microsoft по этому поводу.

Что происходит, так это то, что когда мы создаем организацию Azure DevOps, мы должны сообщить об этом регион, но эти регионы являются подмножеством Azure регионов. Всякий раз, когда я запускал конвейер с использованием Microsoft Hosted Agent, этот агент запускается в некоторой области Azure.

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

Альтернатива

Согласно предложению Microsoft, вам нужно будет использовать собственный агент, чтобы избежать этой проблемы. Других известных альтернатив нет.

Долгосрочное решение

Существует запрос функции на включение Azure DevOps в качестве одного из возможных вариантов для «Доверенных служб» в учетной записи хранилища. Это исправит проблему надлежащим образом, однако сроки реализации этой функции отсутствуют.

Надеюсь, это поможет кому-то еще с той же проблемой.

?‍♀️

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...