En son API’lerle program aracılığıyla Azure Kurumsal Anlaşma abonelikleri oluşturma

Bu makale, en son API sürümlerini kullanarak program aracılığıyla Azure Kurumsal Anlaşma (EA) fatura hesabı için Azure EA abonelikleri oluşturmanıza yardımcı olur. Hala eski önizleme sürümünü kullanıyorsanız bkz . Program aracılığıyla Azure abonelikleri eski API'lerini oluşturma.

Bu makalede Azure Resource Manager'ı kullanarak program aracılığıyla abonelik oluşturmayı öğreneceksiniz.

Bir Azure aboneliğini program aracılığıyla oluşturduğunuzda, Microsoft'tan veya sertifikalı bir satıcıdan Azure hizmetleri aldığınız sözleşmenin koşullarına tabidir. Daha fazla bilgi için bkz. Microsoft Azure Yasal Bilgiler.

Not

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz . Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Program aracılığıyla destek planları oluşturamazsınız. Azure portalında yeni bir destek planı satın alabilir veya bir destek planı yükseltebilirsiniz. Yardım + destek öğesine gidin ve ardından sayfanın üst kısmında Doğru destek planını seç öğesini seçin.

Önkoşullar

Bir kullanıcının abonelik oluşturmak için Bir Kayıt Hesabında Kuruluş Yöneticisi rolüne veya Sahip rolüne sahip olması gerekir. Kayıt Hesabında Sahip rolünü almanın iki yolu vardır:

Ea aboneliği oluşturmak için hizmet sorumlusu kullanmak için, Kayıt Hesabının Sahibi bu hizmet sorumlusuna abonelik oluşturma olanağı vermelidir.

Abonelik oluşturmak için hizmet sorumlusu kullanırken, Microsoft Graph PowerShell veya Azure CLI kullanarak Hizmet Sorumlusu Kimliği olarak Microsoft Entra Enterprise uygulamasının ObjectId değerini kullanın. Ayrıca, azure portalında mevcut bir hizmet sorumlusunun nesne kimliğini bulmak için Hizmet sorumlunuzu ve kiracı kimliklerinizi bulma adımlarını da kullanabilirsiniz.

EA rol atama API'si isteği hakkında daha fazla bilgi için bkz. Azure Kurumsal Anlaşma hizmet sorumlusu adlarına rol atama. Makale, hizmet sorumlusuna atanabilecek rollerin (ve rol tanımı kimliklerinin) listesini içerir.

Not

  • Kayıt hesabı sahip izinleri vermek için doğru API sürümünü kullandığınızdan emin olun. Bu makale ve makalede belgelenen API'ler için 2019-10-01-preview API'sini kullanın.
  • Daha yeni API'leri kullanmak üzere geçiş gerçekleştiriyorsanız, 2015-07-01 sürümüyle yapılan önceki yapılandırmanız daha yeni API'lerle kullanılmak üzere otomatik olarak dönüştürülmüyor.
  • Kayıt Hesabı bilgileri yalnızca kullanıcının rolü Hesap Sahibi olduğunda görünür. Bir kullanıcının birden çok rolü olduğunda, API kullanıcının en az kısıtlayıcı rolünü kullanır.

Erişiminiz olan hesapları bulma

Siz Hesap Sahibi ile ilişkilendirilmiş bir Kayıt Hesabına eklendikten sonra, Azure hesabın kayıtla ilişkisini kullanarak abonelik ücretlerinin nereye faturalanacağını saptar. Hesap kapsamında oluşturulan tüm abonelikler hesabın içinde yer aldığı EA kaydına faturalanır. Abonelikleri oluşturmak için, aboneliğin sahibi olacak kayıt hesabı hakkındaki değerleri ve kullanıcı asıl adlarını geçirmeniz gerekir.

Aşağıdaki komutları çalıştırmak için Hesap Sahibinin giriş dizininde oturum açmalısınız; bu, varsayılan olarak aboneliklerin oluşturulduğu dizindir.

Erişiminiz olan tüm kayıt hesaplarını listeleme isteği:

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

API yanıtında erişiminiz olan tüm kayıt hesapları listelenir:

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

Faturalama kapsamının değerleri ve id değerleri aynıdır. Kayıt hesabınızın id değeri, abonelik isteğinin başlatıldığı faturalama kapsamıdır. Kimliği bilmeniz önemlidir çünkü bu, makalenin ilerleyen bölümlerinde abonelik oluşturmak için kullanacağınız gerekli bir parametredir.

Belirli bir kayıt hesabı altında abonelik oluşturma

Aşağıdaki örnekte, önceki adımda seçilen kayıt hesabında Dev Team Subscription adlı bir abonelik oluşturulur.

Aşağıdaki yöntemlerden birini kullanarak bir abonelik diğer adı oluşturursunuz. Diğer ad oluştururken şunları yapmanızı öneririz:

  • Alfasayısal karakterler ve kısa çizgiler kullanma
  • Harfle başlayın ve alfasayısal karakterle bitirin
  • Nokta kullanmayın

Diğer ad, abonelik GUID'i yerine kullanıcı tanımlı bir dizenin basit değişimi için kullanılır. Başka bir deyişle, kısayol olarak kullanabilirsiniz. Diğer adlar hakkında daha fazla bilgi için Bkz . Diğer Ad - Oluşturma. Aşağıdaki örneklerde sampleAlias oluşturulur, ancak istediğiniz herhangi bir dizeyi kullanabilirsiniz.

Hesap Sahibi rolüne ek olarak birden çok kullanıcı rolünüz varsa hesap kimliğini Azure portalından almanız gerekir. Ardından, program aracılığıyla abonelik oluşturmak için kimliği kullanabilirsiniz.

Abone oluşturma isteği/diğer adı oluşturmak için PUT API’yi çağırın.

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

İstek gövdesinde, enrollmentAccounts hesaplarınızın birindeki id bilgisini billingScope olarak sağlayın.

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

Workload için izin verilen değerler Production ve DevTest değerleridir.

Response

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

İsteğin durumunu almak için aynı URL’de bir GET işlemi de yapabilirsiniz.

İste

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

Sürüyor durumu, provisioningState altında Accepted durumu olarak döndürülür.

Abonelik oluşturma ve subscriptionOwnerId değerini sahibi yapma

Hizmet sorumlusu yeni bir abonelik oluşturmak için Abonelik Diğer Adı API'sini kullandığında ve istekte yer additionalProperties almadığında, hizmet sorumlusu otomatik olarak yeni aboneliğin sahibi olur. Hizmet sorumlusunun sahibi olmasını istemiyorsanız ve subscriptionOwnerId değerini içinde additionalPropertiesbelirtebilirsinizsubscriptionTenantId. Bu işlem, belirtilen subscriptionOwnerId hizmeti hizmet sorumlusu değil, yeni aboneliğin sahibi yapar.

Örnek istek gövdesi:


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

Farklı bir kiracıda abonelik oluşturma

Abonelik Diğer Adı REST API'sini kullanarak, istek gövdesindeki parametresini subscriptionTenantId kullanarak farklı bir kiracıda abonelik oluşturabilirsiniz. Aboneliği oluşturmak için Azure Hizmet Sorumlunuzun (SPN) kendi ev kiracısından bir belirteç alması gerekir. Aboneliği oluşturduktan sonra, Sahipliği Kabul Et API'sini kullanarak aktarımı kabul etmek için hedef kiracıdan bir belirteç almanız gerekir.

Başka bir kiracıda EA abonelikleri oluşturma hakkında daha fazla bilgi için bkz . Diğer kiracıda abonelik oluşturma ve aktarım isteklerini görüntüleme.

ARM şablonu veya Bicep kullanma

Önceki bölümde PowerShell, CLI veya REST API ile nasıl abonelik oluşturulacağı gösterildi. Abonelik oluşturmayı otomatikleştirmeniz gerekiyorsa Azure Resource Manager şablonu (ARM şablonu) veya Bicep dosyası kullanmayı göz önünde bulundurun.

Aşağıdaki ARM şablonu bir abonelik oluşturur. için billingScopekayıt hesabı kimliğini belirtin. Abonelik kök yönetim grubunda oluşturulur. Aboneliği oluşturduktan sonra başka bir yönetim grubuna taşıyabilirsiniz.

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

Alternatif olarak, aboneliği oluşturmak için bir Bicep dosyası da kullanabilirsiniz.

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

Şablonu yönetim grubu düzeyinde dağıtın. Aşağıdaki örneklerde JSON ARM şablonunu dağıtma gösterilmektedir, ancak bunun yerine bir Bicep dosyası dağıtabilirsiniz.

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

İstek gövdesiyle:

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

Aboneliği yeni bir yönetim grubuna taşımak için aşağıdaki ARM şablonunu kullanın.

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

Veya aşağıdaki Bicep dosyası.

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

Azure Kurumsal aboneliği oluşturma API'sinin sınırlamaları

  • Bu API kullanılarak yalnızca Azure Kurumsal abonelikleri oluşturulabilir.
  • Kayıt hesabı başına 5.000 abonelik sınırı vardır. Hesap için bu sayıyı aşan abonelikler yalnızca Azure portalda oluşturulabilir. API aracılığıyla daha fazla abonelik oluşturmak için başka bir kayıt hesabı oluşturun. İptal edilen, silinen ve aktarılan aboneliklerin sayısı en fazla 5000 olabilir.
  • Hesap Sahibi olmayan ancak Azure rol tabanlı erişim denetimi aracılığıyla bir kayıt hesabına eklenen kullanıcılar Azure portalında abonelik oluşturamaz.

Sonraki adımlar