# Azure DevOps Service Connection - Authentication Type ## 🎯 Aanbeveling voor Jouw Situatie **Voor Zuyderland CMDB GUI met Azure Container Registry:** ### ✅ **Service Principal** (Aanbevolen) ⭐ **Waarom:** - ✅ Werkt altijd en is betrouwbaar - ✅ Meest ondersteunde optie - ✅ Eenvoudig te configureren - ✅ Werkt perfect met Azure Container Registry - ✅ Geen speciale vereisten --- ## 📊 Opties Vergelijking ### Optie 1: **Service Principal** ⭐ **AANBEVOLEN** **Hoe het werkt:** - Azure DevOps maakt automatisch een Service Principal aan in Azure AD - De Service Principal krijgt toegang tot je Azure Container Registry - Azure DevOps gebruikt deze credentials om in te loggen bij ACR **Voordelen:** - ✅ **Eenvoudig** - Azure DevOps doet alles automatisch - ✅ **Betrouwbaar** - Werkt altijd, geen speciale configuratie nodig - ✅ **Veilig** - Credentials worden veilig opgeslagen in Azure DevOps - ✅ **Meest ondersteund** - Standaard optie voor de meeste scenario's - ✅ **Werkt met alle Azure services** - Niet alleen ACR **Nadelen:** - ❌ Maakt een Service Principal aan in Azure AD (maar dit is normaal en veilig) **Wanneer gebruiken:** - ✅ **Jouw situatie** - Azure DevOps Services (cloud) met Azure Container Registry - ✅ De meeste scenario's - ✅ Als je eenvoudige, betrouwbare authenticatie wilt - ✅ Standaard keuze voor nieuwe service connections **Configuratie:** - Azure DevOps doet alles automatisch - Je hoeft alleen je Azure subscription en ACR te selecteren - Azure DevOps maakt de Service Principal aan en geeft deze de juiste permissions --- ### Optie 2: **Managed Service Identity (MSI)** **Hoe het werkt:** - Gebruikt een Managed Identity van Azure DevOps zelf - Geen credentials nodig - Azure beheert alles - Werkt alleen als Azure DevOps een Managed Identity heeft **Voordelen:** - ✅ Geen credentials te beheren - ✅ Automatisch geroteerd door Azure - ✅ Modernere aanpak **Nadelen:** - ❌ **Werkt alleen met Azure DevOps Server (on-premises)** met Managed Identity - ❌ **Werkt NIET met Azure DevOps Services (cloud)** - Dit is belangrijk! - ❌ Vereist speciale configuratie - ❌ Minder flexibel **Wanneer gebruiken:** - ✅ Azure DevOps Server (on-premises) met Managed Identity - ✅ Als je geen credentials wilt beheren - ❌ **NIET voor Azure DevOps Services (cloud)** - Dit werkt niet! **Voor jouw situatie:** ❌ **Niet geschikt** - Je gebruikt Azure DevOps Services (cloud), niet on-premises --- ### Optie 3: **Workload Identity Federation** **Hoe het werkt:** - Modernere manier zonder secrets - Gebruikt federated identity (OIDC) - Azure DevOps krijgt een token van Azure AD zonder credentials op te slaan **Voordelen:** - ✅ Geen secrets opgeslagen - ✅ Modernere, veiligere aanpak - ✅ Automatisch token management **Nadelen:** - ❌ **Nog niet volledig ondersteund** voor alle scenario's - ❌ Kan complexer zijn om te configureren - ❌ Vereist specifieke Azure AD configuratie - ❌ Mogelijk niet beschikbaar in alle Azure DevOps organisaties **Wanneer gebruiken:** - ✅ Als je de modernste security features wilt - ✅ Als je organisatie Workload Identity Federation ondersteunt - ✅ Voor nieuwe projecten waar je geen legacy support nodig hebt - ❌ **Niet aanbevolen als je eenvoudige setup wilt** **Voor jouw situatie:** ⚠️ **Mogelijk beschikbaar, maar Service Principal is eenvoudiger** --- ## 🔍 Jouw Situatie Analyse **Jouw setup:** - ✅ Azure DevOps Services (cloud) - `dev.azure.com` - ✅ Azure Container Registry - `zdlas.azurecr.io` - ✅ Eenvoudige setup gewenst - ✅ Betrouwbare authenticatie nodig **Conclusie:** ✅ **Service Principal is perfect!** **Waarom niet de andere opties:** - ❌ **Managed Service Identity**: Werkt niet met Azure DevOps Services (cloud) - ⚠️ **Workload Identity Federation**: Mogelijk beschikbaar, maar complexer dan nodig --- ## 📋 Checklist: Welke Keuze? ### Kies **Service Principal** als: - [x] Je Azure DevOps Services (cloud) gebruikt ✅ - [x] Je eenvoudige setup wilt ✅ - [x] Je betrouwbare authenticatie nodig hebt ✅ - [x] Je standaard, goed ondersteunde optie wilt ✅ - [x] Je Azure Container Registry gebruikt ✅ **→ Jouw situatie: ✅ Kies Service Principal!** ### Kies **Managed Service Identity** als: - [ ] Je Azure DevOps Server (on-premises) gebruikt - [ ] Je Managed Identity hebt geconfigureerd - [ ] Je geen credentials wilt beheren **→ Jouw situatie: ❌ Niet geschikt** ### Kies **Workload Identity Federation** als: - [ ] Je de modernste security features wilt - [ ] Je organisatie dit ondersteunt - [ ] Je geen legacy support nodig hebt - [ ] Je bereid bent om extra configuratie te doen **→ Jouw situatie: ⚠️ Mogelijk, maar niet nodig** --- ## 🔧 Configuratie Stappen (Service Principal) Wanneer je **Service Principal** kiest: 1. **Selecteer Azure Subscription** - Kies je Azure subscription uit de dropdown 2. **Selecteer Azure Container Registry** - Kies je ACR (`zdlas`) uit de dropdown 3. **Service Connection Name** - Vul in: `zuyderland-cmdb-acr-connection` - ⚠️ **Belangrijk**: Deze naam moet overeenkomen met `dockerRegistryServiceConnection` in `azure-pipelines.yml`! 4. **Security** - Azure DevOps maakt automatisch een Service Principal aan - De Service Principal krijgt automatisch de juiste permissions (AcrPush role) - Credentials worden veilig opgeslagen in Azure DevOps 5. **Save** - Klik "Save" of "Verify and save" - Azure DevOps test automatisch de connection **✅ Klaar!** Geen extra configuratie nodig. --- ## 🔄 Kan Ik Later Wisselen? **Ja, maar:** - Je kunt altijd een nieuwe service connection aanmaken met een ander authentication type - Je moet dan wel de pipeline variabelen aanpassen - Service Principal is meestal de beste keuze, dus wisselen is meestal niet nodig --- ## 💡 Mijn Aanbeveling **Voor Zuyderland CMDB GUI:** ### ✅ **Kies Service Principal** ⭐ **Waarom:** 1. ✅ **Werkt perfect** - Standaard optie voor Azure DevOps Services 2. ✅ **Eenvoudig** - Azure DevOps doet alles automatisch 3. ✅ **Betrouwbaar** - Meest geteste en ondersteunde optie 4. ✅ **Veilig** - Credentials worden veilig beheerd door Azure DevOps 5. ✅ **Perfect voor jouw situatie** - Cloud Azure DevOps + Azure Container Registry **Je hebt niet nodig:** - ❌ Managed Service Identity (werkt niet met cloud Azure DevOps) - ❌ Workload Identity Federation (complexer dan nodig) **Setup:** 1. Kies **Service Principal** 2. Selecteer je subscription en ACR 3. Geef een naam: `zuyderland-cmdb-acr-connection` 4. Save **Klaar!** ✅ --- ## 📚 Meer Informatie - [Azure DevOps Service Connections](https://learn.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints) - [Service Principal Authentication](https://learn.microsoft.com/en-us/azure/devops/pipelines/library/connect-to-azure) - [Managed Service Identity](https://learn.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/) - [Workload Identity Federation](https://learn.microsoft.com/en-us/azure/devops/pipelines/library/connect-to-azure?view=azure-devops#workload-identity-federation) --- ## 🎯 Conclusie **Kies: Service Principal** ⭐ Dit is de beste keuze voor: - ✅ Azure DevOps Services (cloud) - ✅ Azure Container Registry - ✅ Eenvoudige, betrouwbare setup - ✅ Standaard, goed ondersteunde optie Je kunt altijd later een andere optie proberen als je dat wilt, maar Service Principal is meestal de beste keuze.