Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure DevOps-tjänster
Lär dig hur du använder skript för att skapa Azure Resource Manager-tjänstanslutningar med arbetsbelastningsidentitet i Azure Pipelines. Skript säkerställer konsekvens, effektivitet och repeterbarhet när du konfigurerar tjänstanslutningar, vilket minskar risken för mänskliga fel. De sparar tid, särskilt när du skapar flera anslutningar eller distribuerar till olika miljöer. Dessa skript kan också integreras i en automatiseringsprocess för att skala och bättre hantera stora distributioner.
Genom att använda skript som en del av en automatiseringsprocess kan du framtvinga säkerhetsprinciper och efterlevnadskrav genom att se till att tjänstanslutningar använder rätt behörigheter och konfigurationer. Det fungerar också som dokumentation för installationsprocessen.
Förutsättningar
Produkt | Krav |
---|---|
Azure DevOps | – En Azure DevOps-organisation och ett projekt. Skapa en organisation eller ett projekt om du inte redan har gjort det. |
Blått | En prenumeration för Azure. Behörigheter: – Om du vill skapa en rolltilldelning i Azure måste du ha behörighet som administratör för användaråtkomst eller rollbaserad åtkomstkontroll , eller högre. Med de här rollerna kan du hantera åtkomst och tilldela roller som krävs för att skapa identiteter. Mer information finns i Inbyggda roller i Azure. |
Gå in |
Behörigheter: – Om du vill skapa en appregistrering i Microsoft Entra: Appregistreringsdelegeringen ska vara aktiverad eller så bör du ha rollen Programutvecklare . Mer information finns i Inbyggda roller i Microsoft Entra. I stället för att skapa en appregistrering i Entra kan du också skapa en hanterad identitet i Azure. |
Processen
Begränsningar
- Inom automation bör
"creationMode": "Manual"
användas när du skapar tjänsteanslutningar som behöver en Microsoft Entra-identitet. Betydande Microsoft Entra-privilegier skulle krävas för att Azure DevOps ska skapa alla objekt för anroparens räkning. Därför stöder Inte Azure DevOps användning av"creationMode": "Automatic"
för huvudnamn som inte är användare. I stället bör automatisering från slutpunkt till slutpunkt skapa varje objekt (identitet, tjänstanslutning, autentiseringsuppgifter, rolltilldelning) individuellt. - Federation för arbetsbelastningsidentifiering definierar en dubbelriktad relation mellan identitets- och tjänsteanslutning. Därför måste objekt skapas i en viss ordning och federerade autentiseringsuppgifter kan bara skapas när tjänstanslutningen har skapats.
Kommandokörningsordning
Den här tabellen innehåller en översikt över de nyckelegenskaper som utbyts mellan skapandekommandona för varje objekt. Beroenden av utdata bestämmer utförandeordningen.
Steg | Inmatning | Utgång |
---|---|---|
Skapa identitet i Microsoft Entra eller Azure | tenantId |
appId , principalId |
Skapa tjänstanslutning i Azure DevOps | appId |
workloadIdentityFederationIssuer , workloadIdentityFederationSubject |
Skapa federerade autentiseringsuppgifter i Microsoft Entra eller Azure |
appId
workloadIdentityFederationIssuer
workloadIdentityFederationSubject
|
|
Skapa rolltilldelning i Azure | principalId |
1. Logga in med Azure CLI
Följande kommandon använder Azure CLI. Logga in på den avsedda hyresgästen:
az login --tenant TENANT_ID
Läs mer i Autentisera till Azure med hjälp av Azure CLI.
2. Skapa identitet
Skapa en identitet med hjälp av en hanterad identitet eller en appregistrering.
Skapa en hanterad identitet med az identity create
.
az identity create --name MyIdentity --resource-group MyResourceGroup --query '{clientId:clientId,principalId:principalId}'
Exempel på utdata:
{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222"
}
En hanterad identitet skapar ett huvudnamn för tjänsten i Microsoft Entra. Objekt-ID för tjänstens huvudkonto kallas också principalId
. Använd tjänstens huvudnamn senare för att tilldela RBAC-roller.
appId
Används för att skapa tjänstanslutningen i Azure DevOps.
Läs mer i az identity create.
3. Skapa en tjänstanslutning
I det här exemplet används Azure DevOps Azure CLI-tillägget och en konfigurationsfil för att skapa tjänstanslutningen. Detta konfigurerar identiteten som skapats i en ny Azure-tjänstanslutning. Auktoriseringsparametern servicePrincipalId
fylls i med appId
identitetens.
Du behöver en appId
för att använda som inmatning.
Det första kodfragmentet är en konfigurationsfil, ServiceConnectionGeneric.json
.
{
"data": {
"subscriptionId": "SUBSCRIPTION_ID",
"subscriptionName": "My Azure Subscription",
"environment": "AzureCloud",
"scopeLevel": "Subscription",
"creationMode": "Manual"
},
"name": "MyNewServiceEndpoint",
"type": "AzureRM",
"url": "https://management.azure.com/",
"authorization": {
"parameters": {
"tenantid": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"serviceprincipalid": "00001111-aaaa-2222-bbbb-3333cccc4444"
},
"scheme": "WorkloadIdentityFederation"
},
"isShared": false,
"isReady": true,
"serviceEndpointProjectReferences": [
{
"projectReference": {
"id": "c7e5f0b3-71fa-4429-9fb3-3321963a7c06",
"name": "TestProject"
},
"name": "MyNewServiceEndpoint"
}
]
}
az devops service-endpoint create -service-endpoint-configuration ./ServiceConnectionGeneric.json --query authorization.parameters
az devops service-endpoint create
automatiserar skapandet av en tjänstanslutning i Azure DevOps med .ServiceConnectionGeneric.json
Utdata innehåller auktoriseringsparametrar som du ska använda i framtida steg.
Exempel på utdata:
{
"serviceprincipalid": "00001111-aaaa-2222-bbbb-3333cccc4444",
"tenantid": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"workloadIdentityFederationIssuer": "https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0",
"workloadIdentityFederationIssuerType": "EntraID",
"workloadIdentityFederationSubject": "<federation-subject>"
}
Mer information om det här kommandot finns i Azure DevOps CLI-tjänstslutpunkten.
4. Skapa en federerad identitetsautentiseringsuppgift
Skapa en federerad autentiseringsuppgift med hjälp av workloadIdentityFederationIssuer
och workloadIdentityFederationSubject
utdata från steget Skapa en tjänstanslutning .
az identity federated-credential create --name fic-for-sc
--identity-name MyIdentity
--resource-group MyResourceGroup
--issuer "https://login.microsoftonline.com/TENANT_ID/v2.0"
--subject "<federation-subject>"
--subscription MSI_SUBSCRIPTION_ID
az identity federated-credential create
länkar en federerad identitetsautentiseringsuppgift till en hanterad identitet, vilket gör det möjligt för den hanterade identiteten att autentisera med Microsoft Entra-ID med hjälp av det angivna ämnesanspråket.
Tips/Råd
Lägg till ett radfortsättningstecken (Bash: backslash, PowerShell: backquote) i slutet av alla rader som inte slutför kommandot.
Den hanterade identiteten behöver inte skapas i samma prenumeration som den beviljas åtkomst till i steget Skapa rolltilldelning.
Mer information om det här kommandot finns i az identity federated-credential create.
5. Skapa rolltilldelning
Lägg till en rolltilldelning till din hanterade identitet eller appregistrering med az role assignment create
. För tillgängliga roller, se Inbyggda Roller i Azure. Rollens tilldelare är tjänstens huvudnamn som är associerat med appregistreringen eller den hanterade identiteten. En tjänstehuvudprincip identifieras med sitt ID, även kallat principalId
.
principalId
finns i utdata från kommandot Skapa identitet.
az role assignment create --role Contributor --scope /subscriptions/SUBSCRIPTION_ID --assignee-object-id PRINCIPAL_ID --assignee-principal-type ServicePrincipal
az role assignment create --role Contributor
kommandot tilldelar rollen Deltagare till ett huvudnamn för tjänsten på prenumerationsnivå. På så sätt kan tjänstens huvudnamn hantera resurser i den angivna prenumerationen.
Mer information om det här kommandot finns i az role assignment create.