it-swarm.com.ru

Как защитить доступ из службы приложений к базе данных Azure Sql с помощью виртуальной сети?

Сценарий

Я хочу использовать виртуальную сеть, чтобы ограничить доступ к базе данных Azure только из моей службы приложений, чтобы я мог включить параметр «Разрешить доступ к службам приложений» в настройках брандмауэра

 Allow access to App Services screenshot

Что я сделал:

  1. Я пошел в Службу приложений -> Сеть -> Интеграция с VNET -> Настройка -> Создать новую виртуальную сеть
  2. Я создал новый VNET с настройками по умолчанию.
  3. Когда VNET был создан, я пошел в Службу приложений -> Сеть -> VNET Integration и убедился, что VNET подключен
  4. Я перешел к настройкам межсетевого экрана SQL -> Виртуальная сеть -> Добавить существующий виртуальный Newtork и выбрал свой VNET. Я оставил подсеть и адресное пространство по умолчанию: «default/10.0.0.0/24», а флаг IgnoreMissingServiceEndpoint не проверен.

Теперь я вижу конечную точку службы Microsoft.Sql в моем VNET:  enter image description here

Вопрос

Тем не менее, я все еще получаю 

SqlException: Невозможно открыть сервер 'my-sqlserver', запрошенный авторизоваться. Клиент с IP-адресом '52 .233 .. 'Не имеет права получить доступ к серверу.

Что мне не хватает?

6
Liero

К сожалению, пока вы не можете достичь этого сценария.

Зачем:

  1. Когда вы используете интеграцию VNET с вашим веб-приложением, ваше веб-приложение может взаимодействовать с VNET, как Web App <---> VNET.

  2. Когда вы используете брандмауэр SQL, чтобы разрешить triffic из определенной виртуальной сети, trffic из адресного пространства VNET может взаимодействовать с вашим SQL, например VNet <---> SQL server.

  3. Когда все конфигурации настроены, ваш сценарий должен быть Web App <---> VNET <---> SQL server. Важно то, что трафик из веб-приложения не может пройти через VNET на сервер SQL, потому что веб-приложение не внутри VNET, а вне VNET! Итак, когда вы используете веб-приложение, пытаетесь получить доступ к SQL-серверу, Triffic не из VNET.

Решение:

Решение состоит в том, чтобы поместить ваше веб-приложение в виртуальную сеть. Таким образом, вы можете использовать Azure ASE для достижения этой цели.

Ссылка:

Интеграция с VNet предоставляет вашему веб-приложению доступ к ресурсам в вашем виртуальная сеть, но не предоставляет частный доступ к вашему веб-приложению из виртуальная сеть. Частный доступ к сайту относится к созданию вашего приложения доступно только из частной сети, например из Azure виртуальная сеть. Доступ к частному сайту возможен только с ASE настроен с помощью внутреннего балансировщика нагрузки (ILB). Подробнее об использовании ILB ASE, начните со статьи здесь: Создание и использование ILB ASE .

Аналогичный случай: интеграция службы приложений VNet с Azure Storage Enpoint

1
Wayne Yang - MSFT

Один из вариантов, который позволит вам удалить параметр брандмауэра «Разрешить доступ к службам приложений», - это добавить правила брандмауэра для исходящих IP-адресов ваших конкретных служб приложений.

Вы можете найти текущий список в разделе «Свойства» службы приложений или с помощью PowerShell ...

$outboundIps = (Get-AzureRmResource -ResourceGroupName $rg -ResourceType Microsoft.Web/sites -ResourceName $appService).Properties.outboundIpAddresses

Несколько важных предостережений.

  1. Исходящие IP-адреса могут меняться, но это предсказуемо (см. Ссылку ниже). Я запускаю сценарии PowerShell как часть процесса выпуска VSTS, который обновляет правила брандмауэра. (Если вы также управляете своими ресурсами и их масштабированием в процессе выпуска, а не на портале Azure, этот подход кажется надежным.)

  2. Мне не удалось найти какую-либо информацию, чтобы подтвердить, являются ли эти IP-адреса уникальными для вашей службы приложений. Это риск для рассмотрения.

https://docs.Microsoft.com/en-us/Azure/app-service/app-service-ip-addresses

2
Steve S