Criar programaticamente subscrições do Azure para um Contrato de Contrato de Cliente Microsoft com as APIs mais recentes
Este artigo ajuda-o a criar subscrições do Azure para um Contrato de Cliente Microsoft através de programação com as versões de API mais recentes. Se você ainda estiver usando a versão de visualização mais antiga, consulte Criar assinaturas do Azure programaticamente com APIs herdadas.
Neste artigo, aprenderá a criar subscrições através de programação com o Azure Resource Manager.
Se você precisar criar uma assinatura MCA do Azure entre locatários do Microsoft Entra, consulte Criar assinaturas MCA programaticamente entre locatários do Microsoft Entra.
Quando cria uma subscrição do Azure através de programação, essa subscrição é regida pelo contrato sob o qual adquiriu os serviços do Azure à Microsoft ou a um revendedor autorizado. Para obter mais informações, veja Informações Legais do Microsoft Azure.
Nota
Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.
Não é possível criar planos de suporte programaticamente. Você pode comprar um novo plano de suporte ou atualizar um no portal do Azure. Navegue até Ajuda + suporte e, na parte superior da página, selecione Escolher o plano de suporte correto.
Pré-requisitos
Tem de ter uma função de proprietário, contribuidor ou criador de subscrição do Azure numa secção da fatura ou uma função de proprietário ou contribuidor num perfil de faturação ou numa conta de faturação para criar subscrições. Você também pode atribuir a mesma função a um SPN (nome da entidade de serviço). Para obter mais informações sobre funções e atribuição de permissão a elas, consulte Funções e tarefas de cobrança de assinatura.
Se você estiver usando um SPN para criar assinaturas, use o ObjectId do aplicativo Microsoft Entra Enterprise como a ID Principal usando o Microsoft Graph PowerShell ou a CLI do Azure.
Nota
As permissões diferem entre a API herdada (api-version=2018-03-01-preview) e a API mais recente (api-version=2020-05-01). Embora você possa ter uma função suficiente para usar a API herdada, talvez precise de um administrador da EA para delegar uma função para usar a API mais recente.
Se não sabe se tem acesso a uma conta de Contrato de Cliente Microsoft, veja Verificar o acesso a um Contrato de Cliente Microsoft.
Localizar contas de faturação a que tem acesso
Faça o pedido seguinte para listar todas as contas de faturação.
GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/?api-version=2020-05-01
A resposta da API lista as contas de faturação às quais tem acesso.
{
"value": [
{
"id": "/providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx",
"name": "5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx",
"properties": {
"accountStatus": "Active",
"accountType": "Enterprise",
"agreementType": "MicrosoftCustomerAgreement",
"billingProfiles": {
"hasMoreResults": false
},
"displayName": "Contoso",
"hasReadAccess": false
},
"type": "Microsoft.Billing/billingAccounts"
}
]
}
Use a propriedade displayName
para identificar a conta de faturação para a qual pretende criar subscrições. Certifique-se de que o agreementType da conta é MicrosoftCustomerAgreement. Copie o name
da conta. Por exemplo, para criar uma subscrição para a conta de faturação Contoso
, copie 5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx
. Cole o valor algures para que possa utilizá-lo no passo seguinte.
Localizar as secções dos perfis de faturação e da fatura para criar subscrições
Os custos da subscrição aparecem numa secção da fatura de um perfil de faturação. Utilize a API seguinte para obter a lista de secções dos perfis de faturação e da fatura nos quais tem permissão para criar subscrições do Azure.
Primeiro, obtém a lista de perfis de faturação na conta de faturação a que tem acesso (Utilize o name
que obteve no passo anterior)
GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingprofiles/?api-version=2020-05-01
A resposta da API lista todos os perfis de faturação nos quais tem acesso para criar subscrições:
{
"value": [
{
"id": "/providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx",
"name": "AW4F-xxxx-xxx-xxx",
"properties": {
"billingRelationshipType": "Direct",
"billTo": {
"addressLine1": "One Microsoft Way",
"city": "Redmond",
"companyName": "Contoso",
"country": "US",
"email": "kenny@contoso.com",
"phoneNumber": "425xxxxxxx",
"postalCode": "98052",
"region": "WA"
},
"currency": "USD",
"displayName": "Contoso Billing Profile",
"enabledAzurePlans": [
{
"skuId": "0002",
"skuDescription": "Microsoft Azure Plan for DevTest"
},
{
"skuId": "0001",
"skuDescription": "Microsoft Azure Plan"
}
],
"hasReadAccess": true,
"invoiceDay": 5,
"invoiceEmailOptIn": false,
"invoiceSections": {
"hasMoreResults": false
},
"poNumber": "001",
"spendingLimit": "Off",
"status": "Active",
"systemId": "AW4F-xxxx-xxx-xxx",
"targetClouds": []
},
"type": "Microsoft.Billing/billingAccounts/billingProfiles"
}
]
}
Copie o id
para a próxima identificação das secções da fatura abaixo do perfil de faturação. Por exemplo, copie /providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx
e chame a API seguinte.
GET https://management.azure.com/providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoicesections?api-version=2020-05-01
Response
{
"totalCount": 1,
"value": [
{
"id": "/providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoiceSections/SH3V-xxxx-xxx-xxx",
"name": "SH3V-xxxx-xxx-xxx",
"properties": {
"displayName": "Development",
"state": "Active",
"systemId": "SH3V-xxxx-xxx-xxx"
},
"type": "Microsoft.Billing/billingAccounts/billingProfiles/invoiceSections"
}
]
}
Use a propriedade id
para identificar a secção da fatura para a qual pretende criar subscrições. Copie toda a cadeia de carateres. Por exemplo, /providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoiceSections/SH3V-xxxx-xxx-xxx
.
Criar uma subscrição para uma secção da fatura
O exemplo seguinte cria uma subscrição denominada Subscrição da Equipa de Desenvolvimento para a secção Desenvolvimento da fatura. A subscrição é faturada no perfil de faturação Perfil de Faturação da Contoso e apresentada na secção Desenvolvimento desta fatura. Utilizará o âmbito da faturação copiado do passo anterior: /providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoiceSections/SH3V-xxxx-xxx-xxx
.
PUT https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01
Corpo do pedido
{
"properties":
{
"billingScope": "/providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoiceSections/SH3V-xxxx-xxx-xxx",
"DisplayName": "Dev Team subscription",
"Workload": "Production"
}
}
Resposta
{
"id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
"name": "sampleAlias",
"type": "Microsoft.Subscription/aliases",
"properties": {
"subscriptionId": "b5bab918-e8a9-4c34-a2e2-ebc1b75b9d74",
"provisioningState": "Accepted"
}
}
Pode chamar GET no mesmo URL para obter o estado do pedido.
Pedir
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"
}
}
É devolvido um estado em curso como um estado Accepted
em provisioningState
.
Usar modelo ARM ou Bíceps
A seção anterior mostrou como criar uma assinatura com PowerShell, CLI ou API REST. Se você precisar automatizar a criação de assinaturas, considere usar um modelo do Azure Resource Manager (modelo ARM) ou um arquivo Bicep.
O modelo a seguir cria uma assinatura. Para billingScope
, forneça o ID da seção da fatura. A assinatura é criada no grupo de gerenciamento raiz. Depois de criar a assinatura, você pode movê-la para outro grupo de gerenciamento.
{
"$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": {}
}
Ou, use um arquivo Bicep para criar a assinatura.
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
}
}
Implante o modelo no nível do grupo de gerenciamento. Os exemplos a seguir mostram a implantação do modelo JSON ARM, mas você pode implantar um arquivo Bicep.
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/mg1/providers/Microsoft.Resources/deployments/exampledeployment?api-version=2020-06-01
Com um corpo de solicitação:
{
"location": "eastus",
"properties": {
"templateLink": {
"uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json"
},
"parameters": {
"subscriptionAliasName": {
"value": "sampleAlias"
},
"billingScope": {
"value": "/providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoiceSections/SH3V-xxxx-xxx-xxx"
}
},
"mode": "Incremental"
}
}
Para mover uma assinatura para um novo grupo de gerenciamento, use o seguinte modelo 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": {}
}
Ou, o seguinte arquivo 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}'
}
Próximos passos
- Agora que criou uma subscrição, pode conceder essa capacidade a outros entidades principais de utilizador e de serviço. Para obter mais informações, veja Conceder acesso para criar subscrições Enterprise do Azure (pré-visualização).
- Para obter mais informações sobre como gerir grandes números de subscrições com grupos de gestão, veja Organizar recursos com os grupos de gestão do Azure.
- Para alterar o grupo de gerenciamento de uma assinatura, consulte Mover assinaturas.
- Para cenários avançados de criação de assinatura usando a API REST, consulte Alias - Criar.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários