Rollbaserad åtkomstkontroll för DevOps-verktyg

När du distribuerar molnbaserade lösningar för dina infrastrukturdistributioner bör säkerhet alltid vara ditt viktigaste problem. Microsoft skyddar den underliggande molninfrastrukturen. Du konfigurerar säkerhet i Azure DevOps eller GitHub.

Förutsättningar

När du har bestämt vilka Azure Landing Zone-mallar som ska distribueras klonar du dem till din egen lagringsplats. Konfigurera CI/CD-pipelines. För både GitHub och Azure DevOps finns det flera tillgängliga autentiseringsmetoder, till exempel personliga åtkomsttoken (PAT) och integrering med en identitetsprovider, till exempel Microsoft Entra-ID. Mer information finns i Använda personliga åtkomsttoken.

Vi rekommenderar att du integrerar med Microsoft Entra ID för att använda alla dess funktioner. Integrering hjälper dig att effektivisera din rolltilldelningsprocess och livscykelhantering för identiteter. Mer information finns i Anslut din organisation till Microsoft Entra-ID. Om du använder GitHub kan du överväga att integrera GitHub Enterprise med Microsoft Entra-ID.

Allmänna designöverväganden

Vi rekommenderar att du har noggrann kontroll över administratörer och tjänstkontogrupper i Microsoft Entra ID och ditt DevOps-verktyg. Överväg att implementera principen om minsta behörighet för alla dina rolltilldelningar.

Din organisation kan till exempel ha ett plattforms- eller cloud excellence-team som underhåller Azure Resource Manager-mallar för dina Azure-landningszoner. Tilldela användare i teamet till en säkerhetsgrupp i Microsoft Entra-ID, förutsatt att du använder den som identitetsprovider. Tilldela roller till den säkerhetsgruppen i ditt DevOps-verktyg så att dessa användare kan utföra sina jobb.

För administratörskonton eller konton med hög behörighet i Active Directory rekommenderar vi att autentiseringsuppgifterna inte synkroniseras med Microsoft Entra-ID och vice versa. Den här metoden minskar hotet om lateral förflyttning. Om en administratör i Microsoft Entra-ID komprometteras kan angriparen inte enkelt få åtkomst till några molntillgångar, till exempel Azure DevOps. Det kontot kan inte potentiellt mata in skadliga uppgifter i CI/CD-pipelines. Det här steget är särskilt viktigt för alla användare som har tilldelats utökade behörigheter i din DevOps-miljö, till exempel Bygg- eller Projekt-/samlingsadministratörer. Mer information finns i Metodtips för säkerhet i Microsoft Entra-ID.

Rollbaserade åtkomstöverväganden för Azure DevOps

Hantera säkerhet i Azure DevOps med säkerhetsgrupper, principer och inställningar på organisations-, projekt- eller objektnivå. Om du vill integrera med en identitetsprovider, till exempel Microsoft Entra-ID, bör du överväga att skapa principer för villkorlig åtkomst för att framtvinga multifaktorautentisering för alla användare. Principerna ger åtkomst till din Azure DevOps-organisation och mer detaljerade begränsningar kring IP-adress, typ av enhet som används för åtkomst och enhetsefterlevnad.

För de flesta teammedlemmar i ditt plattformsteam som hanterar dina Azure-landningszoner bör standardsäkerhetsgruppen Grundläggande åtkomstnivå och Deltagare ge tillräcklig åtkomst. Med säkerhetsgruppen Deltagare kan de redigera Azure Landing Zone-mallarna på lagringsplatsen och CI/CD-pipelines som verifierar och distribuerar dem.

Vi rekommenderar att du tilldelar ditt plattformsteam till säkerhetsgruppen Deltagare på projektnivå i Azure DevOps. Den här metoden följer principen om lägsta behörighet. Dessa tilldelningar kan göras via sidan Project Inställningar som visas nedan.

Screenshot showing the project settings page where assignments can be made.

En annan bra metod för dina Azure DevOps-projekt och -organisationer är att inaktivera arv där det är möjligt. Användare ärver behörigheter som tillåts av deras säkerhetsgrupptilldelningar. På grund av arv som tillåts som standard kan oväntade användare få åtkomst eller behörigheter.

Om du till exempel tilldelar ditt plattformsteam medlemskap i säkerhetsgruppen Deltagare kontrollerar du deras behörigheter på Azure Landing Zones-lagringsplatsen. Du bör ha förgreningsprinciper på plats för att kontrollera att säkerhetsgruppen inte tillåts kringgå dessa principer under pull-begäranden. Kontrollera den här inställningen under Project Inställningar> Databaser.

När du har tilldelat behörigheter till användare granskar du regelbundet granskningshändelser för att övervaka och reagera på oväntade användningsmönster av administratörer och andra användare. Börja med att skapa en granskningsström till en Log Analytics-arbetsyta. Om din arbetsyta använder Microsoft Sentinel skapar du analysregler för att varna dig om viktiga händelser, till exempel felaktig användning av behörigheter.

Mer information finns i följande resurser:

Rollbaserade åtkomstöverväganden för GitHub

Om ditt primära DevOps-verktyg är GitHub kan du tilldela användare åtkomst till resurser genom att ge dem roller på lagringsplatsnivå, teamnivå eller organisationsnivå. När du har förgrenat Lagringsplatsen för Azure-landningszoner och integrerat med en identitetsprovider, till exempel Microsoft Entra-ID, bör du överväga att skapa ett team i GitHub. Tilldela teamet skrivbehörighet till din nya Azure Landing Zone-lagringsplats. För de flesta av dina plattformsteammedlemmar, som ändrar och distribuerar landningszonerna, bör skrivåtkomst vara tillräcklig. För projektledare eller Scrum-chefer i teamet kan du behöva tilldela dem underhållsrollen till den lagringsplatsen.

Vi rekommenderar att du hanterar alla dessa rolltilldelningar via den integrerade identitetsprovidern. Du kan till exempel synkronisera plattformsteamet för den Azure Landing Zone-lagringsplats som du har skapat i GitHub med motsvarande säkerhetsgrupp för plattformsteamet i Microsoft Entra-ID. När du sedan lägger till eller tar bort medlemmar i Microsoft Entra-säkerhetsgruppen återspeglas dessa ändringar i dina GitHub Enterprise Cloud-rolltilldelningar.

Kommentar

När du har anslutit ett specifikt GitHub-team till en integrerad identitetsprovider är du begränsad till att hantera teammedlemskapet via det.

Nästa steg

Mer information om hur du hanterar roller och team i GitHub finns i följande resurser: