Udostępnij za pośrednictwem


Używanie skryptów do automatyzowania usługi Azure Resource Manager za pomocą połączeń usługi tożsamości obciążenia

Azure DevOps Services

Dowiedz się, jak używać skryptów do tworzenia połączeń usługi Azure Resource Manager z tożsamością obciążenia w usłudze Azure Pipelines. Skrypty zapewniają spójność, wydajność i powtarzalność podczas konfigurowania połączeń usług, co zmniejsza ryzyko wystąpienia błędu ludzkiego. Oszczędzają czas, zwłaszcza podczas tworzenia wielu połączeń lub wdrażania w różnych środowiskach. Te skrypty można również zintegrować z procesem automatyzacji w celu skalowania i lepszego zarządzania dużymi wdrożeniami.

Używanie skryptów w ramach procesu automatyzacji pomaga wymusić zasady zabezpieczeń i wymagania dotyczące zgodności, zapewniając, że połączenia usług korzystają z odpowiednich uprawnień i konfiguracji. Służy również jako dokumentacja procesu instalacji.

Wymagania wstępne

produkt Wymagania
Azure DevOps — Organizacja usługi Azure DevOps i projekt. Utwórz organizację lub projekt , jeśli jeszcze tego nie zrobiłeś.
Błękit Subskrypcja platformy Azure.
Uprawnienia:
     - Aby utworzyć przypisanie roli na platformie Azure: musisz mieć uprawnienia administratora dostępu użytkowników lub administratora kontroli dostępu opartej na rolach lub wyższe. Te role umożliwiają zarządzanie dostępem i przypisywanie ról niezbędnych do tworzenia tożsamości. Aby uzyskać więcej informacji, zobacz Wbudowane role platformy Azure.
Entra Uprawnienia:
     — Aby utworzyć rejestrację aplikacji w usłudze Microsoft Entra: delegowanie rejestracji aplikacji powinno być włączone lub musisz mieć rolę dewelopera aplikacji . Aby uzyskać więcej informacji, zobacz Wbudowane role usługi Microsoft Entra.
Zamiast tworzyć rejestrację aplikacji w usłudze Entra, możesz również utworzyć tożsamość zarządzaną na platformie Azure.

Proces

Ograniczenia

  • W automatyzacji "creationMode": "Manual" należy używać podczas tworzenia połączeń usług, które wymagają tożsamości Microsoft Entra. Aby Azure DevOps utworzyło wszystkie obiekty w imieniu dzwoniącego, wymagane byłyby znaczące uprawnienia Microsoft Entra, dlatego Azure DevOps nie obsługuje używania "creationMode": "Automatic" dla podmiotów niebędących użytkownikami. Zamiast tego kompleksowa automatyzacja powinna utworzyć każdy obiekt (tożsamość, połączenie z usługą, poświadczenia, przypisanie roli) osobno.
  • Federacja tożsamości obciążeń definiuje dwukierunkową relację między tożsamością a połączeniem usługi. W związku z tym obiekty muszą zostać utworzone w określonej kolejności, a poświadczenia federacyjne mogą być utworzone dopiero po nawiązaniu połączenia z usługą.

Kolejność wykonywania poleceń

Ta tabela zawiera omówienie właściwości klucza wymienianych między poleceniami tworzenia każdego obiektu. Zależności od danych wyjściowych określają kolejność wykonywania.

Krok Dane wejściowe Wynik
Tworzenie tożsamości w usłudze Microsoft Entra lub Azure tenantId appId, principalId
Utwórz połączenie z usługą w Azure DevOps appId workloadIdentityFederationIssuer, workloadIdentityFederationSubject
Tworzenie poświadczeń federacyjnych w usłudze Microsoft Entra lub Azure appId, , workloadIdentityFederationIssuerworkloadIdentityFederationSubject
Tworzenie przypisania roli na platformie Azure principalId

Zaloguj się za pomocą Azure CLI

Następujące polecenia używają interfejsu wiersza polecenia platformy Azure. Zaloguj się do docelowego konta:

az login --tenant TENANT_ID

Dowiedz się więcej w temacie Uwierzytelnianie na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.

2. Tworzenie tożsamości

Utwórz tożsamość przy użyciu tożsamości zarządzanej lub rejestracji aplikacji.

Utwórz tożsamość zarządzaną za pomocą polecenia az identity create.

az identity create --name MyIdentity --resource-group MyResourceGroup --query '{clientId:clientId,principalId:principalId}'

Przykładowy wynik:

{
  "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
  "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222"
}

Tożsamość zarządzana tworzy jednostkę usługi w firmie Microsoft Entra. Identyfikator obiektu jednostki usługi jest również nazywany principalId. Użyj jednostki usługi później, aby przypisać role RBAC. Element appId służy do tworzenia połączenia z usługą w usłudze Azure DevOps.

Dowiedz się więcej o az identity create.

3. Tworzenie połączenia z usługą

W tym przykładzie użyto rozszerzenia Azure CLI Azure DevOps oraz pliku konfiguracji, aby utworzyć połączenie z usługą. Spowoduje to skonfigurowanie tożsamości utworzonej w nowym połączeniu usługi platformy Azure. Parametr servicePrincipalId autoryzacji jest wypełniany wartością appId tożsamości.

Musisz użyć elementu appId jako danych wejściowych.

Pierwszy fragment kodu to plik konfiguracji . 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 automatyzuje tworzenie połączenia w Azure DevOps używając ServiceConnectionGeneric.json. Dane wyjściowe zawierają parametry autoryzacji, które będą używane w przyszłych krokach.

Przykładowy wynik:

{
  "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>"
}

Aby uzyskać więcej informacji na temat tego polecenia, zobacz Punkt końcowy usługi CLI Azure DevOps.

4. Tworzenie poświadczeń tożsamości federacyjnej

Utwórz poświadczenie federacyjne, używając wyników workloadIdentityFederationIssuer i workloadIdentityFederationSubject z kroku Utwórz połączenie z usługą.

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 Łączy poświadczenie tożsamości federacyjnej z tożsamością zarządzaną, umożliwiając uwierzytelnienie tożsamości zarządzanej w Microsoft Entra ID przy wykorzystaniu podanego oświadczenia podmiotu.

Wskazówka

Dodaj znak kontynuacji wiersza (w powłoce Bash: ukośnik odwrotny, w programie PowerShell: apostrof odwrotny) na końcu wszystkich wierszy, które nie są zakończeniem polecenia.

Tożsamość zarządzana nie musi być tworzona w tej samej subskrypcji, do której udzielono dostępu w kroku Tworzenie przypisania roli.

Aby uzyskać więcej informacji na temat tego polecenia, zobacz az identity federated-credential create.

5. Tworzenie przypisania roli

Dodaj przypisanie roli do zarządzanej tożsamości lub rejestracji aplikacji przy użyciu az role assignment create. Aby uzyskać dostępne role, zobacz Role wbudowane platformy Azure. Przypisanym do roli jest główny zestaw usługi skojarzonej z rejestracją aplikacji lub tożsamością zarządzaną. Jednostka usługi jest identyfikowana przez jej identyfikator, nazywany również principalId. Element principalId znajduje się w danych wyjściowych polecenia Create identity ( Utwórz tożsamość ).

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 Polecenie przypisuje rolę Współautor do jednostki usługi na poziomie subskrypcji. Dzięki temu jednostka usługi może zarządzać zasobami w ramach określonej subskrypcji.

Aby uzyskać więcej informacji na temat tego polecenia, zobacz az role assignment create.