Implementowanie warstwowej architektury zabezpieczeń w środowiskach App ServiceImplementing a Layered Security Architecture with App Service Environments

Ponieważ środowiska App Service udostępniają izolowane środowisko uruchomieniowe wdrożone w sieci wirtualnej, deweloperzy mogą tworzyć warstwowe architektury zabezpieczeń zapewniające różne poziomy dostępu do sieci dla każdej warstwy fizycznej aplikacji.Since App Service Environments provide an isolated runtime environment deployed into a virtual network, developers can create a layered security architecture providing differing levels of network access for each physical application tier.

Typowym pragnieniem jest ukrycie zaplecza interfejsu API z ogólnego dostępu do Internetu i Zezwalanie na wywoływanie interfejsów API przez nadrzędne aplikacje sieci Web.A common desire is to hide API back-ends from general Internet access, and only allow APIs to be called by upstream web apps. Sieciowe grupy zabezpieczeń (sieciowych grup zabezpieczeń) mogą być używane w podsieciach zawierających App Service środowiska w celu ograniczenia publicznego dostępu do aplikacji interfejsu API.Network security groups (NSGs) can be used on subnets containing App Service Environments to restrict public access to API applications.

Na poniższym diagramie przedstawiono przykładową architekturę z aplikacją opartą na WebAPI wdrożoną na App Service Environment.The diagram below shows an example architecture with a WebAPI based app deployed on an App Service Environment. Trzy oddzielne wystąpienia aplikacji sieci Web, wdrożone w trzech oddzielnych środowiskach App Service, wykonują wywołania zaplecza do tej samej aplikacji WebAPI.Three separate web app instances, deployed on three separate App Service Environments, make back-end calls to the same WebAPI app.

Architektura koncepcyjna

Zielony znak plus wskazuje, że sieciowa Grupa zabezpieczeń w podsieci zawierającej "apiase" zezwala na wywołania przychodzące z nadrzędnych aplikacji sieci Web, jak również wywołania z samego siebie.The green plus signs indicate that the network security group on the subnet containing "apiase" allows inbound calls from the upstream web apps, as well calls from itself. Jednak ta sama sieciowa Grupa zabezpieczeń jawnie nie zezwala na dostęp do ogólnego ruchu przychodzącego z Internetu.However the same network security group explicitly denies access to general inbound traffic from the Internet.

W dalszej części tego artykułu przedstawiono kroki niezbędne do skonfigurowania sieciowej grupy zabezpieczeń w podsieci zawierającej "apiase".The remainder of this article walks through the steps needed to configure the network security group on the subnet containing "apiase."

Określanie zachowania sieciDetermining the Network Behavior

Aby dowiedzieć się, jakie reguły zabezpieczeń sieci są potrzebne, należy określić, którzy klienci sieci będą mogli dotrzeć do App Service Environment zawierającego aplikację interfejsu API, a klienci zostaną zablokowani.In order to know what network security rules are needed, you need to determine which network clients will be allowed to reach the App Service Environment containing the API app, and which clients will be blocked.

Ze względu na to, że sieciowe grupy zabezpieczeń (sieciowych grup zabezpieczeń) są stosowane do podsieci, a środowiska App Service są wdrażane w podsieciach, reguły zawarte w sieciowej grupy zabezpieczeń stosują się do wszystkich aplikacji uruchomionych na App Service Environment.Since network security groups (NSGs) are applied to subnets, and App Service Environments are deployed into subnets, the rules contained in an NSG apply to all apps running on an App Service Environment. Korzystając z przykładowej architektury dla tego artykułu, po zastosowaniu sieciowej grupy zabezpieczeń do podsieci zawierającej "apiase" wszystkie aplikacje działające w App Service Environment "apiase" będą chronione przez ten sam zestaw reguł zabezpieczeń.Using the sample architecture for this article, once a network security group is applied to the subnet containing "apiase", all apps running on the "apiase" App Service Environment will be protected by the same set of security rules.

  • Określ wychodzący adres IP wywołujących obiektów nadrzędnych: Jaki jest adres IP lub adresy obiektów wywołujących w strumieniu nadrzędnym?Determine the outbound IP address of upstream callers: What is the IP address or addresses of the upstream callers? Te adresy muszą mieć jawnie dozwolony dostęp w sieciowej grupy zabezpieczeń.These addresses will need to be explicitly allowed access in the NSG. Ponieważ wywołania między środowiskami App Service są traktowane jako wywołania "internetowe", wychodzący adres IP przypisany do każdego z trzech środowisk nadrzędnych App Service musi mieć dozwolony dostęp w sieciowej grupy zabezpieczeń dla podsieci "apiase".Since calls between App Service Environments are considered "Internet" calls, the outbound IP address assigned to each of the three upstream App Service Environments needs to be allowed access in the NSG for the "apiase" subnet. Aby uzyskać więcej informacji na temat określania wychodzącego adresu IP dla aplikacji działających w App Service Environment, zobacz artykuł Omówienie architektury sieci .For more information on determining the outbound IP address for apps running in an App Service Environment, see the Network Architecture Overview article.
  • Czy aplikacja interfejsu API zaplecza musi być wywoływana sama?Will the back-end API app need to call itself? Czasami przebiegać i delikatny punkt jest scenariuszem, w którym aplikacja zaplecza musi sam wywołać.A sometimes overlooked and subtle point is the scenario where the back-end application needs to call itself. Jeśli aplikacja interfejsu API zaplecza na App Service Environment musi wywołać sam siebie, jest również traktowana jako wywołanie "Internet".If a back-end API application on an App Service Environment needs to call itself, it is also treated as an "Internet" call. W przykładowej architekturze wymaga to również zezwolenia na dostęp z wychodzącego adresu IP "apiase App Service Environment".In the sample architecture, this requires allowing access from the outbound IP address of the "apiase" App Service Environment as well.

Konfigurowanie sieciowej grupy zabezpieczeńSetting up the Network Security Group

Po znalezieniu zestawu wychodzących adresów IP następnym krokiem jest utworzenie sieciowej grupy zabezpieczeń.Once the set of outbound IP addresses are known, the next step is to construct a network security group. Sieciowe grupy zabezpieczeń można tworzyć zarówno dla sieci wirtualnych opartych na Menedżer zasobów, jak i klasycznych sieci wirtualnych.Network security groups can be created for both Resource Manager based virtual networks, as well as classic virtual networks. W poniższych przykładach pokazano, jak utworzyć i skonfigurować sieciowej grupy zabezpieczeń w klasycznej sieci wirtualnej przy użyciu programu PowerShell.The examples below show creating and configuring an NSG on a classic virtual network using Powershell.

W przypadku architektury przykładowej środowiska znajdują się w Południowo-środkowe stany USA, więc w tym regionie jest tworzona pusta sieciowej grupy zabezpieczeń:For the sample architecture, the environments are located in South Central US, so an empty NSG is created in that region:

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

Najpierw dodawana jest jawna reguła zezwalania dla infrastruktury zarządzania systemu Azure, która została zapisana w artykule dotyczącym ruchu przychodzącego dla środowisk App Serviceych.First an explicit allow rule is added for the Azure management infrastructure as noted in the article on inbound traffic for App Service Environments.

#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

Następnie są dodawane dwie reguły zezwalające na wywołania HTTP i HTTPS z pierwszego nadrzędnego App Service Environment ("fe1ase").Next, two rules are added to allow HTTP and HTTPS calls from the first upstream App Service Environment ("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

Przepłukać i powtórz dla drugiego i trzeciego środowiska App Service nadrzędnego ("fe2ase" i "fe3ase").Rinse and repeat for the second and third upstream App Service Environments ("fe2ase"and "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

Na koniec Udziel dostępu do wychodzącego adresu IP App Service Environment interfejsu API zaplecza, tak aby można było wywołać go ponownie.Lastly, grant access to the outbound IP address of the back-end API's App Service Environment so that it can call back into itself.

#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

Nie są wymagane żadne inne reguły zabezpieczeń sieci, ponieważ każdy sieciowej grupy zabezpieczeń ma zestaw reguł domyślnych, które domyślnie blokują dostęp do ruchu przychodzącego z Internetu.No other network security rules are required, because every NSG has a set of default rules that block inbound access from the Internet, by default.

Poniżej przedstawiono pełną listę reguł w sieciowej grupie zabezpieczeń.The full list of rules in the network security group are shown below. Zwróć uwagę na to, jak Ostatnia reguła, która jest wyróżniona, blokuje dostęp przychodzący ze wszystkich wywołujących, innych niż wywołujący, którym udzielono jawnie dostępu.Note how the last rule, which is highlighted, blocks inbound access from all callers, other than callers that have been explicitly granted access.

Konfiguracja sieciowej grupy zabezpieczeń

Ostatnim krokiem jest zastosowanie sieciowej grupy zabezpieczeń do podsieci zawierającej App Service Environment "apiase".The final step is to apply the NSG to the subnet that contains the "apiase" App Service Environment.

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

Po zastosowaniu sieciowej grupy zabezpieczeń do podsieci, tylko trzy środowiska App Service nadrzędnego i App Service Environment zawierające zaplecza interfejsu API, mogą wywołać środowisko "apiase".With the NSG applied to the subnet, only the three upstream App Service Environments, and the App Service Environment containing the API back-end, are allowed to call into the "apiase" environment.

Informacje o sieciowych grupach zabezpieczeń.Information about network security groups.

Informacje o wychodzących adresach IP i środowiskach App Service.Understanding outbound IP addresses and App Service Environments.

Porty sieciowe używane przez środowiska App Service.Network ports used by App Service Environments.

Uwaga

Jeśli chcesz zacząć korzystać z usługi Azure App Service przed utworzeniem konta platformy Azure, przejdź do artykułu Try App Service (Wypróbuj usługę App Service), w którym wyjaśniono, jak od razu utworzyć początkową aplikację internetową o krótkim okresie istnienia w usłudze App Service.If you want to get started with Azure App Service before signing up for an Azure account, go to Try App Service, where you can immediately create a short-lived starter web app in App Service. Bez kart kredytowych i bez zobowiązań.No credit cards required; no commitments.