Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services
Erfahren Sie, wie Sie Skripts verwenden, um Azure Resource Manager-Dienstverbindungen mit Workload-Identität in Azure Pipelines zu erstellen. Skripts sorgen für Konsistenz, Effizienz und Wiederholbarkeit beim Einrichten von Dienstverbindungen, wodurch das Risiko eines menschlichen Fehlers verringert wird. Sie sparen Zeit, insbesondere beim Erstellen mehrerer Verbindungen oder beim Bereitstellen in verschiedenen Umgebungen. Diese Skripts können auch in einen Automatisierungsprozess integriert werden, um große Bereitstellungen zu skalieren und besser zu verwalten.
Die Verwendung von Skripts als Teil eines Automatisierungsprozesses hilft beim Erzwingen von Sicherheitsrichtlinien und Complianceanforderungen, indem sichergestellt wird, dass Dienstverbindungen die richtigen Berechtigungen und Konfigurationen verwenden. Sie dient auch als Dokumentation für den Einrichtungsprozess.
Voraussetzungen
Produkt | Anforderungen |
---|---|
Azure DevOps | – Eine Azure DevOps-Organisation und ein Projekt. Erstellen Sie ein organization oder ein Projekt, falls noch nicht geschehen. |
Azurblau | Ein Azure-Abonnement. Berechtigungen: – Um eine Rollenzuweisung in Azure zu erstellen: Sie müssen über Administrator - oder rollenbasierte Zugriffssteuerungsadministratorberechtigungen oder höher verfügen. Mit diesen Rollen können Sie den Zugriff verwalten und Rollen zuweisen, die zum Erstellen von Identitäten erforderlich sind. Weitere Informationen finden Sie unter Integrierte Azure-Rollen. |
Entra |
Berechtigungen: – Um eine App-Registrierung in Microsoft Entra zu erstellen: Die App-Registrierungsdelegierung sollte aktiviert sein, oder Sie sollten über die Rolle "Anwendungsentwickler" verfügen. Weitere Informationen finden Sie unter Integrierte Rollen in Microsoft Entra. Anstatt eine App-Registrierung in Entra zu erstellen, können Sie auch eine verwaltete Identität in Azure erstellen. |
Prozess
Zwänge
- In der Automatisierung sollte
"creationMode": "Manual"
verwendet werden, wenn Dienstverbindungen erstellt werden, die eine Microsoft Entra-Identität benötigen. Erhebliche Microsoft Entra-Berechtigungen wären erforderlich, damit Azure DevOps alle Objekte im Namen des Aufrufers erstellt, daher unterstützt Azure DevOps die Verwendung"creationMode": "Automatic"
für Nicht-Benutzerprinzipale nicht. Stattdessen sollte die End-to-End-Automatisierung jedes Objekt (Identität, Dienstverbindung, Anmeldeinformationen, Rollenzuweisung) einzeln erstellen. - Der Workload-Identitätsverbund definiert eine bidirektionale Beziehung zwischen Identität und Dienstverbindung. Daher müssen Objekte in einer bestimmten Reihenfolge erstellt werden, und die Verbundanmeldeinformationen können nur erstellt werden, nachdem die Dienstverbindung erstellt wurde.
Befehlsausführungsreihenfolge
Diese Tabelle enthält eine Übersicht über die wichtigsten Eigenschaften, die zwischen den Erstellungsbefehlen der einzelnen Objekte ausgetauscht werden. Abhängigkeiten von der Ausgabe bestimmen die Reihenfolge der Ausführung.
Schritt | Eingabe | Ausgabe |
---|---|---|
Erstellen einer Identität in Microsoft Entra oder Azure | tenantId |
appId , principalId |
Erstellen einer Dienstverbindung in Azure DevOps | appId |
workloadIdentityFederationIssuer , workloadIdentityFederationSubject |
Erstellen von Verbundanmeldeinformationen in Microsoft Entra oder Azure |
appId , workloadIdentityFederationIssuer workloadIdentityFederationSubject |
|
Erstellen einer Rollenzuweisung in Azure | principalId |
1. Anmelden mit Azure CLI
Die folgenden Befehle verwenden die Azure CLI. Melden Sie sich beim beabsichtigten Mandanten an:
az login --tenant TENANT_ID
Erfahren Sie mehr über die Authentifizierung bei Azure mithilfe der Azure CLI.
2. Identität erstellen
Erstellen Sie eine Identität mithilfe der verwalteten Identität oder einer App-Registrierung.
Erstellen Sie eine verwaltete Identität mit az identity create
.
az identity create --name MyIdentity --resource-group MyResourceGroup --query '{clientId:clientId,principalId:principalId}'
Beispielausgabe:
{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222"
}
Eine verwaltete Identität erstellt einen Dienstprinzipal in Microsoft Entra. Die Objekt-ID des Dienstprinzipals wird auch genannt principalId
. Verwenden Sie den Dienstprinzipal später, um RBAC-Rollen zuzuweisen. Dies appId
wird verwendet, um die Dienstverbindung in Azure DevOps zu erstellen.
Erfahren Sie mehr in az Identity Create.
3. Erstellen einer Dienstverbindung
In diesem Beispiel wird die Azure DevOps Azure CLI-Erweiterung und eine Konfigurationsdatei verwendet, um die Dienstverbindung zu erstellen. Dadurch wird die identität konfiguriert, die in einer neuen Azure-Dienstverbindung erstellt wurde. Der servicePrincipalId
Autorisierungsparameter wird mit der appId
Identität aufgefüllt.
Sie benötigen ein appId
, das Sie als Eingabe verwenden.
Der erste Codeausschnitt ist eine Konfigurationsdatei. 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
automatisiert das Erstellen einer Dienstverbindung in Azure DevOps mithilfe von ServiceConnectionGeneric.json
. Die Ausgabe enthält Autorisierungsparameter, die Sie in zukünftigen Schritten verwenden werden.
Beispielausgabe:
{
"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>"
}
Weitere Informationen zu diesem Befehl finden Sie unter Azure DevOps CLI-Dienstendpunkt.
4. Erstellen einer Verbundidentitätsanmeldeinformation
Erstellen Sie die föderierten Anmeldeinformationen mithilfe der workloadIdentityFederationIssuer
und workloadIdentityFederationSubject
Ausgabe aus dem Schritt "Dienstverbindung erstellen".
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
verknüpft eine föderierte Identitätsberechtigung mit einer verwalteten Identität, sodass die verwaltete Identität mithilfe des bereitgestellten Subject-Anspruchs mit Microsoft Entra ID authentifiziert werden kann.
Tipp
Fügen Sie am Ende aller Zeilen, die den Befehl nicht abschließen, ein Zeilenfortsetzungszeichen (Bash: umgekehrter Schrägstrich, PowerShell: Backquote) hinzu.
Die verwaltete Identität muss nicht im selben Abonnement erstellt werden, in dem ihr Zugriff im Schritt „Rollenzuweisung erstellen“ gewährt wird.
Weitere Informationen zu diesem Befehl finden Sie unter az identity federated-credential create.
5. Rollenzuweisung erstellen
Fügen Sie Ihrer verwalteten Identität oder Anwendungsregistrierung eine Rollenzuweisung mit az role assignment create
hinzu. Verfügbare Rollen finden Sie in den integrierten Azure-Rollen. Die der Rolle zugewiesene Partei ist der Dienstprinzipal, der mit der App-Registrierung oder der verwalteten Identität verbunden ist. Ein Dienstprinzipal wird durch seine ID identifiziert, die auch genannt principalId
wird. Das principalId
befindet sich in der Ausgabe des Befehls "Identität erstellen".
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
Der Befehl weist einem Dienstprinzipal auf Abonnementebene die Rolle "Mitwirkender" zu. Dadurch kann der Dienstprinzipal Ressourcen innerhalb des angegebenen Abonnements verwalten.
Weitere Informationen zu diesem Befehl finden Sie unter az role assignment create.