Samouczek: tworzenie bezpiecznej aplikacji n-warstwowej w usłudze aplikacja systemu Azure Service
Wiele aplikacji ma więcej niż jeden składnik. Na przykład może istnieć fronton, który jest publicznie dostępny i łączy się z interfejsem API zaplecza lub aplikacją internetową, która z kolei łączy się z bazą danych, kontem magazynu, magazynem kluczy, inną maszyną wirtualną lub kombinacją tych zasobów. Ta architektura tworzy aplikację N-warstwową. Ważne jest, aby aplikacje takie jak te zostały zaprojektowane w celu ochrony zasobów zaplecza w możliwie największym stopniu.
Z tego samouczka dowiesz się, jak wdrożyć bezpieczną aplikację N-warstwową z aplikacją internetową frontonu, która łączy się z inną aplikacją internetową odizolowaną od sieci. Cały ruch jest izolowany w ramach sieci wirtualnej platformy Azure przy użyciu integracji z siecią wirtualną i prywatnych punktów końcowych. Aby uzyskać bardziej kompleksowe wskazówki, które obejmują inne scenariusze, zobacz:
Architektura scenariusza
Na poniższym diagramie przedstawiono architekturę, którą utworzysz podczas tego samouczka.
- Sieć wirtualna zawiera dwie podsieci, jedna jest zintegrowana z aplikacją internetową frontonu, a druga ma prywatny punkt końcowy dla aplikacji internetowej zaplecza. Sieć wirtualna blokuje cały przychodzący ruch sieciowy, z wyjątkiem aplikacji frontonu zintegrowanej z nią.
- Aplikacja internetowa frontonu zintegrowana z siecią wirtualną i dostępna z publicznego Internetu.
- Aplikacja internetowa zaplecza dostępna tylko za pośrednictwem prywatnego punktu końcowego w sieci wirtualnej.
- Prywatny punkt końcowy integruje się z aplikacją internetową zaplecza i udostępnia aplikację internetową za pomocą prywatnego adresu IP.
- strefa Prywatna strefa DNS Umożliwia rozpoznawanie nazwy DNS na adres IP prywatnego punktu końcowego.
Uwaga
Integracja sieci wirtualnej i prywatne punkty końcowe są dostępne aż do warstwy Podstawowa w usłudze App Service. Warstwa Bezpłatna nie obsługuje tych funkcji. Z tą architekturą:
- Ruch publiczny do aplikacji zaplecza jest blokowany.
- Ruch wychodzący z usługi App Service jest kierowany do sieci wirtualnej i może dotrzeć do aplikacji zaplecza.
- Usługa App Service umożliwia rozpoznawanie nazw DNS w aplikacji zaplecza.
W tym scenariuszu przedstawiono jeden z możliwych scenariuszy N-warstwowych w usłudze App Service. Korzystając z pojęć omówionych w tym samouczku, możesz tworzyć bardziej złożone aplikacje N-warstwowe.
Zawartość:
- Utwórz sieć wirtualną i podsieci na potrzeby integracji sieci wirtualnej usługi App Service.
- Utwórz prywatne strefy DNS.
- Tworzenie prywatnych punktów końcowych.
- Konfigurowanie integracji sieci wirtualnej w usłudze App Service.
- Wyłącz podstawowe uwierzytelnianie w usłudze App Service.
- Ciągłe wdrażanie w zablokowanej aplikacji internetowej zaplecza.
Wymagania wstępne
W tym samouczku są używane dwie przykładowe aplikacje Node.js hostowane w usłudze GitHub. Jeśli nie masz jeszcze konta usługi GitHub, utwórz bezpłatne konto.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
W celu ukończenia tego samouczka:
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
1. Tworzenie dwóch wystąpień aplikacji internetowej
Potrzebne są dwa wystąpienia aplikacji internetowej— jedno dla frontonu i jedno dla zaplecza. Aby korzystać z integracji sieci wirtualnej i prywatnych punktów końcowych, należy użyć co najmniej warstwy Podstawowa . Później skonfigurujesz integrację sieci wirtualnej i inne konfiguracje.
Utwórz grupę zasobów, aby zarządzać wszystkimi zasobami tworzonymi w tym samouczku.
# Save resource group name and region as variables for convenience groupName=myresourcegroup region=eastus az group create --name $groupName --location $region
Utwórz plan usługi App Service. Zastąp ciąg
<app-service-plan-name>
unikatową nazwą. Zmodyfikuj parametr,--sku
jeśli chcesz użyć innej jednostki SKU. Upewnij się, że nie używasz warstwy Bezpłatna, ponieważ ta jednostka SKU nie obsługuje wymaganych funkcji sieciowych.# Save App Service plan name as a variable for convenience aspName=<app-service-plan-name> az appservice plan create --name $aspName --resource-group $groupName --is-linux --location $region --sku P1V3
Utwórz aplikacje internetowe. Zastąp
<frontend-app-name>
wartości i<backend-app-name>
dwiema unikatowymi nazwami globalnymi (prawidłowe znaki toa-z
,0-9
i-
). W tym samouczku przedstawiono przykładowe aplikacje Node.js. Jeśli chcesz używać własnych aplikacji, zmień odpowiednio--runtime
parametr. Uruchom polecenieaz webapp list-runtimes
, aby wyświetlić listę dostępnych środowisk uruchomieniowych.az webapp create --name <frontend-app-name> --resource-group $groupName --plan $aspName --runtime "NODE:18-lts" az webapp create --name <backend-app-name> --resource-group $groupName --plan $aspName --runtime "NODE:18-lts"
2. Tworzenie infrastruktury sieciowej
Utworzysz następujące zasoby sieciowe:
- Sieć wirtualna.
- Podsieć integracji sieci wirtualnej usługi App Service.
- Podsieć dla prywatnego punktu końcowego.
- Prywatna strefa DNS.
- Prywatny punkt końcowy.
Utwórz sieć prywatną. Zastąp ciąg
<virtual-network-name>
unikatową nazwą.# Save vnet name as variable for convenience vnetName=<virtual-network-name> az network vnet create --resource-group $groupName --location $region --name $vnetName --address-prefixes 10.0.0.0/16
Utwórz podsieć dla integracji sieci wirtualnej usługi App Service.
az network vnet subnet create --resource-group $groupName --vnet-name $vnetName --name vnet-integration-subnet --address-prefixes 10.0.0.0/24 --delegations Microsoft.Web/serverfarms --disable-private-endpoint-network-policies false
W przypadku usługi App Service zaleca się, aby podsieć integracji sieci wirtualnej miała co najmniej blok
/26
CIDR./24
jest więcej niż wystarczająca.--delegations Microsoft.Web/serverfarms
określa, że podsieć jest delegowana na potrzeby integracji sieci wirtualnej usługi App Service.Utwórz kolejną podsieć dla prywatnych punktów końcowych.
az network vnet subnet create --resource-group $groupName --vnet-name $vnetName --name private-endpoint-subnet --address-prefixes 10.0.1.0/24 --disable-private-endpoint-network-policies true
W przypadku podsieci prywatnych punktów końcowych należy wyłączyć zasady sieci prywatnego punktu końcowego, ustawiając wartość
--disable-private-endpoint-network-policies
.true
Utwórz prywatną strefę DNS.
az network private-dns zone create --resource-group $groupName --name privatelink.azurewebsites.net
Aby uzyskać więcej informacji na temat tych ustawień, zobacz Konfiguracja usługi DNS prywatnego punktu końcowego platformy Azure.
Uwaga
Jeśli tworzysz prywatny punkt końcowy przy użyciu portalu, prywatna strefa DNS zostanie utworzona automatycznie i nie musisz jej tworzyć oddzielnie. W celu zapewnienia spójności z tym samouczkiem utworzysz prywatną strefę DNS i prywatny punkt końcowy oddzielnie przy użyciu interfejsu wiersza polecenia platformy Azure.
Połącz prywatną strefę DNS z siecią wirtualną.
az network private-dns link vnet create --resource-group $groupName --name myDnsLink --zone-name privatelink.azurewebsites.net --virtual-network $vnetName --registration-enabled False
W podsieci prywatnego punktu końcowego sieci wirtualnej utwórz prywatny punkt końcowy dla aplikacji internetowej zaplecza. Zastąp
<backend-app-name>
ciąg nazwą aplikacji internetowej zaplecza.# Get backend web app resource ID resourceId=$(az webapp show --resource-group $groupName --name <backend-app-name> --query id --output tsv) az network private-endpoint create --resource-group $groupName --name myPrivateEndpoint --location $region --connection-name myConnection --private-connection-resource-id $resourceId --group-id sites --vnet-name $vnetName --subnet private-endpoint-subnet
Połącz prywatny punkt końcowy z prywatną strefą DNS z grupą stref DNS dla prywatnego punktu końcowego aplikacji internetowej zaplecza. Ta grupa stref DNS pomaga automatycznie aktualizować prywatną strefę DNS, gdy istnieje aktualizacja prywatnego punktu końcowego.
az network private-endpoint dns-zone-group create --resource-group $groupName --endpoint-name myPrivateEndpoint --name myZoneGroup --private-dns-zone privatelink.azurewebsites.net --zone-name privatelink.azurewebsites.net
Podczas tworzenia prywatnego punktu końcowego dla usługi App Service dostęp publiczny jest niejawnie wyłączony. Jeśli spróbujesz uzyskać dostęp do aplikacji internetowej zaplecza przy użyciu domyślnego adresu URL, dostęp zostanie odrzucony. W przeglądarce przejdź do strony , aby potwierdzić
<backend-app-name>.azurewebsites.net
to zachowanie.Aby uzyskać więcej informacji na temat ograniczeń dostępu usługi App Service z prywatnymi punktami końcowymi, zobacz aplikacja systemu Azure Service access restrictions (Ograniczenia dostępu do usługi aplikacja systemu Azure Service).
3. Konfigurowanie integracji sieci wirtualnej w aplikacji internetowej frontonu
Włącz integrację sieci wirtualnej w aplikacji. Zastąp <frontend-app-name>
ciąg nazwą aplikacji internetowej frontonu.
az webapp vnet-integration add --resource-group $groupName --name <frontend-app-name> --vnet $vnetName --subnet vnet-integration-subnet
Integracja z siecią wirtualną umożliwia przepływ ruchu wychodzącego bezpośrednio do sieci wirtualnej. Domyślnie tylko lokalny ruch IP zdefiniowany w dokumencie RFC-1918 jest kierowany do sieci wirtualnej, co jest potrzebne w przypadku prywatnych punktów końcowych. Aby skierować cały ruch do sieci wirtualnej, zobacz Zarządzanie routingiem integracji sieci wirtualnej. Routing całego ruchu może być również używany, jeśli chcesz kierować ruch internetowy przez sieć wirtualną, na przykład za pośrednictwem translatora adresów sieciowych platformy Azure lub usługi Azure Firewall.
4. Włączanie wdrażania do aplikacji internetowej zaplecza z Internetu
Ponieważ aplikacja internetowa zaplecza nie jest publicznie dostępna, musisz zezwolić narzędziu ciągłego wdrażania na dostęp do aplikacji, udostępniając witrynę SCM publicznie. Główna aplikacja internetowa może nadal blokować cały ruch.
Włącz dostęp publiczny dla aplikacji internetowej zaplecza.
az webapp update --resource-group $groupName --name <backend-app-name> --set publicNetworkAccess=Enabled
Ustaw niedopasowaną akcję reguły dla głównej aplikacji internetowej, aby odmówić całego ruchu. To ustawienie uniemożliwia publiczny dostęp do głównej aplikacji internetowej, mimo że ustawienie ogólnego dostępu do aplikacji jest ustawione tak, aby zezwalało na dostęp publiczny.
az resource update --resource-group $groupName --name <backend-app-name> --namespace Microsoft.Web --resource-type sites --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=Deny
Ustaw niepasowaną akcję reguły dla witryny SCM, aby zezwolić na cały ruch.
az resource update --resource-group $groupName --name <backend-app-name> --namespace Microsoft.Web --resource-type sites --set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow
5. Zablokuj dostęp do protokołu FTP i SCM
Teraz, gdy witryna SCM zaplecza jest publicznie dostępna, musisz zablokować ją z lepszymi zabezpieczeniami.
Wyłącz dostęp ftp zarówno dla aplikacji internetowych frontonu, jak i zaplecza. Zastąp
<frontend-app-name>
wartości i<backend-app-name>
nazwami aplikacji.az resource update --resource-group $groupName --name ftp --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<frontend-app-name> --set properties.allow=false az resource update --resource-group $groupName --name ftp --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<backend-app-name> --set properties.allow=false
Wyłącz podstawowy dostęp uwierzytelniania do portów WebDeploy i witryn narzędzi SCM/advanced dla obu aplikacji internetowych. Zastąp
<frontend-app-name>
wartości i<backend-app-name>
nazwami aplikacji.az resource update --resource-group $groupName --name scm --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<frontend-app-name> --set properties.allow=false az resource update --resource-group $groupName --name scm --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<backend-app-name> --set properties.allow=false
Wyłączenie podstawowego uwierzytelniania w usłudze App Service ogranicza dostęp do punktów końcowych FTP i SCM użytkownikom, którzy są wspierani przez identyfikator Entra firmy Microsoft, co dodatkowo zabezpiecza aplikacje. Aby uzyskać więcej informacji na temat wyłączania podstawowego uwierzytelniania, w tym sposobu testowania i monitorowania logowań, zobacz Wyłączanie podstawowego uwierzytelniania w usłudze App Service.
6. Konfigurowanie ciągłego wdrażania przy użyciu funkcji GitHub Actions
Przejdź do przykładowej aplikacji zaplecza Node.js. Ta aplikacja jest prostą aplikacją Hello World.
Wybierz przycisk Rozwidlenie w prawym górnym rogu strony GitHub.
Wybierz właściciela i pozostaw domyślną nazwę repozytorium.
Wybierz pozycję Utwórz rozwidlenie.
Powtórz ten sam proces dla przykładowej aplikacji frontonu Node.js. Ta aplikacja to podstawowa aplikacja internetowa, która uzyskuje dostęp do zdalnego adresu URL.
Utwórz jednostkę usługi. Zastąp
<subscription-id>
wartości ,<frontend-app-name>
i<backend-app-name>
wartościami.az ad sp create-for-rbac --name "myApp" --role contributor --scopes /subscriptions/<subscription-id>/resourceGroups/$groupName/providers/Microsoft.Web/sites/<frontend-app-name> /subscriptions/<subscription-id>/resourceGroups/$groupName/providers/Microsoft.Web/sites/<backend-app-name> --sdk-auth
Dane wyjściowe to obiekt JSON z poświadczeniami przypisania roli, które zapewniają dostęp do aplikacji usługi App Service. Skopiuj ten obiekt JSON do następnego kroku. Zawiera on wpis tajny klienta, który jest obecnie widoczny tylko w tej chwili. Zawsze dobrym rozwiązaniem jest przyznanie minimalnego dostępu. Zakres w tym przykładzie jest ograniczony tylko do aplikacji, a nie całej grupy zasobów.
Aby przechowywać poświadczenia jednostki usługi jako wpisy tajne usługi GitHub, przejdź do jednego z rozwidlonych przykładowych repozytoriów w usłudze GitHub i przejdź do pozycji Ustawienia> Zabezpieczenia>tajne i zmienne>Actions.
Wybierz pozycję Nowy wpis tajny repozytorium i utwórz wpis tajny dla każdej z poniższych wartości. Wartości można znaleźć w skopiowanych wcześniej danych wyjściowych json.
Nazwa/nazwisko Wartość AZURE_APP_ID <application/client-id>
AZURE_PASSWORD <client-secret>
AZURE_TENANT_ID <tenant-id>
AZURE_SUBSCRIPTION_ID <subscription-id>
Powtórz ten proces dla innego rozwidlenia przykładowego repozytorium.
Aby skonfigurować ciągłe wdrażanie za pomocą funkcji GitHub Actions, zaloguj się do witryny Azure Portal.
Przejdź do strony Przegląd aplikacji internetowej frontonu.
W okienku po lewej stronie wybierz pozycję Centrum wdrażania. Następnie wybierz pozycję Ustawienia.
W polu Źródło wybierz pozycję "GitHub" z opcji ciągłej integracji/ciągłego wdrażania.
Jeśli wdrażasz z usługi GitHub po raz pierwszy, wybierz pozycję Autoryzuj i postępuj zgodnie z monitami autoryzacji. Jeśli chcesz wdrożyć z repozytorium innego użytkownika, wybierz pozycję Zmień konto.
Jeśli używasz przykładowej aplikacji Node.js rozwidlenia w ramach wymagań wstępnych, użyj następujących ustawień dla organizacji, repozytorium i gałęzi.
Ustawienie Wartość Organizacja <your-GitHub-organization>
Repozytorium nodejs-frontend Oddział main Wybierz pozycję Zapisz.
Powtórz te same kroki dla aplikacji internetowej zaplecza. W poniższej tabeli podano ustawienia Centrum wdrażania.
Ustawienie Wartość Organizacja <your-GitHub-organization>
Repozytorium nodejs-backend Oddział main
7. Używanie jednostki usługi do wdrożenia funkcji GitHub Actions
Konfiguracja centrum wdrażania utworzyła domyślny plik przepływu pracy w każdym z przykładowych repozytoriów, ale domyślnie używa profilu publikowania, który używa podstawowego uwierzytelniania. Ponieważ podstawowe uwierzytelnianie zostało wyłączone, jeśli sprawdzisz kartę Dzienniki w Centrum wdrażania, zobaczysz, że automatyczne wyzwolenie wdrożenia powoduje wystąpienie błędu. Należy zmodyfikować plik przepływu pracy, aby używać jednostki usługi do uwierzytelniania w usłudze App Service. Aby uzyskać przykładowe przepływy pracy, zobacz Dodawanie pliku przepływu pracy do repozytorium GitHub.
Otwórz jedno z rozwidlonych repozytoriów GitHub i przejdź do
<repo-name>/.github/workflows/
katalogu.Wybierz automatycznie wygenerowany plik przepływu pracy, a następnie wybierz przycisk "ołówek" w prawym górnym rogu, aby edytować plik. Zastąp zawartość następującym tekstem, który zakłada, że utworzono wcześniej wpisy tajne usługi GitHub dla poświadczeń. Zaktualizuj symbol zastępczy w
<web-app-name>
sekcji "env", a następnie zatwierdź bezpośrednio w gałęzi głównej. To zatwierdzenie wyzwala akcję usługi GitHub w celu ponownego uruchomienia i wdrożenia kodu, tym razem przy użyciu jednostki usługi do uwierzytelniania.name: Build and deploy Node.js app to Azure Web App on: push: branches: - main workflow_dispatch: env: AZURE_WEBAPP_NAME: <web-app-name> # set this to your application's name NODE_VERSION: '18.x' # set this to the node version to use AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Node.js version uses: actions/setup-node@v1 with: node-version: ${{ env.NODE_VERSION }} - name: npm install, build run: | npm install npm run build --if-present - name: Upload artifact for deployment job uses: actions/upload-artifact@v2 with: name: node-app path: . deploy: runs-on: ubuntu-latest needs: build environment: url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} steps: - name: Download artifact from build job uses: actions/download-artifact@v2 with: name: node-app - uses: azure/login@v1 with: creds: | { "clientId": "${{ secrets.AZURE_APP_ID }}", "clientSecret": "${{ secrets.AZURE_PASSWORD }}", "subscriptionId": "${{ secrets.AZURE_SUBSCRIPTION_ID }}", "tenantId": "${{ secrets.AZURE_TENANT_ID }}" } - name: 'Deploy to Azure Web App' id: deploy-to-webapp uses: azure/webapps-deploy@v2 with: app-name: ${{ env.AZURE_WEBAPP_NAME }} package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }} - name: logout run: | az logout
Powtórz ten proces dla pliku przepływu pracy w innym rozwidlonym repozytorium GitHub.
Nowe zatwierdzenia usługi GitHub wyzwalają kolejne wdrożenie dla każdej aplikacji. Tym razem wdrożenie powinno zakończyć się pomyślnie, ponieważ przepływ pracy używa jednostki usługi do uwierzytelniania w witrynach SCM aplikacji.
Aby uzyskać szczegółowe wskazówki dotyczące konfigurowania ciągłego wdrażania z dostawcami, takimi jak GitHub Actions, zobacz Ciągłe wdrażanie w usłudze aplikacja systemu Azure Service.
8. Weryfikowanie połączeń i dostępu do aplikacji
Przejdź do aplikacji internetowej frontonu przy użyciu adresu URL:
https://<frontend-app-name>.azurewebsites.net
.W polu tekstowym wprowadź adres URL aplikacji internetowej zaplecza:
https://<backend-app-name>.azurewebsites.net
. W przypadku prawidłowego skonfigurowania połączeń powinien zostać wyświetlony komunikat "Hello from the backend web app!", który jest całą zawartością aplikacji internetowej zaplecza. Cały ruch wychodzący z aplikacji internetowej frontonu jest kierowany przez sieć wirtualną. Aplikacja internetowa frontonu bezpiecznie łączy się z aplikacją internetową zaplecza za pośrednictwem prywatnego punktu końcowego. Jeśli coś jest nie tak z połączeniami, aplikacja internetowa frontonu ulega awarii.Spróbuj przejść bezpośrednio do aplikacji internetowej zaplecza przy użyciu adresu URL:
https://<backend-app-name>.azurewebsites.net
. Powinien zostać wyświetlony komunikatWeb App - Unavailable
. Jeśli możesz uzyskać dostęp do aplikacji, upewnij się, że skonfigurowano prywatny punkt końcowy i że ograniczenia dostępu dla aplikacji są ustawione tak, aby nie zezwalały na cały ruch dla głównej aplikacji internetowej.Aby jeszcze bardziej sprawdzić, czy aplikacja internetowa frontonu dociera do aplikacji internetowej zaplecza za pośrednictwem linku prywatnego, połącz się za pośrednictwem protokołu SSH z jednym z wystąpień frontonu. Na potrzeby protokołu SSH uruchom następujące polecenie, które ustanawia sesję SSH w kontenerze internetowym aplikacji i otwiera zdalną powłokę w przeglądarce.
az webapp ssh --resource-group $groupName --name <frontend-app-name>
Po otwarciu powłoki w przeglądarce uruchom polecenie
nslookup
, aby potwierdzić, że aplikacja internetowa zaplecza jest osiągana przy użyciu prywatnego adresu IP aplikacji internetowej zaplecza. Możesz również uruchomić poleceniecurl
, aby ponownie zweryfikować zawartość witryny. Zastąp<backend-app-name>
ciąg nazwą aplikacji internetowej zaplecza.nslookup <backend-app-name>.azurewebsites.net curl https://<backend-app-name>.azurewebsites.net
Element
nslookup
powinien zostać rozpoznany jako prywatny adres IP aplikacji internetowej zaplecza. Prywatny adres IP powinien być adresem z sieci wirtualnej. Aby potwierdzić prywatny adres IP, przejdź do strony Sieć aplikacji internetowej zaplecza.Powtórz te same
nslookup
polecenia icurl
z innego terminalu (taki, który nie jest sesją SSH w wystąpieniach frontonu).Funkcja
nslookup
zwraca publiczny adres IP aplikacji internetowej zaplecza. Ponieważ publiczny dostęp do aplikacji internetowej zaplecza jest wyłączony, jeśli spróbujesz uzyskać publiczny adres IP, zostanie wyświetlony błąd odmowy dostępu. Ten błąd oznacza, że ta witryna nie jest dostępna z publicznego Internetu, co jest zamierzonym zachowaniem. Nienslookup
jest rozpoznawany jako prywatny adres IP, ponieważ można go rozpoznać tylko z sieci wirtualnej za pośrednictwem prywatnej strefy DNS. Tylko aplikacja internetowa frontonu znajduje się w sieci wirtualnej. Jeśli spróbujesz uruchomićcurl
aplikację internetową zaplecza z terminalu zewnętrznego, zwracany kod HTML zawieraWeb App - Unavailable
element . Ten błąd wyświetla kod HTML strony błędu, która była wyświetlana wcześniej podczas próby przechodzenia do aplikacji internetowej zaplecza w przeglądarce.
9. Czyszczenie zasobów
W poprzednich krokach utworzono zasoby platformy Azure w grupie zasobów. Jeśli te zasoby nie będą raczej potrzebne w przyszłości, usuń grupę zasobów, uruchamiając następujące polecenie w usłudze Cloud Shell.
az group delete --name myresourcegroup
Wykonanie tego polecenia może potrwać kilka minut.
Często zadawane pytania
- Czy istnieje alternatywa dla wdrożenia przy użyciu jednostki usługi?
- Co się stanie po skonfigurowaniu wdrożenia funkcji GitHub Actions w usłudze App Service?
- Czy bezpieczne jest pozostawienie publicznie dostępnego zaplecza SCM?
- Czy istnieje sposób wdrożenia bez otwierania lokacji SCM zaplecza?
- Jak wdrożyć tę architekturę za pomocą usługi ARM/Bicep?
Czy istnieje alternatywa dla wdrożenia przy użyciu jednostki usługi?
Ponieważ w tym samouczku wyłączono uwierzytelnianie podstawowe, nie można uwierzytelniać się w witrynie SCM zaplecza przy użyciu nazwy użytkownika i hasła, a nie możesz też mieć profilu publikowania. Zamiast jednostki usługi można również użyć Połączenie OpenID.
Co się stanie po skonfigurowaniu wdrożenia funkcji GitHub Actions w usłudze App Service?
Platforma Azure automatycznie generuje plik przepływu pracy w repozytorium. Nowe zatwierdzenia w wybranym repozytorium i gałęzi są teraz wdrażane w sposób ciągły w aplikacji usługi App Service. Zatwierdzenia i wdrożenia można śledzić na karcie Dzienniki .
Domyślny plik przepływu pracy, który używa profilu publikowania do uwierzytelniania w usłudze App Service, jest dodawany do repozytorium GitHub. Ten plik można wyświetlić, przechodząc do <repo-name>/.github/workflows/
katalogu.
Czy bezpieczne jest pozostawienie publicznie dostępnego zaplecza SCM?
Po zablokowaniu dostępu ftp i SCM zapewnia, że tylko podmioty zabezpieczeń wspierane przez firmę Microsoft Mogą uzyskiwać dostęp do punktu końcowego SCM, mimo że jest on publicznie dostępny. To ustawienie powinno uspokoić, że aplikacja internetowa zaplecza jest nadal bezpieczna.
Czy istnieje sposób wdrożenia bez otwierania lokacji SCM zaplecza?
Jeśli interesuje Cię włączanie publicznego dostępu do witryny SCM lub zasady są ograniczone przez zasady, rozważ inne opcje wdrażania usługi App Service, takie jak uruchamianie z pakietu ZIP.
Jak wdrożyć tę architekturę za pomocą usługi ARM/Bicep?
Zasoby utworzone w tym samouczku można wdrożyć przy użyciu szablonu ARM/Bicep. Aplikacja połączona z szablonem aplikacji internetowej zaplecza Bicep umożliwia utworzenie bezpiecznego rozwiązania aplikacji N-warstwowej.
Aby dowiedzieć się, jak wdrażać szablony usługi ARM/Bicep, zobacz How to deploy resources with Bicep and Azure CLI (Jak wdrażać zasoby przy użyciu interfejsu wiersza polecenia platformy Azure i aplikacji Bicep).