Как защитить доступ из службы приложений к базе данных Azure Sql с помощью виртуальной сети? - PullRequest
0 голосов
/ 23 мая 2018

Сценарий

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

Allow access to App Services screenshot

Что я сделал:

  1. Я перешел в Службу приложений -> Сеть -> Интеграция с VNET -> Настройка -> Создать новыйВиртуальная сеть
  2. Я создал новую VNET с настройками по умолчанию.
  3. Когда VNET был создан, я пошел в Сервис приложений -> Сеть -> Интеграция с VNET и убедился, что 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. . 'не имеет доступа к серверу .:

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

Ответы [ 3 ]

0 голосов
/ 02 июня 2018

Один из вариантов, который позволит вам удалить параметр брандмауэра «Разрешить доступ к службам приложений», заключается в добавлении правил брандмауэра для исходящих 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

0 голосов
/ 01 мая 2019

Если вы хотите заблокировать доступ из приложения к такой службе, как Azure SQL, хранилище, Cosmos DB и т. Д. С конечными точками службы, вы можете использовать новую функцию интеграции с VNet.Более ранняя форма функции требует шлюза и основана на VPN-соединении точка-сайт.Исходный IP-адрес из вашего приложения будет одним из пунктов адреса сайта.Конечные точки службы работают только в том случае, если ваш исходный IP-адрес является одним из адресов виртуальной сети.

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

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

0 голосов
/ 23 мая 2018

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

Почему:

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

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

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

Решение:

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

Ссылка:

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

Аналогичный случай: Интеграция службы приложений VNet со службой хранилища AzureEnpoint

...