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

Внимание

Эта статья посвящена Среде службы приложений версии 1. Среда службы приложений версии 1 и 2 отставаются от 31 августа 2024 года. Имеется новая версия среды службы приложений, которая проще в использовании и которая работает на более мощной инфраструктуре. Чтобы узнать больше о новой версии, начните с изучения статьи Введение в Среду службы приложений. Если вы используете Среду службы приложений версии 1, выполните действия, описанные в этой статье, чтобы перейти на новую версию.

По состоянию на 31 августа 2024 года соглашение об уровне обслуживания (SLA) и кредиты на обслуживание больше не применяются к рабочим нагрузкам Среда службы приложений версии 1 и 2, которые продолжают работать, так как они являются устаревшими продуктами. Началось списание оборудования Среда службы приложений версии 1 и 2, и это может повлиять на доступность и производительность приложений и данных.

Необходимо выполнить миграцию в Среда службы приложений версии 3 немедленно или удалить приложения и ресурсы. Мы попытаемся выполнить автоматическую миграцию всех оставшихся Среда службы приложений версии 1 и 2 на основе оптимальной работы с помощью функции миграции на месте, но корпорация Майкрософт не утверждает или не гарантирует доступность приложений после автоматической миграции. Вам может потребоваться выполнить настройку вручную, чтобы завершить миграцию и оптимизировать выбор номера SKU плана Служба приложений в соответствии с вашими потребностями. Если автоматическая миграция невозможна, ваши ресурсы и связанные данные приложения будут удалены. Мы настоятельно призываем вас действовать сейчас, чтобы избежать любого из этих экстремальных сценариев.

Если вам потребуется дополнительное время, мы можем предложить одноразовый 30-дневный льготный период для завершения миграции. Дополнительные сведения и запросы на этот льготный период см. в обзоре льготного периода, а затем перейдите к портал Azure и перейдите в колонку "Миграция" для каждого Среда службы приложений.

Последние сведения об обновлении Среда службы приложений версии 1/2 см. в Среда службы приложений обновлении для выхода на пенсию версии 1 и версии 2.

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

Основная цель заключается в том, чтобы сделать невозможным общий доступ к внутреннему приложению API из Интернета, разрешив вызывать API только вышестоящими веб-приложениями. В подсетях, содержащих среды службы приложений, могут использоваться группы безопасности сети для ограничения общего доступа к приложениям API.

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

Концепция архитектуры

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

В оставшейся части этой статьи описаны шаги по настройке группы безопасности сети в подсети, содержащей apiase.

Определение поведения сети

Чтобы узнать, какие правила безопасности сети необходимы, необходимо определить, какие сетевые клиенты будут разрешены для доступа к Среда службы приложений, содержащей приложение API, и какие клиенты заблокированы.

Группы безопасности сети применяются к подсетям, в которых также развертываются среды службы приложений. Поэтому содержащиеся в группе безопасности сети правила применяются ко всем приложениям, выполняющимся в среде службы приложений. Используя пример архитектуры для этой статьи, после применения группы безопасности сети к подсети, содержащей apiase, все приложения, работающие в Среда службы приложений apiase, будут защищены тем же набором правил безопасности.

  • Определение исходящего IP-адреса вышестоящих вызывающих объектов. Какой IP-адрес (или IP-адреса) у вышестоящих вызывающих объектов? Эти адреса должны быть явно разрешены в группе безопасности сети. Вызовы между средами службы приложений считаются интернет-вызовами, поэтому исходящему IP-адресу, назначенному каждой из трех вышестоящих сред службы приложений, в NSG должен быть разрешен доступ для подсети apiase. Дополнительные сведения об определении исходящего IP-адреса для приложений, выполняемых в среде службы приложений, см. в статье Общие сведения об архитектуре сетевых сред службы приложений.
  • Необходимо ли внутреннему приложению API вызывать самого себя? Есть один интересный сценарий, который часто упускают из виду: внутреннему приложению необходимо вызвать самого себя. Если серверное приложение API на Среда службы приложений должно вызывать себя, он также рассматривается как вызов "Интернет". В нашем примере архитектуры для этого также необходимо разрешить доступ от исходящего IP-адреса среды службы приложений apiase.

Настройка группы безопасности сети

Когда набор исходящих IP-адресов станет известен, можно переходить к созданию группы безопасности сети. Группы безопасности сети можно создавать как для виртуальных сетей на основе Resource Manager, так и для классических виртуальных сетей. В следующих примерах показано создание и настройка группы безопасности сети в классической виртуальной сети с помощью PowerShell.

Так как в этом примере архитектуры среды расположены в центрально-южной части США, пустая группа NSG создается в этом регионе:

New-AzureNetworkSecurityGroup -Name "RestrictBackendApi" -Location "South Central US" 
-Label "Only allow web frontend and loopback traffic"

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

#Open ports for access by Azure management infrastructure
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW AzureMngmt" 
-Type Inbound -Priority 100 -Action Allow -SourceAddressPrefix 'INTERNET' -SourcePortRange '*' 
-DestinationAddressPrefix '*' -DestinationPortRange '454-455' -Protocol TCP

Затем добавляются два правила, разрешающие вызовы HTTP и HTTPS из первой вышестоящей среды службы приложений (fe1ase).

#Grant access to requests from the first upstream web front-end
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP fe1ase" 
-Type Inbound -Priority 200 -Action Allow -SourceAddressPrefix '65.52.xx.xyz'  -SourcePortRange '*' 
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS fe1ase" 
-Type Inbound -Priority 300 -Action Allow -SourceAddressPrefix '65.52.xx.xyz'  -SourcePortRange '*' 
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP

То же самое выполняется для второй и третьей вышестоящих сред службы приложений ("fe2ase" и "fe3ase").

#Grant access to requests from the second upstream web front-end
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP fe2ase" 
-Type Inbound -Priority 400 -Action Allow -SourceAddressPrefix '191.238.xyz.abc'  -SourcePortRange '*' 
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS fe2ase" 
-Type Inbound -Priority 500 -Action Allow -SourceAddressPrefix '191.238.xyz.abc'  -SourcePortRange '*' 
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP

#Grant access to requests from the third upstream web front-end
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP fe3ase" 
-Type Inbound -Priority 600 -Action Allow -SourceAddressPrefix '23.98.abc.xyz'  -SourcePortRange '*' 
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS fe3ase" 
-Type Inbound -Priority 700 -Action Allow -SourceAddressPrefix '23.98.abc.xyz'  -SourcePortRange '*' 
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP

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

#Allow apps on the apiase environment to call back into itself
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP apiase" 
-Type Inbound -Priority 800 -Action Allow -SourceAddressPrefix '70.37.xyz.abc'  -SourcePortRange '*' 
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS apiase" 
-Type Inbound -Priority 900 -Action Allow -SourceAddressPrefix '70.37.xyz.abc'  -SourcePortRange '*' 
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP

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

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

Конфигурация NSG

Последним шагом является применение группы NSG к подсети, которая содержит среду службы приложений apiase.

#Apply the NSG to the backend API subnet
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityGroupToSubnet 
-VirtualNetworkName 'yourvnetnamehere' -SubnetName 'API-ASE-Subnet'

После применения группы NSG к подсети вызывать среду apiase смогут только три вышестоящие среды службы приложений, а также среда службы приложений, содержащая серверную часть API.

Информация о группах безопасности сети.

Основные сведения об исходящих IP-адресах и средах службы приложений.

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

Примечание.

Чтобы приступить к работе со службой приложений Azure до создания учетной записи Azure, перейдите к разделу Пробное использование службы приложений, где вы можете быстро создать кратковременное веб-приложение начального уровня в службе приложений. Никаких кредитных карт и обязательств