Share via


Skapa prenumerationer på Azure Enterprise-avtal via programmering med de senaste API:erna

Den här artikeln hjälper dig att skapa prenumerationer för Azure Enterprise-avtal (EA) via programmering för ett EA-faktureringskonto med de senaste API-versionerna. Om du fortfarande använder den äldre förhandsversionen kan du läsa Programmatiskt skapa äldre API:er för Azure-prenumerationer.

I den här artikeln får du lära dig hur du skapar prenumerationer programmatiskt med hjälp av Azure Resource Manager.

När du skapar en Azure-prenumeration programmatiskt faller den under villkoren i avtalet där du får Azure-tjänster från Microsoft eller en certifierad säljare. Mer information finns i Juridisk information för Microsoft Azure.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Du kan inte skapa supportplaner programmatiskt. Du kan köpa en ny supportplan eller uppgradera en i Azure-portalen. Gå till Hjälp + support och välj sedan Välj rätt supportplan överst på sidan.

Förutsättningar

En användare måste antingen ha rollen Företagsadministratör eller Rollen Ägare på ett registreringskonto för att skapa en prenumeration. Det finns två sätt att hämta rollen Ägare på ett registreringskonto:

  • Företagsadministratören för din registrering kan utse dig till kontoägare (inloggning krävs), vilket innebär att du blir ägare till registreringskontot.
  • En befintlig ägare till registreringskontot kan ge dig åtkomst.

Om du vill använda tjänstens huvudnamn för att skapa en EA-prenumeration måste en ägare av registreringskontot ge tjänstens huvudnamn möjlighet att skapa prenumerationer.

När du använder tjänstens huvudnamn för att skapa prenumerationer använder du ObjectId för Microsoft Entra Enterprise-programmet som tjänstens huvudnamns-ID med hjälp av Microsoft Graph PowerShell eller Azure CLI. Du kan också använda stegen i Hitta tjänstens huvudnamn och klient-ID:t för att hitta objekt-ID:t i Azure-portalen för ett befintligt huvudnamn för tjänsten.

Mer information om API-begäran om EA-rolltilldelning finns i Tilldela roller till Azure företagsavtal namn på tjänstens huvudnamn. Artikeln innehåller en lista över roller (och rolldefinitions-ID:er) som kan tilldelas till tjänstens huvudnamn.

Kommentar

  • Se till att du använder rätt API-version för att ge registreringskontot ägarbehörighet. För den här artikeln och för de API:er som dokumenteras i den använder du API:et 2019-10-01-preview.
  • Om du migrerar för att använda de nyare API:erna konverteras inte den tidigare konfigurationen som gjordes med 2015-07-01-versionen automatiskt för användning med de nyare API:erna.
  • Informationen om registreringskontot visas bara när användarens roll är kontoägare. När en användare har flera roller använder API:et användarens minst restriktiva roll.

Hitta konton som du har åtkomst till

När du har lagt till ett registreringskonto som är associerat med en kontoägare använder Azure konto-till-registrering-relationen för att ta reda på var prenumerationsavgifterna ska debiteras. Alla prenumerationer som skapats under kontot debiteras till den EA-registrering som kontot ingår i. För att kunna skapa prenumerationer måste du ange värden om registreringskontot och användarens huvudnamn så att du är ägare för prenumerationen.

För att kunna köra följande kommandon måste du vara inloggad på kontoägarens hemkatalog, vilket är den katalog som prenumerationer skapas i som standard.

Begära en lista över alla registreringskonton som du har åtkomst till:

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

API-svaret visar alla registreringskonton som du har åtkomst till:

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

Värdena för ett faktureringsomfång och id är samma sak. id för ditt registreringskonto är det faktureringsomfång som prenumerationsbegäran initieras i. Det är viktigt att känna till ID:t eftersom det är en obligatorisk parameter som du använder senare i artikeln för att skapa en prenumeration.

Skapa prenumerationer under ett specifikt registreringskonto

I följande exempel skapas en prenumeration med namnet Dev Team Subscription i det registreringskonto som valdes i föregående steg.

Med någon av följande metoder skapar du ett prenumerationsaliasnamn. Vi rekommenderar att du när du skapar aliasnamnet:

  • Använda alfanumeriska tecken och bindestreck
  • Börja med en bokstav och avsluta med ett alfanumeriskt tecken
  • Använd inte perioder

Ett alias används för enkel ersättning av en användardefinierad sträng i stället för prenumerations-GUID. Med andra ord kan du använda det som en genväg. Du kan läsa mer om alias på Alias – Skapa. I följande exempel skapas, sampleAlias men du kan använda valfri sträng som du vill.

Om du har flera användarroller utöver rollen Kontoägare måste du hämta konto-ID:t från Azure-portalen. Sedan kan du använda ID:t för att programmatiskt skapa prenumerationer.

Anropa PUT-API:et för att skapa ett alias/en begäran om att skapa en prenumeration.

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

I begärandetexten anger du id från ett av dina enrollmentAccounts som billingScope.

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

Tillåtna värden för Workload är Production och DevTest.

Response

{
  "id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
  "name": "sampleAlias",
  "type": "Microsoft.Subscription/aliases",
  "properties": {
    "subscriptionId": "b5bab918-e8a9-4c34-a2e2-ebc1b75b9d74",
    "provisioningState": "Accepted"
  }
}

Du kan göra en GET-begäran med samma URL för att hämta statusen för begäran.

Begär

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

Response

{
  "id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
  "name": "sampleAlias",
  "type": "Microsoft.Subscription/aliases",
  "properties": {
    "subscriptionId": "b5bab918-e8a9-4c34-a2e2-ebc1b75b9d74",
    "provisioningState": "Succeeded"
  }
}

En ”pågående”-status returneras som ett Accepted-tillstånd under provisioningState.

Skapa prenumeration och gör subscriptionOwnerId till ägare

När tjänstens huvudnamn använder API:et prenumerationsalias för att skapa en ny prenumeration och inte ingår additionalProperties i begäran blir tjänstens huvudnamn automatiskt ägare till den nya prenumerationen. Om du inte vill att tjänstens huvudnamn ska vara ägare kan du ange subscriptionTenantId och subscriptionOwnerId i additionalProperties. Den här processen gör den angivna subscriptionOwnerId ägaren till den nya prenumerationen, inte tjänstens huvudnamn.

Exempel på begärandetext:


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

Skapa prenumerationer i en annan klientorganisation

Med hjälp av prenumerationens ALIAS REST API kan du skapa en prenumeration i en annan klientorganisation med hjälp av parametern subscriptionTenantId i begärandetexten. Ditt Azure Service Principal (SPN) måste hämta en token från sin hemklientorganisation för att skapa prenumerationen. När du har skapat prenumerationen måste du hämta en token från målklientorganisationen för att acceptera överföringen med api:et Acceptera ägarskap .

Mer information om hur du skapar EA-prenumerationer i en annan klient finns i Skapa prenumeration i andra klientorganisationer och visa överföringsbegäranden.

Använda ARM-mall eller Bicep

I föregående avsnitt visades hur du skapar en prenumeration med PowerShell, CLI eller REST API. Om du behöver automatisera skapandet av prenumerationer kan du överväga att använda en Azure Resource Manager-mall (ARM-mall) eller en Bicep-fil.

Följande ARM-mall skapar en prenumeration. För billingScopeanger du registreringskontots ID. Prenumerationen skapas i rothanteringsgruppen. När du har skapat prenumerationen kan du flytta den till en annan hanteringsgrupp.

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

Du kan också använda en Bicep-fil för att skapa prenumerationen.

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

Distribuera mallen på hanteringsgruppsnivå. I följande exempel visas hur du distribuerar JSON ARM-mallen, men du kan distribuera en Bicep-fil i stället.

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

Med en begärandetext:

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

Om du vill flytta en prenumeration till en ny hanteringsgrupp använder du följande ARM-mall.

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

Eller följande Bicep-fil.

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}'
}

Begränsningar för API:et för att skapa Azure Enterprise-prenumerationer

  • Endast Azure Enterprise-prenumerationer skapas med API:et.
  • Det finns en gräns på 5 000 prenumerationer per registreringskonto. Därefter kan du bara skapa fler prenumerationer för kontot i Azure-portalen. Om du vill skapa fler prenumerationer med hjälp av API:et skapar du ett till registreringskonto. Avbrutna, borttagna och överförda prenumerationer tas med i beräkningen för gränsen på 5000.
  • Användare som inte är kontoägare, men som har lagts till i ett registreringskonto via rollbaserad åtkomstkontroll i Azure, kan inte skapa prenumerationer i Azure-portalen.

Nästa steg