Udostępnij za pośrednictwem


Programowe tworzenie subskrypcji umowy Azure Enterprise Agreement przy użyciu najnowszych interfejsów API

Ten artykuł pomaga w programowym tworzeniu subskrypcji umowy Azure Enterprise Agreement dla konta rozliczeniowego umowy EA przy użyciu najnowszych wersji interfejsu API. Jeśli nadal używasz starszej wersji zapoznawczej, zobacz Programowe tworzenie subskrypcji platformy Azure za pomocą interfejsów API w starszej wersji.

W tym artykule dowiesz się, jak programowo tworzyć subskrypcje za pomocą usługi Azure Resource Manager.

Podczas programowego tworzenia subskrypcji platformy Azure jest ona objęta postanowieniami umowy, w której otrzymujesz usługi platformy Azure od firmy Microsoft lub certyfikowanego sprzedawcy. Aby dowiedzieć się więcej, zobacz informacje prawne dotyczące platformy Microsoft Azure.

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Nie można programowo tworzyć planów pomocy technicznej. Możesz kupić nowy plan pomocy technicznej lub uaktualnić go w witrynie Azure Portal. Przejdź do pozycji Pomoc i wsparcie techniczne, a następnie w górnej części strony wybierz pozycję Wybierz odpowiedni plan pomocy technicznej.

Wymagania wstępne

Aby utworzyć subskrypcję, użytkownik musi mieć rolę administratora przedsiębiorstwa lub właściciela na koncie rejestracji. Istnieją dwa sposoby uzyskiwania roli właściciel na koncie rejestracji:

Aby utworzyć subskrypcję umowy EA za pomocą jednostki usługi, administrator konta rejestracji przyznać jednostce usługi możliwość tworzenia subskrypcji.

Jeśli używasz jednostka usługi do tworzenia subskrypcji, użyj identyfikatora ObjectId aplikacji Microsoft Entra Enterprise jako identyfikatora głównego jednostki usługi przy użyciu programu Microsoft Graph PowerShell lub CLI platformy Azure. Aby znaleźć identyfikator obiektu w witrynie Azure Portal dla istniejącej jednostki usługi i identyfikatorów dzierżawy, możesz również użyć kroków opisanych w artykule Znajdowanie jednostki usługi i identyfikatorów dzierżawy.

Aby uzyskać więcej informacji na temat żądań API przypisywania ról do umowy EA, przejdź do tematu Przypisywanie ról do głównych nazw usługi Azure Enterprise Agreement. Artykuł zawiera listę ról (i identyfikatorów definicji ról), które można przypisać do jednostki usługi.

Uwaga

  • Upewnij się, że używasz prawidłowej wersji interfejsu API, aby nadać uprawnienia właściciela konta rejestracji. Na potrzeby tego artykułu oraz interfejsów API, które opisano w tym artykule, należy użyć interfejsu API w wersji 2019-10-01-preview.
  • Jeśli migrujesz do korzystania z nowszych interfejsów API, poprzednia konfiguracja, utworzona za pomocą wersji 2015-07-01, nie jest automatycznie konwertowana do użycia z nowszymi interfejsami API.
  • Informacje o koncie rejestracji są widoczne tylko wtedy, gdy rola użytkownika jest właścicielem konta. Jeśli użytkownik ma wiele ról, interfejs API używa najmniej restrykcyjnej roli użytkownika.

Odnajdowanie kont, do których masz dostęp

Po dodaniu Cię do konta rejestracji skojarzonego z właścicielem konta platforma Azure na podstawie relacji konto-rejestracja określa, komu wystawić rachunek za opłaty związane z subskrypcją. Wszystkie subskrypcje utworzone w ramach tego konta są rozliczane w ramach rejestracji umowy EA, do której przypisane jest konto. Aby utworzyć subskrypcje, musisz przekazać wartości dotyczące konta rejestracji i jednostki usługi w celu zostania właścicielem subskrypcji.

Aby uruchomić poniższe polecenia, zaloguj się w katalogu macierzystym właściciela konta, czyli katalogu, w którym domyślnie tworzone są subskrypcje.

Wykonaj żądanie wyświetlenia listy wszystkich kont rejestracji, do których masz dostęp:

GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/?api-version=2020-05-01

Odpowiedź interfejsu API będzie zawierała listę wszystkich kont rejestracji, do których masz dostęp:

{
  "value": [
    {
      "id": "/providers/Microsoft.Billing/billingAccounts/1234567",
      "name": "1234567",
      "properties": {
        "accountStatus": "Unknown",
        "accountType": "Enterprise",
        "agreementType": "EnterpriseAgreement",
        "soldTo": {
          "companyName": "Contoso",
          "country": "US "
        },
        "billingProfiles": {
          "hasMoreResults": false
        },
        "displayName": "Contoso",
        "enrollmentAccounts": [
          {
            "id": "/providers/Microsoft.Billing/billingAccounts/1234567/enrollmentAccounts/7654321",
            "name": "7654321",
            "type": "Microsoft.Billing/enrollmentAccounts",
            "properties": {
              "accountName": "Contoso",
              "accountOwnerEmail": "kenny@contoso.onmicrosoft.com",
              "costCenter": "Test",
              "isDevTest": false
            }
          }
        ],
        "hasReadAccess": false
      },
      "type": "Microsoft.Billing/billingAccounts"
    }
  ]
}

Wartości zakresu rozliczeniowego i id są takie same. Element id dla Twojego konta rejestracji to zakres rozliczeniowy, w ramach którego inicjowane jest żądanie subskrypcji. Ważne jest, aby znać identyfikator, ponieważ jest to wymagany parametr używany w dalszej części artykułu do utworzenia subskrypcji.

Tworzenie subskrypcji w ramach konkretnego konta rejestracji

W poniższym przykładzie na koncie rejestracji wybranym w poprzednim kroku zostanie utworzona subskrypcja o nazwie Dev Team Subscription.

Przy użyciu jednej z poniższych metod utworzysz nazwę aliasu subskrypcji. Zalecamy, aby podczas tworzenia nazwy aliasu:

  • Używanie znaków alfanumerycznych i łączników
  • Zacznij od litery i kończy się znakiem alfanumerycznym
  • Nie używaj okresów

Alias jest używany do prostego podstawienia ciągu zdefiniowanego przez użytkownika zamiast identyfikatora GUID subskrypcji. Innymi słowy, można go użyć jako skrótu. Aby dowiedzieć się więcej na temat aliasu, zobacz Alias — Tworzenie. W poniższych przykładach zostanie utworzony, sampleAlias ale możesz użyć dowolnego ciągu.

Jeśli oprócz roli Właściciel konta masz wiele ról użytkownika, musisz pobrać identyfikator konta z witryny Azure Portal. Następnie możesz użyć identyfikatora, aby programowo tworzyć subskrypcje.

Wywołaj interfejs API PUT, aby utworzyć żądanie utworzenia subskrypcji/alias.

PUT https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01api-version=2021-10-01

W treści żądania podaj jako element billingScope wartość id z jednego z elementów enrollmentAccounts.

{
  "properties": {
        "billingScope": "/providers/Microsoft.Billing/BillingAccounts/1234567/enrollmentAccounts/7654321",
        "DisplayName": "Dev Team Subscription", //Subscription Display Name
        "Workload": "Production"
  }
}

Dozwolone wartości dla elementu Workload to Production i DevTest.

Response

{
  "id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
  "name": "sampleAlias",
  "type": "Microsoft.Subscription/aliases",
  "properties": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "provisioningState": "Accepted"
  }
}

Aby uzyskać stan żądania, możesz wykonać instrukcję GET dla tego samego adresu URL.

Zażądaj

GET https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01

Response

{
  "id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
  "name": "sampleAlias",
  "type": "Microsoft.Subscription/aliases",
  "properties": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "provisioningState": "Succeeded"
  }
}

Stan w toku jest zwracany jako stan Accepted w elemencie provisioningState.

Tworzenie subskrypcji i ustawianie subscriptionOwnerId jako właściciela

Gdy jednostka usługi używa interfejsu API aliasu subskrypcji do utworzenia nowej subskrypcji i nie uwzględnia additionalProperties w żądaniu, jednostka usługi automatycznie staje się właścicielem nowej subskrypcji. Jeśli nie chcesz, aby jednostka usługi był właścicielem, możesz określić subscriptionTenantId i subscriptionOwnerId w additionalProperties. Ten proces ustawia określony subscriptionOwnerId jako właściciela nowej subskrypcji, a nie jednostkę usługi.

Przykładowa treść żądania:


{
    "properties": {
        "billingScope": "/providers/Microsoft.Billing/billingAccounts/{EABillingAccountId}/enrollmentAccounts/{EnrollmentAccountId}",
        "displayName": "{SubscriptionName}",
        "workLoad": "Production",
        "resellerId": null,
        "additionalProperties": {
            "managementGroupId": "",
            "subscriptionTenantId": "{SubscriptionTenantId}", // Here you input the tenant GUID where the subscription resides after creation
            "subscriptionOwnerId": "{ObjectId that becomes the owner of the subscription}", // Here you input the objectId which is set as the subscription owner when it gets created.
            "tags": {}
        }
    }
}

Tworzenie subskrypcji w innej dzierżawie

Korzystając z interfejsu API REST aliasu subskrypcji, możesz utworzyć subskrypcję w innej dzierżawie przy użyciu parametru subscriptionTenantId w treści żądania. Jednostka usługi platformy Azure (SPN) musi uzyskać token z dzierżawy głównej, aby utworzyć subskrypcję. Po utworzeniu subskrypcji należy uzyskać token z dzierżawy docelowej, aby zaakceptować transfer przy użyciu interfejsu API Akceptuj własność .

Aby uzyskać więcej informacji na temat tworzenia subskrypcji EA w innej dzierżawie, zobacz Tworzenie subskrypcji w innej dzierżawie i wyświetlanie żądań przeniesienia.

Korzystanie z szablonu usługi ARM lub Bicep

W poprzedniej sekcji pokazano, jak utworzyć subskrypcję przy użyciu programu PowerShell, interfejsu wiersza polecenia lub interfejsu API REST. Jeśli musisz zautomatyzować tworzenie subskrypcji, rozważ użycie szablonu usługi Azure Resource Manager (szablonu usługi ARM) lub pliku Bicep.

Poniższy szablon usługi ARM tworzy subskrypcję. W polu billingScopepodaj identyfikator konta rejestracji. Subskrypcja jest tworzona w głównej grupie zarządzania. Po utworzeniu subskrypcji możesz przenieść ją do innej grupy zarządzania.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "subscriptionAliasName": {
            "type": "string",
            "metadata": {
                "description": "Provide a name for the alias. This name will also be the display name of the subscription."
            }
        },
        "billingScope": {
            "type": "string",
            "metadata": {
                "description": "Provide the full resource ID of billing scope to use for subscription creation."
            }
        }
    },
    "resources": [
        {
            "scope": "/",
            "name": "[parameters('subscriptionAliasName')]",
            "type": "Microsoft.Subscription/aliases",
            "apiVersion": "2021-10-01",
            "properties": {
                "workLoad": "Production",
                "displayName": "[parameters('subscriptionAliasName')]",
                "billingScope": "[parameters('billingScope')]"
            }
        }
    ],
    "outputs": {}
}

Możesz też użyć pliku Bicep, aby utworzyć subskrypcję.

targetScope = 'managementGroup'

@description('Provide a name for the alias. This name will also be the display name of the subscription.')
param subscriptionAliasName string

@description('Provide the full resource ID of billing scope to use for subscription creation.')
param billingScope string

resource subscriptionAlias 'Microsoft.Subscription/aliases@2021-10-01' = {
  scope: tenant()
  name: subscriptionAliasName
  properties: {
    workload: 'Production'
    displayName: subscriptionAliasName
    billingScope: billingScope
  }
}

Wdróż szablon na poziomie grupy zarządzania. W poniższych przykładach pokazano wdrażanie szablonu usługi ARM w formacie JSON, ale zamiast tego można wdrożyć plik Bicep.

PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/mg1/providers/Microsoft.Resources/deployments/exampledeployment?api-version=2020-06-01

Z treścią żądania:

{
  "location": "eastus",
  "properties": {
    "templateLink": {
      "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json"
    },
    "parameters": {
      "subscriptionAliasName": {
        "value": "sampleAlias"
      },
      "billingScope": {
        "value": "/providers/Microsoft.Billing/BillingAccounts/1234567/enrollmentAccounts/7654321"
      }
    },
    "mode": "Incremental"
  }
}

Aby przenieść subskrypcję do nowej grupy zarządzania, użyj następującego szablonu usługi ARM.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "targetMgId": {
            "type": "string",
            "metadata": {
                "description": "Provide the ID of the management group that you want to move the subscription to."
            }
        },
        "subscriptionId": {
            "type": "string",
            "metadata": {
                "description": "Provide the ID of the existing subscription to move."
            }
        }
    },
    "resources": [
        {
            "scope": "/",
            "type": "Microsoft.Management/managementGroups/subscriptions",
            "apiVersion": "2020-05-01",
            "name": "[concat(parameters('targetMgId'), '/', parameters('subscriptionId'))]",
            "properties": {
            }
        }
    ],
    "outputs": {}
}

Lub następujący plik Bicep.

targetScope = 'managementGroup'

@description('Provide the ID of the management group that you want to move the subscription to.')
param targetMgId string

@description('Provide the ID of the existing subscription to move.')
param subscriptionId string

resource subToMG 'Microsoft.Management/managementGroups/subscriptions@2020-05-01' = {
  scope: tenant()
  name: '${targetMgId}/${subscriptionId}'
}

Ograniczenia interfejsu API tworzenia subskrypcji Enterprise platformy Azure

  • Przy użyciu tego interfejsu API można tworzyć tylko subskrypcje Enterprise platformy Azure.
  • Obowiązuje limit 5000 subskrypcji na jedno konto rejestracji. Po przekroczeniu tego limitu kolejne subskrypcje dla tego konta można utworzyć wyłącznie w witrynie Azure Portal. Aby utworzyć więcej subskrypcji za pomocą interfejsu API, musisz utworzyć kolejne konto rejestracji. Liczba anulowanych, usuniętych i przesłanych subskrypcji zbliża się do granicy 5000.
  • Użytkownicy, którzy nie są właścicielami konta, ale zostali dodani do konta rejestracji przy użyciu kontroli dostępu na podstawie ról platformy Azure, nie mogą tworzyć subskrypcji w witrynie Azure Portal.

Następne kroki