Vereisten¶
Deze pagina somt op wat aanwezig moet zijn voordat het portaal in een omgeving kan worden uitgerold. Ze is geschreven voor het platformteam en voor de mensen die elk onderdeel aan de kant van de klant invullen. In het zelfbeheerde beheermodel vult het platformteam alle onderdelen zelf in. Zie Beheermodellen.
Dit is een referentieontwerp: bevestig de waarden bij de engineer die uitrolt, want jouw omgeving kan afwijken. Onderdelen met (voor: functie) zijn alleen nodig als die functie binnen scope valt.
Samenvatting¶
| Gebied | Onderdeel |
|---|---|
| Azure | Twee subscriptions (non-productie en productie), een deployment identity met Owner op elk |
| Netwerk | VNet en subnets per omgeving, uitgaand HTTPS naar het Azure control plane en Microsoft Graph |
| Identiteit | Entra app registration per omgeving, Graph application permissions voor de managed identity |
| Toegang | Reader-rollen voor de managed identity van het portaal |
| Repositories | Leestoegang tot repositories die worden ingelezen, contribute-toegang op de configuratierepositories |
| Providers | Resource providers geregistreerd waar AI Foundry of kostenexports worden gebruikt |
| Optioneel | DNS-zone en certificaat, WAF, GitHub App, private module registry |
Azure-subscriptions en deployment identity¶
- Twee Azure-subscriptions, één voor de non-productie- en één voor de productieomgeving.
- Een deployment service principal voor elke subscription met de rol
Owner. Federated credentials hebben de voorkeur boven client secrets (Uitrol en omgevingen). - (voor: AI-agents) Deze resource providers geregistreerd op de subscription die AI Foundry host:
Microsoft.App,Microsoft.ContainerService,Microsoft.CognitiveServices,Microsoft.KeyVault,Microsoft.Network,Microsoft.Search,Microsoft.Storage. De Terraform-module voor Foundry registreert ook resource providers. Zie AI-setup. - (voor: cost insights)
Microsoft.CostManagementgeregistreerd op elke subscription die binnen scope valt. Het portaal registreert geen providers. Zonder registratie slaat het die subscription over en probeert het bij de volgende run opnieuw.
az provider register --namespace Microsoft.CostManagement --subscription <subscription-id>
Netwerk¶
Maak één virtual network per omgeving en regio, met een niet-overlappend adresbereik. In een managed platform is dit een spoke (Spoke canvas).
| Subnet | Voorbeeldbereik | Doel |
|---|---|---|
| default | 10.x.x.0/26 |
Private endpoints, bijvoorbeeld storage en key vault |
| app service (gedelegeerd) | 10.x.x.64/26 |
VNet-integratie van de webapp |
agents (gedelegeerd aan Microsoft.App/environments) |
10.x.x.128/27 |
Alleen voor AI-agents die bring-your-own Foundry-resources gebruiken |
| PostgreSQL (gedelegeerd) | 10.x.x.160/28 |
PostgreSQL Flexible Server |
Regels:
- Houd de doelen gescheiden. Zet webapp-integratie en PostgreSQL niet in hetzelfde subnet.
- Een Container Apps-omgeving met workload profiles heeft een eigen gedelegeerd subnet van minimaal
/27nodig. - Reserveer vrije adresruimte voor groei en voor netwerkcontroles die de klant eist.
- In een hub-and-spoke-netwerk moeten routes en firewallregels het webapp-subnet toestaan om te bereiken:
- uitgaand HTTPS naar de service tags
AzureResourceManager,AzureActiveDirectoryenAzureMonitor - uitgaand HTTPS naar
graph.microsoft.com
- uitgaand HTTPS naar de service tags
Subnetnamen verschillen per bron
De referentie-Terraform noemt zijn subnets default, appsvc, postgresql en containerapp. De leesbare handleiding gebruikt andere namen. Gebruik de namen die jouw Terraform verwacht en controleer ze met de engineer.
Roltoewijzingen voor de managed identity van het portaal¶
Geef de managed identity van het portaal na de eerste uitrol leestoegang tot de Azure-omgeving. De onderstaande scopes gaan uit van een hiërarchie van management groups volgens het Cloud Adoption Framework. Smallere scopes zijn mogelijk.
| Rol | Scope | Waarom |
|---|---|---|
| Reader | Management group Landing zones (of de groep met de workloads die moeten worden ingelezen) | Ontdekt subscriptions en resources, en de groeperingen van workload, team, domein en organisatie die uit tags worden afgeleid. Nieuwe subscriptions onder de scope worden automatisch opgepikt. |
| Reader | Scope met de Azure Firewall-resources | Ontdekt firewalls waarvan het portaal de logs bevraagt |
| Monitoring Reader | Zelfde scope als de vorige rij | Log Analytics-queries voor firewalls |
| Reader | Scope met de Application Gateways | Ontdekt gateways |
| Monitoring Reader | Zelfde scope als de vorige rij | Log Analytics-queries voor gateways |
| Cost Management Contributor (voor: cost insights) | Management group Landing zones, of de scope met de subscriptions binnen scope | Maakt per subscription een Cost Management-export aan en voert die uit |
De Terraform-modules wijzen ook rollen toe aan de identities van het portaal voor de eigen resources van de omgeving (Key Vault secrets user, registry pull, storage-rollen voor kostenexport).
Entra app registration¶
Maak één app registration per omgeving (bijvoorbeeld acceptatie en productie).
| Onderdeel | Waarde |
|---|---|
| Delegated Graph permissions | email, offline_access, openid, profile, User.Read, met admin consent |
| Redirect URI | https://<portal-domain>/api/auth/microsoft/handler/frame |
Kies hoe het secret en de redirect URI worden beheerd:
- Aanbevolen: maak de deployment service principal eigenaar van de app registration en de bijbehorende enterprise application, en geef hem de Graph application permission
Application.Read.All. De deployment roteert dan het secret en voegt redirect URI's automatisch toe. - Alternatief: maak het client secret handmatig aan en voeg de redirect URI zelf toe.
Na de eerste uitrol verleent een Entra-beheerder de managed identity van het portaal deze Graph application permissions met admin consent, zodat de catalog gebruikers en groepen kan inlezen:
User.Read.AllGroupMember.Read.All
Lever een script aan
Deze stap vereist beheerrechten in de tenant. Geef de Entra-beheerder een script in plaats van een lijst.
Repositories¶
- Leestoegang voor de identity van het portaal op de Azure DevOps-repositories waarvan de
catalog-info.yaml-bestanden moeten worden ingelezen. - Contribute-toegang op de configuratierepositories die agents wijzigen (spoke- en integratieconfiguratie). De toegang moet het lezen van
main, het aanmaken van branches en het openen van pull requests omvatten. De identity heeft ook een Basic-toegangsniveau in de Azure DevOps-organisatie nodig. - (voor: GitHub-integratie) Een GitHub App op organisatie- of enterpriseniveau, met lees- en schrijfrechten op contents en pull requests. Zie Configuratie.
Optionele onderdelen¶
| Onderdeel | Wanneer |
|---|---|
| DNS-zone, CNAME- of A-record en een TLS-certificaat | Eigen domein (WAF en eigen domein) |
| Web Application Firewall voor het portaal | Aanwezig voordat de uitrol begint, als de klant er een wil |
| Resourcetags op workloads, met afgesproken keys | Altijd. De catalog wordt uit tags opgebouwd (Catalog en entiteitenmodel) |
| Private module registry | Module registry |
| Private verbindingen vanuit het netwerk van de leverancier | Wanneer de leverancier vanuit zijn eigen netwerk uitrolt (Een klant onboarden) |
Wie doet wat¶
| Rol | Verantwoordelijkheid |
|---|---|
| Delivery manager (leverancier) | Klantcommunicatie, kick-off, voortgangsbewaking, acceptatie |
| Engineer (leverancier of platformteam van de klant) | Bereidt de omgevingsdefinitie voor, rolt uit, demonstreert bij de overdracht |
| Tweede engineer | Valideert de uitrol, een andere persoon dan degene die heeft uitgerold |
| Solution lead | Beslist of een aanvraag in de gedeelde codebase past |
| Projectmanager van de klant | Enige aanspreekpunt, beheert de vragenlijst, tekent voor acceptatie |
| Cloud platform administrator | Subscriptions, service principals, netwerk, roltoewijzingen |
| Entra-beheerder | App registrations, admin consent, Graph permissions |
| Azure DevOps- en GitHub-beheerder | Repositorytoegang, GitHub App |
| Security contact | Beoordeelt dataresidentie en het toegangsmodel |
| Vertegenwoordiger van developers (optioneel) | Woont de MCP-walkthrough bij |
In het zelfbeheerde model kan één team meerdere van deze rollen vervullen.