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:
- Kaydınızın Kuruluş Yöneticisi sizi Hesap Sahibi yapabilir (oturum açma gereklidir) ve bu durumda Kayıt Hesabının Sahibi olursunuz.
- Kayıt Hesabının mevcut Sahibi size erişim verebilir.
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 additionalProperties
belirtebilirsinizsubscriptionTenantId
. 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 billingScope
kayı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
- Artık bir abonelik oluşturduğunuza göre, bu özelliği diğer kullanıcılara ve hizmet sorumlularına vekleyebilirsiniz. Daha fazla bilgi için bkz. Azure Kurumsal abonelikleri oluşturma erişimi verme (önizlemi).
- Yönetim gruplarını kullanarak çok fazla sayıda aboneliği yönetme hakkında daha fazla bilgi için bkz. Kaynaklarınızı Azure yönetim gruplarıyla düzenleme.
- Aboneliğin yönetim grubunu değiştirmek için bkz . Abonelikleri taşıma.
- REST API kullanarak gelişmiş abonelik oluşturma senaryoları için bkz . Diğer Ad - Oluşturma.