Programové vytváření předplatných Azure se smlouvou Enterprise s využitím nejnovějších rozhraní API

Tento článek vám pomůže programově vytvářet předplatná Azure se smlouvou Enterprise (EA) pro fakturační účet EA s využitím nejnovějších verzí rozhraní API. Pokud stále používáte starší verzi Preview, přečtěte si téma Programové vytváření starších rozhraní API předplatných Azure.

V tomto článku se naučíte, jak programově vytvářet předplatná s využitím Azure Resource Manageru.

Když vytvoříte předplatné Azure prostřednictvím kódu programu, spadá do podmínek smlouvy, ve které obdržíte služby Azure od Microsoftu nebo certifikovaného prodejce. Další informace najdete v článku Právní informace o Microsoft Azure.

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Plány podpory nemůžete vytvářet programově. Nový plán podpory si můžete koupit nebo upgradovat na webu Azure Portal. Přejděte do nápovědy a podpory a pak v horní části stránky vyberte Zvolit správný plán podpory.

Požadavky

Uživatel musí mít k vytvoření předplatného roli Enterprise Správa istrator nebo roli Vlastník v registračním účtu. Roli vlastníka u registračního účtu můžete získat dvěma způsoby:

Pokud chcete k vytvoření předplatného EA použít instanční objekt, musí vlastník registračního účtu udělit instančnímu objektu možnost vytvářet předplatná.

Při použití instančního objektu k vytváření předplatných použijte ObjectId aplikace Microsoft Entra Enterprise jako ID instančního objektu pomocí Microsoft Graph PowerShellu nebo Azure CLI. Pomocí kroků v části Vyhledání instančního objektu a ID tenanta můžete id objektu najít na webu Azure Portal pro existující instanční objekt.

Další informace o požadavku rozhraní API přiřazení rolí EA najdete v tématu Přiřazení rolí k Azure smlouva Enterprise instančním názvům. Tento článek obsahuje seznam rolí (a ID definic rolí), které je možné přiřadit instančnímu objektu.

Poznámka:

  • Ujistěte se, že používáte správnou verzi rozhraní API pro udělení oprávnění vlastníka registračního účtu. Pro tento článek a rozhraní API, která jsou v něm dokumentovaná, použijte rozhraní API verze 2019-10-01-preview.
  • Pokud migrujete na novější rozhraní API, předchozí konfigurace vytvořená s verzí 2015-07-01 se automaticky nepřevedí pro použití s novějšími rozhraními API.
  • Informace o registračním účtu jsou viditelné jenom v případech, kdy je role uživatele vlastníkem účtu. Pokud má uživatel více rolí, rozhraní API používá nejméně omezující roli uživatele.

Vyhledání účtů, ke kterým máte přístup

Jakmile jste přidáni k registračnímu účtu přidruženému k vlastníkovi účtu, Azure pomocí tohoto vztahu účet-registrace určí, kam se mají účtovat poplatky za předplatné. Všechna předplatná vytvořená v rámci účtu se fakturují v rámci registrace EA, do níž tento účet patří. Pokud chcete vytvářet předplatná, musíte předat hodnoty týkající se registračního účtu a instančních objektů uživatele, kteří mají být vlastníky těchto předplatných.

Abyste mohli spustit následující příkazy, musíte být přihlášeni k domovskému adresáři vlastníka účtu. V tomto adresáři se ve výchozím nastavení vytvářejí předplatná.

Požádejte o výpis všech registračních účtů, ke kterým máte přístup:

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

V odpovědi rozhraní API se zobrazí všechny registrační účty, ke kterým máte přístup.

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

Hodnoty pro rozsah fakturace a id jsou stejné. Parametrem id pro váš registrační účet je rozsah fakturace, v jehož rámci byla žádost pro předplatné iniciována. Je důležité znát ID, protože se jedná o povinný parametr, který použijete později v článku k vytvoření předplatného.

Vytváření předplatných v rámci konkrétního registračního účtu

Následující příklad vytvoří předplatné s názvem Dev Team Subscription v registračním účtu, který jste vybrali v předchozím kroku.

Pomocí jedné z následujících metod vytvoříte název aliasu předplatného. Při vytváření názvu aliasu doporučujeme:

  • Použití alfanumerických znaků a spojovníků
  • Začínat písmenem a končit alfanumerickým znakem
  • Nepoužívat tečky

Alias se používá pro jednoduchou náhradu uživatelem definovaného řetězce místo identifikátoru GUID předplatného. Jinými slovy, můžete ho použít jako zástupce. Další informace o aliasu najdete v aliasu – Vytvořit. V následujících příkladech se vytvoří, ale můžete použít libovolný řetězec, sampleAlias který se vám líbí.

Pokud máte kromě role vlastníka účtu několik rolí uživatelů, musíte načíst ID účtu z webu Azure Portal. Id pak můžete použít k programovému vytvoření předplatných.

Volejte rozhraní API PUT za účelem vytvoření požadavku/aliasu pro vytvoření předplatného.

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

V textu požadavku zadejte jako billingScope údaj id některého z vašich účtů enrollmentAccounts.

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

Povolené hodnoty pro Workload jsou Production a DevTest.

Response

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

Stav požadavku můžete získat metodou GET na stejné adrese URL.

Požádat

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

Probíhající stav se vrátí jako stav Accepted u položky provisioningState.

Vytvoření předplatného a nastavení subscriptionOwnerId jako vlastníka

Když instanční objekt použije rozhraní API aliasu předplatného k vytvoření nového předplatného a nezahrne additionalProperties se do požadavku, instanční objekt se automaticky stane vlastníkem nového předplatného. Pokud nechcete, aby instanční objekt byl vlastníkem, můžete zadat subscriptionTenantId a subscriptionOwnerId v objektu additionalProperties. Tento proces zpřístupňuje zadaného subscriptionOwnerId vlastníka nového předplatného, nikoli instančního objektu.

Text ukázkové žádosti:


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

Vytváření předplatných v jiném tenantovi

Pomocí rozhraní REST API aliasu předplatného můžete vytvořit předplatné v jiném tenantovi pomocí subscriptionTenantId parametru v textu požadavku. Aby se předplatné vytvořilo, musí váš instanční objekt Azure (SPN) získat token z jeho domovského tenanta. Po vytvoření předplatného musíte získat token z cílového tenanta, abyste mohli přijmout převod pomocí rozhraní API pro přijetí vlastnictví .

Další informace o vytváření předplatných EA v jiném tenantovi najdete v tématu Vytvoření předplatného v jiném tenantovi a zobrazení žádostí o převod.

Použití šablony ARM nebo Bicep

Předchozí část ukázala, jak vytvořit předplatné pomocí PowerShellu, rozhraní příkazového řádku nebo rozhraní REST API. Pokud potřebujete automatizovat vytváření předplatných, zvažte použití šablony Azure Resource Manageru (šablony ARM) nebo souboru Bicep.

Následující šablona ARM vytvoří předplatné. Zadejte billingScopeID registračního účtu. Předplatné se vytvoří v kořenové skupině pro správu. Po vytvoření předplatného ho můžete přesunout do jiné skupiny pro správu.

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

Nebo k vytvoření předplatného použijte soubor Bicep.

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

Nasaďte šablonu na úrovni skupiny pro správu. Následující příklady ukazují nasazení šablony JSON ARM, ale místo toho můžete nasadit soubor Bicep.

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

S textem požadavku:

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

Pokud chcete přesunout předplatné do nové skupiny pro správu, použijte následující šablonu 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": {}
}

Nebo následující soubor 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}'
}

Omezení rozhraní API pro vytváření předplatných Azure Enterprise

  • Pomocí rozhraní API se dají vytvářet jenom předplatná Azure Enterprise.
  • Pro každý registrační účet platí limit 5 000 předplatných. Další předplatná pro tento účet se potom dají vytvářet jenom na webu Azure Portal. Pokud chcete prostřednictvím rozhraní API vytvořit více předplatných, vytvořte si další registrační účet. Zrušená, odstraněná a přenesená předplatná se započítávají do limitu 5000.
  • Uživatelé, kteří nejsou vlastníky účtu, ale byli přidáni do registračního účtu prostřednictvím řízení přístupu na základě role Azure, nemůžou vytvářet předplatná na webu Azure Portal.

Další kroky