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

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

ملاحظة

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

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

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

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

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

ملاحظة

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

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

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

مرجع JSON الكامل

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

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

قالب التطبيق

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

{
  "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. في القسم ServiceManifestImport ، أضف سياسة تحديد الهوية للخدمة التي تستخدم الهوية المدارة. تقوم هذه السياسة بتعيين هوية 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>
    

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

قالب التطبيق

لتمكين التطبيق بهوية مدارة مخصصة للنظام، أضف خاصية الهوية إلى مورد التطبيق، مع نوع 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 وموفري موارد الهوية المدارة وبنية الخدمة، على التوالي، أن هذا المورد يجب أن يكون له هوية مدارة ضمنية (system assigned).

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

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

    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. قم بتحديث بيان الخدمة لإضافة عنصر إدارة الهوية داخل قسم الموارد مع الاسم المطابق لقيمة إعداد ServiceIdentityRef من تعريف IdentityBindingPolicy في بيان التطبيق:

    ServiceManifest.xml

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

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

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