Aantekeningen App Service
AZ-204: Create Azure App Service web apps
App Service
- Multi-langual (net (core), java, ruby, node.js, php, python)
- Built-in auto scale support (up, down, out, in)
- Up, down: aantal cores of ram
- In, out: meer of minder instances
- Staging deployment slots voor swapping
- Kan native op Linux
- Custom Linux containers
- List mogelijkheden via Cloud Shell:
az webapp list-runtimes --linux - Limitaties:
- Linux niet supporteed in Shared pricing tier
- Windows en Linux niet te mixen in zelfde App Service plan
- Windows en Linux niet in zelfde resource groep
- Maar resource groups aangemaakt op/na 21-01-2021 kunnen dit wel
- Support voor groups vóór deze datum komt eraan
App Service plan
- Set van compute resources waar een web app op runt
- Gebonden aan regio (West US, East US, etc.)
- Beschrijft VM instances
- Beschrijft grootte van VM instances (small, medium, large)
- Pricing tier (free, shared, standard, premium, premiumV2, premiumV3, isolated)
- Bepaalt features die je krijgt
- Shared compute: kan niet ‘out’ scalen
- Dedicated compute: alleen apps in deze plan sharen compute resources
- Isolated: dedicated Azure VMs op dedicated Azure Virtual Networks met maximale scale-out mogelijkheden
- Consumption: voor function apps
- Deployment slots sharen dezelfde VM instances
- Isoleer je App Service plan wanneeer:
- De app resource-intensief is
- De app individueel schaalbaar moet zijn t.o.v. andere apps in het plan
- Behoefte aan resources in een andere geografische regio
- Bepaalt features die je krijgt
Deployment naar App Service
- Automated deployment source:
- Azure DevOps
- GitHub
- Bitbucket
- Manual deployment sources:
- Git: Bij App Service web apps kan je een Git URL instellen. Pushen naar de remote repository zorgt voor deployment van je app
- CLI:
az webapp upkan een nieuwe App Service web app maken als die nog niet bestaat - Zip deploy:
curlof gelijkmatig HTTP-alternatief - FTP(S)
- Deployment slots: Standard App Service Plan of hoger
Authentication & authorization
Explore authentication and authorization in App Service
Ingebouwde authenticatie features
- Niet zelf te hoeven implementeren
- Geen specifieke taal, SDK, security expertise of code nodig
- Integreerbaar met meerdere identity providers (die tegelijk gepresenteerd kunnen worden)
Hoe werkt het?
- Authentication & authorization module runnen in dezelfde sandbox als je applicatie code
- Iedere inkomende HTTP request gaat door deze module heen
- Configureerbaar in app settings
- Module handelt af:
- Authentication van users voor specifieke provider
- Validatie, opslag & refresh van tokens
- Authenticated sessie managen
- Identity informatie injecten in request headers
- Authorization: meerdere behaviors in te stellen voor inkomende unauthenticated requests
- Unauthenticated requests toestaan:
- Zet unauthenticated requests door naar application code met informatie in HTTP headers
- Meer flexibiliteit in afhandeling anonieme requests
- Stelt in staat om meerdere sign-in providers te presenteren aan gebruikers
- Requre authentication:
- Unauthenticated verkeer wordt afgewezen
- Mogelijkheid tot redirecten naar een geconfigureerde identity provider
- Unauthenticated requests vanaf moviel krijgen een
HTTP 401 Unauthorizedof (in te stellen) eenHTTP 403 Forbiddenterug
- Unauthenticated requests toestaan:
Authentication flow stappen
- Authentication flow zonder provider SDK:
- Applicatie delegeert federated sign-in naar de App Service
- Vaak de case bij browser apps die de user de provider’s loginpagina kunnen tonen
- Ook wel server-directed flow of server flow want server code managed het sign-in-proces
- Authentication flow met provider SDK:
- Applicatie signt gebruikers handmatig in bij de provider
- Submit vervolgens token naar App Service voor validatie
- Vaak de case bij browser-less apps die de gebruiker geen loginpagina kunnen tonen
- Ook wel client-directed flow of client flow want de applicatie code managed het sign-in-proces
| Stap | Zonder provider SDK | Met provider SDK |
|---|---|---|
| 1. Gebruiker inloggen | applicatie redirect (automatisch unauthenticated) clients naar /.auth/login/<provider> |
Client code signt user in via provider SDK en krijgt auth token |
| 2. Post-authentication | provider redirect clients naar /.auth/login/<provider>/callback |
Client code post token naar /.auth/login/<provider> ter validatie |
| 3. Authenticated sessie opzetten | App Service voegt authentication cookie toe in response | App service returnt eigen authentication cookie aan client code |
| 4. Serve authentication content | Client includes authentication cookie in requests (automatisch door browser | Client code presenteert authentication cookie in X-ZUMO-AUTH header (automatisch door Mobile Apps client SDKs) |
Networking
Discover App Service networking features
- Standaard
- zijn App Services toegankelijk vanaf het internet
- kunnen App Services alleen internet-gehoste endpoints aanspreken
- 2 hoofd-deployment-types
- Multi-tenant public service: host App Service plans in Free, Shared, Basic, Standard, Premium, PremiumV2 en PremiumV3 SKUs
- Single-tenant App Service Environment (AES): host geisoleerde SKU App Service plans direct in je Azure virual network
Multi-tenant App Service networking features
- Rollen.
- Alle rollen in App Service bestaan in een mutli-tenant network
- Front ends: rollen die inkomende HTTP(s) requests afhandelen
- Workers: rollen die customer workload hosten
- Ipv netwerken connecten, heb je features nodig die applicatie communicatie afhandelen
- (?) Features die requesten afhandelen naar je App Serivce kunnen geen problemen oplossen voor calls vanuit je app
- (?) Andersom ook. Features die problemen oplossen voor calls vanuit je app knunen geen problemen oplossen naar je app
| Inbound features | Outbound features |
|---|---|
| App-assigned address | Hybrid Connections |
| Access restrictions | Gateway-required virtual network integration |
| Service endpoints | Virtual network integration |
| Private endpoints |
Features kunnen gemixt worden (met paar uitzonderingen). Zie voorbeeld over hoe App Service networking features gebruikt kunnen worden om verkeer te controleren inbound naar je app:
| Inbound use case | Feature |
|---|---|
| Support IP-based SSL needs for your app | App-assigned address |
| Support unshared dedicated inbound address for your app | App-assigned address |
| Restrict access to your app from a set of well-defined addresses | Access restrictions |
Default networking gedrag
ToDo