Частная ссылка Azure Sql блокирует доступ к учетной записи хранения

Я пытаюсь настроить службу приложения для подключения к Azure Sql с использованием частной конечной точки, как описано здесь (но с портала): https://blog.arinco.com.au/2020/08/connect-an-azure-app-service-to-azure-sql-using-azure-private-link/

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

Я использую функцию срабатывания таймера:

The listener for function 'MyFunction' was unable to start.
innermostMessage: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

введите описание изображения здесь

Как это может заблокировать мой доступ к учетной записи хранения? Может быть, когда я использую частную ссылку для одного из предложений Paas, мне нужно будет использовать ее для всех?


person Piotr Perak    schedule 15.01.2021    source источник


Ответы (2)


Я предполагаю, что по умолчанию вы можете получить доступ к общедоступной конечной точке связанной с функцией учетной записи хранилища (выберите Allow access from всю сеть), затем вы интегрируете приложение в виртуальную сеть и установите WEBSITE_VNET_ROUTE_ALL на 1, что сообщит службе приложений или вашей функции Azure маршрутизировать все трафик через VNET. По умолчанию служба приложений направляет в виртуальную сеть только трафик RFC1918. Это ограничивает исходящий трафик из виртуальной сети.

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

введите описание изображения здесь

person Nancy Xiong    schedule 26.01.2021
comment
Не успел проверить - другие приоритеты. Но я сомневаюсь, что это может решить мою проблему, поскольку мне нужен каждый IP-адрес для доступа к моей учетной записи хранения. Это веб-приложение, которое должно отображать изображения прямо из хранилища (с токеном SAS). - person Piotr Perak; 01.02.2021
comment
Когда вы сказали, что одна из моих функций Azure, подключенная к той же виртуальной сети, больше не может получить доступ к учетной записи хранения. , есть ли какая-либо другая функция Azure, подключенная к той же виртуальной сети, по-прежнему подключенная к той же учетной записи хранения? Если да, то это похоже на проблему с самой функцией Azure. По умолчанию ваша функция Azure подключена как к Интернету, так и к виртуальной сети с помощью развертывания службы приложения или приложения-функции в виртуальной сети. - person Nancy Xiong; 01.02.2021
comment
Веб-приложение в AppService также не может подключиться к учетной записи хранения - person Piotr Perak; 01.02.2021
comment
Я так думаю, потому что, когда вы устанавливаете для параметра приложения WEBSITE_VNET_ROUTE_ALL значение 1, весь исходящий трафик из вашего тарифного плана приложения поступает из вашей виртуальной сети. В этом случае вам нужно либо создать частную конечную точку для своей учетной записи хранения, либо отменить установку WEBSITE_VNET_ROUTE_ALL на 1 или попробовать вышеуказанное решение в моем ответе. Вы также можете проверить, разрешен ли он в общедоступный IP-адрес, когда nslookup storage account FQDN из вашего функционального приложения Azure --- console. - person Nancy Xiong; 02.02.2021
comment
Он начал работать, когда мы добавили Service Enpdoint для хранилища в VNET. Мы создали небольшую копию, и это не то, что предложила служба поддержки MS. - person Piotr Perak; 16.02.2021
comment
Вы только добавляете Service Enpdoint для хранения в VNET, и тогда он начинает работать? Вы также добавляете подсеть, интегрированную в приложение, в сеть связанной учетной записи хранения? - person Nancy Xiong; 18.02.2021

Пара вещей, которые нужно проверить,

  • Можете ли вы проверить через консоль Kudu, присутствует ли переменная окружения WEBSITE_PRIVATE_IP? Если он отсутствует, это означает, что настройка интеграции региональной виртуальной сети на этой виртуальной машине завершилась неудачно. См. Мой ответ здесь

  • Веб-приложение подключается к хранилищу через частную конечную точку или конечную точку службы?

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

    nameresolver hostname dnsServerIpAddress

    Здесь dnsServerIpAddress не является обязательным. Если он не указан, он подберет настройку приложения DNS или DNS-серверы виртуальной сети.

  • tcpping к конечной точке хранилища на порте 443 работает? попробуйте выполнить команду ниже

    tcpping storageaccount.blob.core.windows.net

Вы также можете проверить то же самое для SQL.

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

Для дальнейшей изоляции попробуйте удалить частные конечные точки и подключиться через конечные точки служб.

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

person Kaushal Kumar Panday    schedule 11.02.2021