استخدام تطبيق بهوية مدارة إلى مجموعة مدارة بنسيج الخدمة

لنشر تطبيق Service Fabric بهوية مدارة، يجب نشر التطبيق من خلال Azure Resource Manager، عادةً باستخدام قالب Azure Resource Manager. لمزيد من المعلومات حول كيفية استخدام تطبيق نسيج الخدمة من خلال Azure Resource Manager، راجع استخدام تطبيق على مجموعة مدارة باستخدام Azure Resource Manager.

إشعار

لا يمكن أن تحتوي التطبيقات التي لم يتم نشرها كمورد Azure على هويات مدارة.

يتم دعم نشر تطبيق نسيج الخدمة مع إدارة الهوية مع إصدار واجهة برمجة التطبيقات "2021-05-01" على المجموعات المدارة.

عينات من قوالب المجموعة المدارة متوفرة هنا: قوالب المجموعة المدارة بنسيج الخدمة

دعم الهوية المدارة في الكتلة المدارة بنسيج الخدمة

عندما يتم تكوين تطبيق نسيج الخدمة باستخدام الهويات المدارة لموارد Azure ونشرها على المجموعة، فسيشغل التكوين التلقائي لـ خدمة رمز الهوية المدارة على المجموعة المدارة لنسيج الخدمة. هذه الخدمة مسؤولة عن مصادقة تطبيقات Service Fabric باستخدام الهويات المدارة، والحصول على رموز الوصول نيابة عنها. بمجرد تمكين الخدمة، يمكنك رؤيتها في Service Fabric Explorer ضمن قسم System في الجزء الأيسر، والذي يعمل تحت اسم fabric:/System/ManagedIdentityTokenService.

إشعار

في المرة الأولى التي يتم فيها نشر أحد التطبيقات باستخدام الهويات المدارة، يجب أن تتوقع رؤية نشر أطول لمرة واحدة بسبب تغيير تكوين الكتلة التلقائي. يجب أن تتوقع أن يستغرق هذا من 15 دقيقة لتجمع منطقي إلى 45 دقيقة لتجمع يمتد عبر المنطقة. إذا كانت هناك أي عمليات نشر أخرى في إصدار التقييم، يجب أن ينتظر تكوين الهوية المدارة حتى تكتمل أولا.

يدعم مورد التطبيق تعيين كل من SystemAssigned أو UserAssigned ويمكن إجراء التعيين كما هو موضح في المقتطف أدناه.

{
  "type": "Microsoft.ServiceFabric/managedclusters/applications",
  "apiVersion": "2021-05-01",
  "identity": {
    "type": "SystemAssigned",
    "userAssignedIdentities": {}
  },
}

مرجع JSON الكامل

الهوية المعينة من قبل المستخدم

لتمكين التطبيق بهوية يحددها المستخدم، قم أولًا بإضافة خاصية الهوية إلى مورد التطبيق من خلال النوع المعين من قبل المستخدم والهويات المشار إليها التي تم تعيينها بواسطة المستخدم. ثم أضف قسم الهويات المدارة داخل قسم خصائص لمورد التطبيق الذي يحتوي على قائمة من الأسماء المألوفة لتعيين mainId لكل هوية معينة من قبل المستخدم. لمزيد من المعلومات حول الهويات المعينة من قبل المستخدم، راجع إنشاء أو سرد أو حذف هوية مُدارة يعينها المستخدم .

قالب التطبيق

لتمكين التطبيق بالهوية المعينة من قبل المستخدم، قم أولًا بإضافة خاصية الهوية إلى مورد التطبيق من خلال النوع معينة من قبل المستخدم والهويات المعينة للمستخدم المشار إليه، ثم أضف كائن هويات مدارة بالداخل قسم الخصائص الذي يحتوي على قائمة من الأسماء المألوفة لتعيين mainId لكل من الهويات المعينة للمستخدم.

{
  "apiVersion": "2021-05-01",
  "type": "Microsoft.ServiceFabric/managedclusters/applications",
  "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[parameters('applicationVersion')]",
    "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]"
  ],
  "identity": {
    "type" : "userAssigned",
    "userAssignedIdentities": {
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]": {}
    }
  },
  "properties": {
    "version": "[parameters('applicationVersion')]",
    "parameters": {
    },
    "managedIdentities": [
      {
        "name" : "[parameters('userAssignedIdentityName')]",
        "principalId" : "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName')), '2018-11-30').principalId]"
      }
    ]
  }
}

في المثال الوارد أعلاه، يتم استخدام اسم مورد الهوية المعينة من قبل المستخدم كاسم ودي للهوية المدارة للتطبيق. تفترض الأمثلة التالية أن الاسم المألوف الفعلي هو "AdminUser".

حزمة مخصصة للتطبيق

  1. لكل هوية محددة في قسم managedIdentities في قالب إدارة موارد Azure، أضف علامة <ManagedIdentity> في بيان التطبيق تحت قسم المبادئ. يجب أن تطابق السمة Name خاصية name المحددة في قسم managedIdentities.

    ApplicationManifest.xml

      <Principals>
        <ManagedIdentities>
          <ManagedIdentity Name="AdminUser" />
        </ManagedIdentities>
      </Principals>
    
  2. في قسم استيراد بيان الخدمة، أضف نهج ربط الخدمة للخدمة التي تستخدم الهوية المُدارة. يعين النهج AdminUser إلى اسم هوية خاص بالخدمة يحتاج إلى إضافته إلى بيان الخدمة لاحقًا.

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="AdminUser" />
        </Policies>
      </ServiceManifestImport>
    
  3. قم بتحديث بيان الخدمة لإضافة هوية مدارة داخل قسم موارد بالاسم المطابق لـ ServiceIdentityRef في IdentityBindingPolicy بيان التطبيق:

    ServiceManifest.xml

      <Resources>
        ...
        <ManagedIdentities DefaultIdentity="WebAdmin">
          <ManagedIdentity Name="WebAdmin" />
        </ManagedIdentities>
      </Resources>
    

الهوية المُدارة التي يُعيّنها النظام

قالب التطبيق

لتمكين التطبيق بهوية مُدارة معينة من قبل النظام، أضف خاصية identity إلى مورد التطبيق، بالنوع systemAssigned كما هو موضح في المثال أدناه:

    {
      "apiVersion": "2021-05-01",
      "type": "Microsoft.ServiceFabric/managedclusters/applications",
      "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[concat('Microsoft.ServiceFabric/clusters/', parameters('clusterName'), '/applicationTypes/', parameters('applicationTypeName'), '/versions/', parameters('applicationTypeVersion'))]"
      ],
      "identity": {
        "type" : "systemAssigned"
      },
      "properties": {
        "typeName": "[parameters('applicationTypeName')]",
        "typeVersion": "[parameters('applicationTypeVersion')]",
        "parameters": {
        }
      }
    }

تُعلن هذه الخاصية (إلى Azure Resource Manager، وManaged Identity وService Fabric Resource Providers، على التوالي، أن هذا المورد يجب أن تكون له هوية مُدارة ضمنية (system assigned).

حزمة التطبيق والخدمة

  1. حدِّث بيان التطبيق لإضافة عنصر ManagedIdentity في قسم Principals الذي يحتوي على إدخال واحد كما هو موضح أدناه:

    ApplicationManifest.xml

    <Principals>
      <ManagedIdentities>
        <ManagedIdentity Name="SystemAssigned" />
      </ManagedIdentities>
    </Principals>
    

    يقوم هذا بتعيين الهوية المعينة للتطبيق كمورد لاسم مألوف، لمزيد من التخصيص للخدمات التي يتكون منها التطبيق.

  2. في القسم ServiceManifestImport المقابل للخدمة التي يتم تخصيص الهوية المُدارة لها، أضف عنصر IdentityBindingPolicy، كما هو موضح أدناه:

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="SystemAssigned" />
        </Policies>
      </ServiceManifestImport>
    

    يخصص هذا العنصر هوية التطبيق للخدمة؛ دون هذا التخصيص، لن تتمكن الخدمة من الوصول إلى هوية التطبيق. في المقتطف أعلاه، تم تعيين الهوية SystemAssigned (وهي كلمة رئيسية محجوزة) لتعريف الخدمة تحت الاسم المألوف WebAdmin.

  3. حدِّث بيان الخدمة لإضافة عنصر ManagedIdentity داخل قسم Resources مع تطابق الاسم مع قيمة الإعداد ServiceIdentityRef من تعريف IdentityBindingPolicy في بيان التطبيق:

    ServiceManifest.xml

      <Resources>
        ...
        <ManagedIdentities DefaultIdentity="WebAdmin">
          <ManagedIdentity Name="WebAdmin" />
        </ManagedIdentities>
      </Resources>
    

    هذا هو التعيين المكافئ للهوية للخدمة كما هو موضح أعلاه، ولكن من منظور تعريف الخدمة. يشار إلى الهوية هنا باسمها المألوف (WebAdmin)، كما هو معلن في بيان الطلب.

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