Функции Azure: получение ошибки 403 при доступе к учетной записи хранения

Я использовал в своем проекте функцию на основе лазурного таймера. С тех пор, как я начал использовать эту функцию, я получал ошибку 403, связанную с запрещенным доступом из учетной записи хранения Azure.

Я попытался добавить ключ AzureWebJobsStorage в конфигурацию функции. Я попытался добавить исходящие IP-адреса из разрешенных диапазонов IP-адресов учетных записей хранилища Azure. Я попытался проверить параметр, разрешающий управляемые службы Azure для учетной записи хранения.

Однако я все еще получаю ошибку в этой конкретной функции таймера моего приложения-функции. Остальные функции работают правильно.

Хотя, если я разрешаю все сети в настройках брандмауэра учетной записи хранения и VN, моя функция работает правильно.

И функция, и учетная запись хранения находятся в одном регионе.

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


person Maulik Modi    schedule 23.01.2020    source источник


Ответы (2)


Некоторые ответы по этой проблеме уже есть, вы можете увидеть здесь и здесь .

Короче говоря, если function и storage account находятся в одном регионе, они обмениваются данными внутренним способом, не проходя через outboundIpAddresses.

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

person Ivan Yang    schedule 24.01.2020

В случае, если кто-то еще ищет это ... У меня была аналогичная проблема. У меня было приложение-функция, в котором я создал частную конечную точку и региональную интеграцию виртуальной сети с виртуальной сетью, взаимодействующей с учетной записью хранения, которая также имела частную конечную точку с той же виртуальной сетью. Параметры сети / брандмауэра учетной записи хранения разрешают подключения только из виртуальной сети (внешний трафик не разрешен). И учетная запись хранения, и приложение-функция находятся в одном регионе.

Попытка исправить №1 (не идеально):

Я добавил код, чтобы определить, с какого IP-адреса было запущено приложение-функция. Это побудило меня добавить все IP-адреса на портале в приложение-функцию - ›Свойства -› Additional Outbound IP Addresses. Это предоставляется Terraform, если оно используется .

Попытка исправить № 2 (лучше):

Разрешение необходимо для обеспечения правильных настроек функционального приложения.

См .: Документация Microsoft

Setting Suggested value Description
WEBSITE_CONTENTOVERVNET 1 Create this app setting. A value of 1 enables your function app to scale when your storage account is restricted to a virtual network.
WEBSITE_DNS_SERVER 168.63.129.16 Create this app setting. When your app integrates with a virtual network, it will use the same DNS server as the virtual network. Your function app needs this setting so it can work with Azure DNS private zones. It's required when you use private endpoints. This setting and WEBSITE_VNET_ROUTE_ALL will send all outbound calls from your app into your virtual network.
WEBSITE_VNET_ROUTE_ALL 1 Create this app setting. When your app integrates with a virtual network, it uses the same DNS server as the virtual network. Your function app needs this setting so it can work with Azure DNS private zones. It's required when you use private endpoints. This setting and WEBSITE_DNS_SERVER will send all outbound calls from your app into your virtual network.

Примечание. 168.63.129.16 - статическое значение для Azure DNS.

После настройки всего этого мое приложение-функция смогло подключиться к учетной записи хранения через виртуальную сеть, как и ожидалось.

person Soccerjoshj07    schedule 19.05.2021