أنشئ اشتراكات اتفاقية Azure Enterprise برمجياً باستخدام أحدث واجهات برمجة التطبيقات

تساعدك هذه المقالة في إنشاء اشتراكات اتفاقية Azure Enterprise (EA) برمجياً لحساب فوترة EA باستخدام أحدث إصدارات واجهة برمجة التطبيقات. إذا كنت لا تزال تستخدم إصدار المعاينة الأقدم، فشاهد إنشاء واجهات برمجة التطبيقات القديمة لاشتراكات Azure برمجيا.

في هذه المقالة، ستتعرف على كيفية إنشاء اشتراكات برمجياً باستخدام مدير موارد Azure.

عند إنشاء اشتراك Azure برمجيا، فإنه يندرج ضمن شروط الاتفاقية حيث تتلقى خدمات Azure من Microsoft أو بائع معتمد. لمزيد من المعلومات، راجع معلومات Microsoft Azure القانونية .

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

لا يمكنك إنشاء خطط الدعم برمجيا. يمكنك شراء خطة دعم جديدة أو ترقية خطة في مدخل Microsoft Azure. انتقل إلى Help + support ثم في أعلى الصفحة، حدد Choose the right support plan.

المتطلبات الأساسية

يجب أن يكون لدى المستخدم دور مسؤول المؤسسة أو دور المالك في حساب التسجيل لإنشاء اشتراك. هناك طريقتان للحصول على دور المالك في حساب التسجيل:

  • يمكن لمسؤول المؤسسة لتسجيلك أن يجعلك مالك حساب (تسجيل الدخول مطلوب) مما يجعلك مالكا لحساب التسجيل.
  • يمكن للمالك الحالي لحساب التسجيل أن يمنحك حق الوصول .

لاستخدام كيان خدمة لإنشاء اشتراك EA، يجب أن يمنح مالك حساب التسجيل كيان الخدمة هذا القدرة على إنشاء اشتراكات.

عند استخدام كيان خدمة لإنشاء اشتراكات، استخدم ObjectId لتطبيق Microsoft Entra Enterprise كمعرف كيان الخدمة باستخدام Microsoft Graph PowerShell أو Azure CLI. يمكنك أيضا استخدام الخطوات في البحث عن كيان الخدمة ومعرف المستأجر للعثور على معرف العنصر في مدخل Microsoft Azure لكيان خدمة موجود.

لمزيد من المعلومات حول طلب واجهة برمجة تطبيقات تعيين دور EA، راجع تعيين أدوار لأسماء كيان خدمة Azure اتفاقية Enterprise. تتضمن المقالة قائمة الأدوار (ومعرفات تعريف الدور) التي يمكن تعيينها إلى كيان الخدمة.

إشعار

  • تأكد من استخدام إصدار واجهة برمجة التطبيقات الصحيح لمنح أذونات مالك حساب التسجيل. بالنسبة لهذه المقالة وواجهات برمجة التطبيقات الموثقة فيه، استخدم واجهة برمجة التطبيقات 2019-10-01-preview .
  • إذا كنت تقوم بالترحيل لاستخدام واجهات برمجة التطبيقات الأحدث، فإن التكوين السابق الذي تم إجراؤه مع الإصدار 2015-07-01 لا يحول تلقائيا للاستخدام مع واجهات برمجة التطبيقات الأحدث.
  • تكون معلومات الحساب للتسجيل مرئية فقط عندما يكون دور المستخدم هو مالك الحساب. عندما تكون للمستخدم أدوار متعددة، تستخدم واجهة برمجة التطبيقات (API) الدور الأقل تقييدًا للمستخدم.

ابحث عن الحسابات التي لديك حق الوصول إليها

بعد إضافتك إلى حساب التسجيل المرتبط بمالك الحساب، يستخدم Azure علاقة الحساب بالتسجيل لتحديد مكان فوترة رسوم الاشتراك. يتم إصدار فاتورة بجميع الاشتراكات التي تم إنشاؤها بموجب الحساب إلى تسجيل EA الموجود به الحساب. لإنشاء اشتراكات، يجب عليك تمرير قيم حول حساب التسجيل وأساسيات المستخدم لامتلاك الاشتراك.

لتشغيل الأوامر التالية، يجب تسجيل الدخول إلى الدليل الرئيسي لمالك الحساب، وهو الدليل الذي يتم إنشاء الاشتراكات فيه بشكل افتراضي.

طلب إدراج جميع حسابات التسجيل التي لديك حق الوصول إليها:

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

تسرد استجابة واجهة برمجة التطبيقات جميع حسابات التسجيل التي يمكنك الوصول إليها:

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

قيم نطاق الفوترة و id هي نفس الشيء. id لحساب التسجيل الخاص بك هو نطاق الفوترة الذي يتم بموجبه بدء طلب الاشتراك. من المهم معرفة المعرف لأنه معلمة مطلوبة تستخدمها لاحقا في المقالة لإنشاء اشتراك.

إنشاء اشتراكات تحت حساب تسجيل محدد

ينشئ المثال التالي اشتراكاً باسم Dev Team Subscription في حساب التسجيل المحدد في الخطوة السابقة.

باستخدام إحدى الطرق التالية، يمكنك إنشاء اسم مستعار للاشتراك. نوصي بما يلي عند إنشاء الاسم المستعار:

  • استخدم الأحرف الأبجدية الرقمية والواصلات
  • ابدأ بحرف وانتهى بحرف أبجدي رقمي
  • لا تستخدم فترات

يتم استخدام الاسم المستعار للاستبدال البسيط لسلسلة معرفة من قبل المستخدم بدلاً من GUID للاشتراك. بمعنى آخر، يمكنك استخدامه على أنه اختصار. يمكنك معرفة المزيد بشأن الاسم المستعار فيالاسم المستعار - إنشاء. في الأمثلة الآتية،sampleAliasيتم إنشاء ولكن يمكنك استخدام أي سلسلة تريدها.

إذا كان لديك عدة أدوار للمستخدم بالإضافة إلى دور مالك الحساب، يجب عليك استرداد معرف الحساب من مدخل Microsoft Azure. بعد ذلك يمكنك استخدام المعرّف لإنشاء اشتراكات برمجيًا.

اتصل بواجهة برمجة تطبيقات PUT لإنشاء طلب إنشاء اشتراك / اسم مستعار.

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

في نص الطلب، قم بتوفير ك billingScope id من أحد enrollmentAccounts.

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

القيم المسموح بها هي Workload Production و DevTest.

استجابة

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

يمكنك القيام بـ GET على نفس عنوان URL للحصول على حالة الطلب.

Request

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

استجابة

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

يتم إرجاع حالة قيد التقدم كحالة Accepted ضمن provisioningState.

إنشاء اشتراك وجعل subscriptionOwnerId هو المالك

عندما يستخدم كيان الخدمة واجهة برمجة تطبيقات الاسم المستعار للاشتراك لإنشاء اشتراك جديد ولا يتضمن additionalProperties في الطلب، يصبح كيان الخدمة تلقائيا مالك الاشتراك الجديد. إذا كنت لا تريد أن يكون كيان الخدمة هو المالك، يمكنك تحديد subscriptionTenantId و subscriptionOwnerId في additionalProperties. تجعل هذه العملية مالك الاشتراك الجديد المحدد subscriptionOwnerId ، وليس كيان الخدمة.

نموذج نص الطلب:


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

إنشاء اشتراكات في مستأجر مختلف

باستخدام الاشتراك Alias REST API، يمكنك إنشاء اشتراك في مستأجر مختلف باستخدام المعلمة subscriptionTenantId في نص الطلب. يجب أن يحصل Azure Service Principal (SPN) على رمز مميز من مستأجر المنزل الخاص به لإنشاء الاشتراك. بعد إنشاء الاشتراك، يجب أن تحصل على رمز مميز من المستأجر الهدف لقبول النقل باستخدام واجهة برمجة تطبيقات قبول الملكية .

لمزيد من المعلومات حول إنشاء اشتراكات EA في مستأجر آخر، راجع إنشاء اشتراك في مستأجر آخر وعرض طلبات النقل.

استخدم قالب ARM أو العضلة ذات الرأسين

أظهر القسم السابق كيفية إنشاء اشتراك باستخدام PowerShell أو CLI أو واجهة برمجة تطبيقات REST. إذا كنت بحاجة إلى أتمتة إنشاء الاشتراكات، ففكر في استخدام قالب Azure Resource Manager (قالب ARM) أو ملف Bicep.

ينشئ نموذج ARM التالي اشتراكاً. بالنسبة إلى billingScope، قم بتوفير معرف حساب التسجيل. تم إنشاء الاشتراك في مجموعة إدارة الجذر. بعد إنشاء الاشتراك، يمكنك نقله إلى مجموعة إدارة أخرى.

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

أو استخدم ملف 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
  }
}

انشر القالب على مستوى مجموعة الإدارة. تظهر الأمثلة التالية نشر قالب ARM JSON ولكن يمكنك نشر ملف Bicep بدلاً من ذلك.

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

مع نص الطلب:

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

لنقل اشتراك إلى مجموعة إدارة جديدة، استخدم نموذج مدير موارد Azure التالي.

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

أو ملف 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}'
}

قيود إنشاء اشتراك واجهة برمجة التطبيقاتAzure Enterprise

  • يتم إنشاء اشتراكات Azure Enterprise فقط باستخدام واجهة برمجة التطبيقات.
  • هناك حد 5000 اشتراك لكل حساب تسجيل. بعد ذلك، لا يمكن إنشاء المزيد من الاشتراكات للحساب إلا في مدخل Azure. لإنشاء المزيد من الاشتراكات من خلال واجهة برمجة التطبيقات، قم بإنشاء حساب تسجيل آخر. تحتسب الاشتراكات التي تم إلغاؤها وحذفها وتحويلها من حد 5000.
  • لا يمكن للمستخدمين الذين ليسوا مالكي حسابات، ولكن تمت إضافتهم إلى حساب تسجيل عبر التحكم في الوصول المستند إلى الدور في Azure، إنشاء اشتراكات في مدخل Microsoft Azure.

الخطوات التالية