Freigeben über


Verwenden Sie Skripts zur Automatisierung von Azure Resource Manager mit Verbindungen zu Workload-Identity-Diensten

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, workloadIdentityFederationIssuerworkloadIdentityFederationSubject
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.