إضافة شهادات أو إزالتها لمجموعة Service Fabric في Azure

يوصى بالتعرف على كيفية استخدام Service Fabric لشهادات X.509 والتعرف على سيناريوهات أمان نظام المجموعة. يجب أن تفهم ما هي شهادة نظام المجموعة وما الذي يتم استخدامه من أجلها، قبل المضي قدما.

يتمثل سلوك تحميل الشهادة الافتراضي لـ Azure Service Fabrics SDK في توزيع الشهادة المحددة واستخدامها بتاريخ انتهاء الصلاحية الأبعد في المستقبل؛ بغض النظر عن تعريف التكوين الأساسي أو الثانوي. يعد الرجوع إلى السلوك الكلاسيكي إجراء متقدما غير موصى به، ويتطلب تعيين قيمة معلمة الإعداد "UseSecondaryIfNewer" إلى false داخل التكوين الخاص بك Fabric.Code.

يتيح لك Service fabric تحديد شهادتي مجموعة، واحدة أساسية وأخرى، عند تكوين أمان الشهادة أثناء إنشاء نظام المجموعة، بالإضافة إلى شهادات العميل. ارجع إلى إنشاء نظام مجموعة azure عبر المدخل أو إنشاء مجموعة Azure عبر Azure Resource Manager للحصول على تفاصيل حول إعدادها في وقت الإنشاء. إذا قمت بتحديد شهادة نظام مجموعة واحدة فقط في وقت الإنشاء، إذَا استخدامها كشهادة أساسية. بعد إنشاء نظام المجموعة، يمكنك إضافة شهادة جديدة كشهادة ثانوية.

إشعار

بالنسبة إلى نظام مجموعة آمن، ستحتاج دائما إلى توزيع شهادة مجموعة صالحة واحدة على الأقل (غير مبطلة وغير منتهية الصلاحية) (أساسية أو ثانوية) (إذا لم يكن الأمر كذلك، تتوقف المجموعة عن العمل). قبل 90 يوما من انتهاء صلاحية جميع الشهادات الصالحة، يقوم النظام بإنشاء تتبع تحذير وحدث صحي تحذيري على العقدة. هذه هي حاليا الإشعارات الوحيدة التي ترسلها Service Fabric فيما يتعلق بانتهاء صلاحية الشهادة.

إشعار

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

إضافة شهادة نظام مجموعات ثانوية باستخدام المدخل

لا يمكن إضافة شهادة الكتلة الثانوية من خلال مدخل Microsoft Azure؛ استخدمAzure Resource Manager.

إزالة شهادة نظام مجموعات باستخدام المدخل

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

لإزالة شهادة أمان مجموعة غير مستخدمة، انتقل إلى قسم الأمان وحدد خيار "حذف" من قائمة السياق في الشهادة غير المستخدمة.

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

إضافة شهادة ثانوية باستخدام Azure Resource Manager

تفترض هذه الخطوات أنك على دراية بكيفية عمل Resource Manager وقمت بتوزيع مجموعة Service Fabric واحدة على الأقل باستخدام قالب Resource Manager، وأن يكون القالب الذي استخدمته لإعداد نظام المجموعة مفيدا. من المفترض أيضا أنك مرتاح لاستخدام JSON.

إشعار

إذا كنت تبحث عن نموذج قالب ومعلمات يمكنك استخدامها للمتابعة أو كنقطة بداية، فقم بتنزيلها من git-repo هذا.

حرر قالب إدارة الموارد الخاص بك

لسهولة المتابعة، تحتوي العينة 5-VM-1-NodeTypes-Secure_Step2.JSON على جميع التعديلات التي سنجريها. العينة متاحة في git-repo.

تأكد من اتباع جميع الخطوات

  1. افتح قالب Resource Manager الذي استخدمته لتوزيع نظام المجموعة. (إذا قمت بتنزيل النموذج من الريبو السابق، فاستخدم 5-VM-1-NodeTypes-Secure_Step1.JSON لتوزيع مجموعة آمنة ثم افتح هذا القالب).

  2. أضف معلمتين جديدتين "secCertificateThumbprint" و "secCertificateUrlValue" من النوع "string" إلى قسم المعلمات في القالب الخاص بك. يمكنك نسخ مقتطف التعليمات البرمجية التالي وإضافته إلى القالب. اعتمادا على مصدر القالب الخاص بك، قد يكون لديك بالفعل هذه محددة، إذا كان الأمر كذلك، انتقل إلى الخطوة التالية.

       "secCertificateThumbprint": {
          "type": "string",
          "metadata": {
            "description": "Certificate Thumbprint"
          }
        },
        "secCertificateUrlValue": {
          "type": "string",
          "metadata": {
            "description": "Refers to the location URL in your key vault where the certificate was uploaded, it is should be in the format of https://<name of the vault>.vault.azure.net:443/secrets/<exact location>"
          }
        },
    
    
  3. إجراء تغييرات على مورد Microsoft.ServiceFabric/clusters - حدد تعريف المورد "Microsoft.ServiceFabric/clusters" في القالب الخاص بك. ضمن خصائص هذا التعريف، ستجد علامة JSON "Certificate" والتي يجب أن تبدو مثل قصاصة برمجية JSON التالية:

          "properties": {
            "certificate": {
              "thumbprint": "[parameters('certificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
         }
    

    أضف علامة جديدة "thumbprintSecondary" وأعطها قيمة "[parameters('secCertificateThumbprint')]".

    لذلك يجب أن يبدو تعريف المورد الآن كما يلي (اعتمادا على مصدر القالب الخاص بك، قد لا يكون تماما مثل القصاصة البرمجية أدناه).

          "properties": {
            "certificate": {
              "thumbprint": "[parameters('certificateThumbprint')]",
              "thumbprintSecondary": "[parameters('secCertificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
         }
    

    إذا كنت تريد لفة على الشهادة، فحدد الشهادة الجديدة كعيار أساسي وحرك الإعداد الأساسي الحالي كثانوي. ينتج عن ذلك ترحيل الشهادة الأساسية الحالية إلى الشهادة الجديدة في خطوة توزيع واحدة.

          "properties": {
            "certificate": {
              "thumbprint": "[parameters('secCertificateThumbprint')]",
              "thumbprintSecondary": "[parameters('certificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
         }
    
  4. إجراء تغييرات على كافة تعريفات موارد Microsoft.Compute/virtualMachineScaleSets - حدد تعريف مورد Microsoft.Compute/virtualMachineScaleSets. قم بالتمرير إلى "الموزع": "Microsoft.Azure.ServiceFabric" ، ضمن "virtualMachineProfile".

    في إعدادات موزع Service Fabric، يجب أن ترى شيئا من هذا القبيل.

    Json_Pub_Setting1

    إضافة إدخالات الشهادة الجديدة إليها

                   "certificateSecondary": {
                        "thumbprint": "[parameters('secCertificateThumbprint')]",
                        "x509StoreName": "[parameters('certificateStoreValue')]"
                        }
                      },
    
    

    يجب أن تبدو الخصائص الآن كالتالي

    Json_Pub_Setting2

    إذا كنت تريد لفة على الشهادة، فحدد الشهادة الجديدة كعيار أساسي وحرك الإعداد الأساسي الحالي كثانوي. ينتج عن ذلك ترحيل الشهادة الحالية إلى الشهادة الجديدة في خطوة توزيع واحدة.

                   "certificate": {
                       "thumbprint": "[parameters('secCertificateThumbprint')]",
                       "x509StoreName": "[parameters('certificateStoreValue')]"
                         },
                   "certificateSecondary": {
                        "thumbprint": "[parameters('certificateThumbprint')]",
                        "x509StoreName": "[parameters('certificateStoreValue')]"
                        }
                      },
    

    يجب أن تبدو الخصائص الآن كالتالي
    Json_Pub_Setting3

  5. إجراء تغييرات على كافة تعريفات موارد Microsoft.Compute/virtualMachineScaleSets - حدد تعريف مورد Microsoft.Compute/virtualMachineScaleSets. قم بالتمرير إلى "vaultCertificates": ، ضمن "OSProfile". يجب أن تبدو على النحو التالي.

    Json_Pub_Setting4

    أضف secCertificateUrlValue إليه. استخدم القصاصة البرمجية التالية:

                      {
                        "certificateStore": "[parameters('certificateStoreValue')]",
                        "certificateUrl": "[parameters('secCertificateUrlValue')]"
                      }
    
    

    الآن يجب أن يبدو Json الناتج شيئا من هذا القبيل. Json_Pub_Setting5

إشعار

تأكد من تكرار الخطوتين 4 و5 لكافة تعريفات موارد Nodetypes/Microsoft.Compute/virtualMachineScaleSets في القالب الخاص بك. إذا فاتتك أحدها، فلن يتم تثبيت الشهادة على مجموعة مقياس الجهاز الظاهري هذه وسيكون لديك نتائج غير متوقعة في مجموعتك، بما في ذلك المجموعة التي تنخفض (إذا انتهى بك الأمر بدون شهادات صالحة يمكن للمجموعة استخدامها للأمان. لذا تحقق مرتين، قبل المضي قدما.

تحرير ملف القالب ليعكس المعلمات الجديدة التي أضفتها أعلاه

إذا كنت تستخدم العينة من git-repo للمتابعة، فيمكنك البدء في إجراء تغييرات في العينة 5-VM-1-NodeTypes-Secure.parameters_Step2.JSON

قم بتحرير ملف معلمة قالب Resource Manager الخاص بك، وأضف المعلمتين الجديدتين لـ secCertificateThumbprint و secCertificateUrlValue.

    "secCertificateThumbprint": {
      "value": "thumbprint value"
    },
    "secCertificateUrlValue": {
      "value": "Refers to the location URL in your key vault where the certificate was uploaded, it is should be in the format of https://<name of the vault>.vault.azure.net:443/secrets/<exact location>"
     },

نشر القالب إلى Azure

  • أنت الآن جاهز لتوزيع القالب الخاص بك إلى Azure. افتح موجه أوامر Azure PowerShell الإصدار 1+.
  • سجل الدخول إلى حساب Azure الخاص بك وحدد اشتراك Azure المحدد. هذه خطوة مهمة للأشخاص الذين لديهم حق الوصول إلى أكثر من اشتراك Azure واحد.
Connect-AzAccount
Select-AzSubscription -SubscriptionId <Subscription ID> 

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

Test-AzResourceGroupDeployment -ResourceGroupName <Resource Group that your cluster is currently deployed to> -TemplateFile <PathToTemplate>

توزيع القالب إلى مجموعة الموارد الخاصة بك. استخدم نفس مجموعة الموارد التي تم توزيع مجموعتك فيها حاليا. قم بتشغيل الأمر New-AzResourceGroupDeployment. لا تحتاج إلى تحديد الوضع، لأن القيمة الافتراضية تزايدية.

إشعار

إذا قمت بتعيين الوضع إلى إكتمل، فيمكنك حذف الموارد غير الموجودة في القالب عن غير قصد. لذلك لا تستخدمه في هذا السيناريو.

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <Resource Group that your cluster is currently deployed to> -TemplateFile <PathToTemplate>

فيما يلي مثال مملوء لنفس PowerShell.

$ResourceGroup2 = "chackosecure5"
$TemplateFile = "C:\GitHub\Service-Fabric\ARM Templates\Cert Rollover Sample\5-VM-1-NodeTypes-Secure_Step2.json"
$TemplateParmFile = "C:\GitHub\Service-Fabric\ARM Templates\Cert Rollover Sample\5-VM-1-NodeTypes-Secure.parameters_Step2.json"

New-AzResourceGroupDeployment -ResourceGroupName $ResourceGroup2 -TemplateParameterFile $TemplateParmFile -TemplateUri $TemplateFile -clusterName $ResourceGroup2

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

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

######## Set up the certs on your local box
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\TrustedPeople -FilePath c:\Mycertificates\chackdanTestCertificate9.pfx -Password (ConvertTo-SecureString -String abcd123 -AsPlainText -Force)
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\My -FilePath c:\Mycertificates\chackdanTestCertificate9.pfx -Password (ConvertTo-SecureString -String abcd123 -AsPlainText -Force)

للرجوع إليها بسرعة هنا هو الأمر للاتصال بمجموعة آمنة

$ClusterName= "chackosecure5.westus.cloudapp.azure.com:19000"
$CertThumbprint= "70EF5E22ADB649799DA3C8B6A6BF7SD1D630F8F3" 

Connect-serviceFabricCluster -ConnectionEndpoint $ClusterName -KeepAliveIntervalInSec 10 `
    -X509Credential `
    -ServerCertThumbprint $CertThumbprint  `
    -FindType FindByThumbprint `
    -FindValue $CertThumbprint `
    -StoreLocation CurrentUser `
    -StoreName My

للرجوع إليها بسرعة هنا هو الأمر للحصول على حماية المجموعة

Get-ServiceFabricClusterHealth 

توزيع شهادات العميل إلى المجموعة.

يمكنك استخدام نفس الخطوات الموضحة في الخطوات 5 السابقة لتوزيع الشهادات من مخزن مفاتيح إلى العقد. تحتاج فقط إلى تحديد واستخدام معلمات مختلفة.

إضافة شهادات العميل أو إزالتها

بالإضافة إلى شهادات نظام المجموعة، يمكنك إضافة شهادات عميل لتنفيذ عمليات الإدارة على مجموعة Service Fabric.

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

يمكنك تحديد أي عدد من شهادات العميل. ينتج عن كل إضافة/حذف تحديث تكوين إلى مجموعة Service Fabric.

إضافة شهادات العميل - المسؤول أو Read-Only عبر البوابة الإلكترونية

  1. انتقل إلى قسم الأمان، وحدد الزر "+ مصادقة" أعلى قسم الأمان.
  2. في قسم "إضافة مصادقة"، اختر "نوع المصادقة" - "عميل للقراءة فقط" أو "عميل المسؤول"
  3. الآن اختر طريقة التفويض. يشير هذا إلى Service Fabric ما إذا كان يجب البحث عن هذه الشهادة باستخدام اسم الموضوع أو thumbprint. بشكل عام، ليس من الممارسات الأمنية الجيدة استخدام طريقة التفويض لاسم الموضوع.

إضافة شهادة العميل

حذف شهادات العميل - المسؤول أو Read-Only باستخدام البوابة الإلكترونية

لإزالة شهادة ثانوية من استخدامها لأمان المجموعة، انتقل إلى قسم الأمان وحدد خيار "حذف" من قائمة السياق في الشهادة المحددة.

إضافة شهادات التطبيق إلى مجموعة مقياس جهاز ظاهري

لتوزيع شهادة تستخدمها للتطبيقات الخاصة بك إلى مجموعتك، راجع نموذج البرنامج النصي PowerShell .

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

اقرأ هذه المقالات للحصول على مزيد من المعلومات حول إدارة المجموعات: