Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo ajuda-o a criar subscrições de Contrato Enterprise (EA) do Azure para uma conta de faturação do EA através de programação com as versões de API mais recentes. Se ainda estiver a utilizar a versão de pré-visualização mais antiga, consulte Criar programaticamente APIs herdadas de subscrições do Azure.
Neste artigo, aprenderá a criar subscrições através de programação com o Azure Resource Manager.
Quando cria uma subscrição do Azure de forma programática, esta é abrangida pelos termos do contrato em que recebe serviços do Azure da Microsoft ou de um vendedor certificado. Para obter mais informações, consulte Informações legais do Microsoft Azure.
Nota
Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, consulte Migrar o Azure PowerShell do AzureRM para o Az.
Não é possível criar planos de suporte programaticamente. 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
Um utilizador tem de ter a função de Administrador da empresa ou a função de Proprietário numa Conta de inscrição para criar uma subscrição. Existem duas formas de obter a função de Proprietário numa Conta de registo:
- O Administrador Empresarial da sua inscrição pode torná-lo um Proprietário da Conta (é necessário iniciar sessão), o que o torna um Proprietário da Conta de Inscrição.
- Um Proprietário existente da Conta de Inscrição pode conceder-lhe acesso.
Para usar uma entidade de serviço para criar uma assinatura EA, o Proprietário da Conta de Inscrição deve conceder a essa entidade de serviço a capacidade de criar assinaturas.
Ao usar uma entidade de serviço para criar assinaturas, use o ObjectId do aplicativo Microsoft Entra Enterprise como a ID da entidade de serviço usando o Microsoft Graph PowerShell ou a CLI do Azure. Você também pode usar as etapas em Localizar sua entidade de serviço e IDs de locatário para localizar a ID do objeto no portal do Azure para uma entidade de serviço existente.
Para obter mais informações sobre a solicitação de API de atribuição de função EA, consulte Atribuir funções a nomes principais de serviço do Azure Enterprise Agreement. O artigo inclui uma lista de funções (e IDs de definição de funções) que podem ser atribuídas a uma entidade de serviço.
Nota
- Confirme se utiliza a versão correta da API para conceder permissões de proprietário à conta de inscrição. Para este artigo e para as APIs documentadas nele, use a API 2019-10-01-preview .
- Se você estiver migrando para usar as APIs mais recentes, sua configuração anterior feita com a versão 2015-07-01 não será convertida automaticamente para uso com as APIs mais recentes.
- As informações da Conta de inscrição só são visíveis quando a função do utilizador é Proprietário da conta. Quando um utilizador tem várias funções, a API utiliza a função menos restritiva do utilizador.
Localizar contas às quais tem acesso
Depois de ser adicionado a uma Conta de Inscrição associada a um Proprietário de Conta, o Azure usa a relação de conta para inscrição para determinar onde faturar os custos da subscrição. Todas as subscrições criadas no âmbito da conta são faturadas na inscrição de EA em que a conta está. Para criar subscrições, deve transmitir valores sobre a conta de inscrição e as entidades principais de utilizador para ser proprietário da subscrição.
Para executar os comandos a seguir, você deve estar conectado ao diretório base do Proprietário da Conta, que é o diretório no qual as assinaturas são criadas por padrão.
Pedido para listar todas as contas de inscrição às quais tem acesso:
GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/?api-version=2020-05-01
A resposta da API lista todas as contas de inscrição às quais tem acesso:
{
"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"
}
]
}
Os valores para um escopo de faturamento e id são a mesma coisa. O id da sua conta de inscrição é o âmbito da faturação no qual o pedido de subscrição é iniciado. É importante saber o ID porque é um parâmetro obrigatório que você usa mais adiante no artigo para criar uma assinatura.
Criar subscrições numa conta de registo específica
O exemplo a seguir cria uma assinatura chamada Dev Team Subscription na conta de inscrição selecionada na etapa anterior.
Usando um dos seguintes métodos, você cria um nome de alias de assinatura. Recomendamos que, ao criar o nome do alias, você:
- Use caracteres alfanuméricos e hífenes
- Comece com uma letra e termine com um caractere alfanumérico
- Não use períodos menstruais
Um alias é usado para substituição simples de uma cadeia de caracteres definida pelo usuário em vez do GUID de assinatura. Em outras palavras, você pode usá-lo como um atalho. Você pode saber mais sobre alias em Alias - Criar. Nos exemplos a seguir, é criado, sampleAlias mas você pode usar qualquer cadeia de caracteres que desejar.
Se tiver várias funções de utilizador para além da função de Proprietário da conta, terá de obter o ID da conta a partir do portal do Azure. Em seguida, pode utilizar o ID para criar assinaturas de forma programática.
Chame a API PUT para criar uma subscrição/alias de criação de subscrição.
PUT https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01api-version=2021-10-01
No corpo do pedido, indique o billingScope e o id de uma das suas enrollmentAccounts.
{
"properties": {
"billingScope": "/providers/Microsoft.Billing/BillingAccounts/1234567/enrollmentAccounts/7654321",
"DisplayName": "Dev Team Subscription", //Subscription Display Name
"Workload": "Production"
}
}
Os valores permitidos para Workload são Production e DevTest.
Resposta
{
"id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
"name": "sampleAlias",
"type": "Microsoft.Subscription/aliases",
"properties": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"provisioningState": "Accepted"
}
}
Pode chamar GET no mesmo URL para obter o estado do pedido.
Pedir
GET https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01
Resposta
{
"id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
"name": "sampleAlias",
"type": "Microsoft.Subscription/aliases",
"properties": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"provisioningState": "Succeeded"
}
}
É devolvido um estado em curso como um estado Accepted em provisioningState.
Criar subscrição e tornar subscriptionOwnerId o proprietário
Quando uma entidade de serviço utiliza a API de alias de subscrição para criar uma nova subscrição e não a inclui additionalProperties no pedido, a entidade de serviço torna-se automaticamente o proprietário da nova subscrição. Se não quiser que o responsável principal do serviço seja o proprietário, pode especificar subscriptionTenantId e subscriptionOwnerId no additionalProperties. Este processo faz com que o especificado subscriptionOwnerId seja o proprietário da nova subscrição e não o mandante do serviço.
Corpo da solicitação da amostra:
{
"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": {}
}
}
}
Criar subscrições num inquilino diferente
Usando a API REST de Alias, pode criar uma assinatura em um inquilino diferente usando o parâmetro subscriptionTenantId no corpo da solicitação. Sua entidade de serviço do Azure (SPN) deve obter um token de seu locatário doméstico para criar a assinatura. Depois de criar a assinatura, você deve obter um token do locatário de destino para aceitar a transferência usando a API de Aceitação de Propriedade .
Para obter mais informações sobre como criar assinaturas EA em outro locatário, consulte Criar assinatura em outro locatário e exibir solicitações de transferência.
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 ARM a seguir cria uma assinatura. Para billingScope, forneça o ID da conta de inscrição. 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/1234567/enrollmentAccounts/7654321"
}
},
"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}'
}
Limitações da API de criação de subscrições do Azure Enterprise
- Apenas as subscrições do Azure Enterprise são criadas com esta API.
- Existe um limite de 5000 subscrições por conta de registo. Depois disso, só podem ser criadas mais subscrições para a conta no portal do Azure. Para criar mais subscrições através da API, crie outra conta de inscrição. As subscrições canceladas, eliminadas e transferidas contam para o limite de 5000.
- Os utilizadores que não são proprietários de contas, mas que foram adicionados a uma conta de registo através do controlo de acesso baseado em funções do Azure, não podem criar subscrições no portal do Azure.
Próximos passos
- Agora que você criou uma assinatura, pode conceder essa capacidade a outros usuários e entidades de serviço. Para obter mais informações, consulte Conceder acesso para criar assinaturas do Azure Enterprise (visualização).
- Para obter mais informações sobre como gerenciar um grande número de assinaturas usando grupos de gerenciamento, consulte Organizar seus recursos com grupos de gerenciamento 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.