الاتصال بنظام مجموعة آمن

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

الاتصال بمجموعة آمنة باستخدام واجهة سطر الأوامر الخاصة بـ Azure Service Fabric (sfctl)

هناك بعض الطرق المختلفة للاتصال بنظام مجموعة آمنة باستخدام واجهة سطر الأوامر الخاصة بـ Service Fabric (sfctl). عند استخدام شهادة عميل للمصادقة، يجب أن تتطابق تفاصيل الشهادة مع شهادة مُوزعة على عقد نظام المجموعة. إذا كانت شهادتك تحتوي على المراجع المُصدقة (CAs)، فستحتاج إلى تحديد المراجع المُصدقة الموثوقة بشكل إضافي.

يمكنك الاتصال بنظام مجموعة باستخدام الأمر sfctl cluster select.

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

openssl pkcs12 -in your-cert-file.pfx -out your-cert-file.pem -nodes -passin pass:your-pfx-password

إذا لم يكن ملف .pfx محمياً بكلمة مرور، فاستخدم -passin pass: للمعلمة الأخيرة.

لتحديد شهادة العميل كملف pem، حدد مسار الملف في الوسيطة --pem. على سبيل المثال:

sfctl cluster select --endpoint https://testsecurecluster.com:19080 --pem ./client.pem

ستُطالب ملفات pem المحمية بكلمة مرور كلمة مرور قبل تشغيل أي أمر.

لتحديد شهادة، مفتاح مزدوج استخدم الوسيطات --cert و--key لتحديد مسارات الملف لكل ملف معني.

sfctl cluster select --endpoint https://testsecurecluster.com:19080 --cert ./client.crt --key ./keyfile.key

في بعض الأحيان تفشل الشهادات المستخدمة لتأمين نظام مجموعات الاختبار أو التطوير في التحقق من صحة الشهادة. لتجاوز التحقق من الشهادة، حدد الخيار --no-verify. على سبيل المثال:

تحذير

لا تستخدم الخيار no-verify عند الاتصال بنظام مجموعات Service Fabric.

sfctl cluster select --endpoint https://testsecurecluster.com:19080 --pem ./client.pem --no-verify

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

sfctl cluster select --endpoint https://testsecurecluster.com:19080 --pem ./client.pem --ca ./trusted_ca

بعد الاتصال، يجب أن تكون قادراً على تشغيل أوامر sfctl أخرى للتفاعل مع نظام المجموعة.

الاتصال بنظام مجموعة باستخدام PowerShell

قبل إجراء عمليات على نظام مجموعة من خلال PowerShell، أنشئ أولاً اتصالاً بنظام المجموعة. يُستخدم اتصال نظام المجموعة لجميع الأوامر اللاحقة في جلسة PowerShell المحددة.

الاتصال بنظام مجموعة غير آمنة

للاتصال بنظام مجموعة غير آمنة، وفر عنوان نهاية نظام المجموعة إلى الأمر Connect-ServiceFabricCluster:

Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000 

الاتصال بمجموعة آمنة باستخدام معرف Microsoft Entra

للاتصال بمجموعة آمنة تستخدم معرف Microsoft Entra لتخويل وصول مسؤول نظام المجموعة، قم بتوفير بصمة إبهام شهادة نظام المجموعة واستخدم علامة AzureActiveDirectory .

Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000 `
-ServerCertThumbprint <Server Certificate Thumbprint> `
-AzureActiveDirectory

الاتصال بنظام مجموعة آمنة باستخدام شهادة عميل

قم بتشغيل أمر PowerShell التالي للاتصال بنظام مجموعة آمنة يستخدم شهادات العميل لتخويل وصول المسؤول.

الاتصال باستخدام اسم شائع للشهادة

قم بتوفير الاسم الشائع لشهادة نظام المجموعة والاسم الشائع لشهادة العميل ذات الأذونات المعطاة لإدارة نظام المجموعة. يجب أن تتطابق تفاصيل الشهادة مع شهادة على عقد نظام المجموعة.

Connect-serviceFabricCluster -ConnectionEndpoint $ClusterName -KeepAliveIntervalInSec 10 `
    -X509Credential `
    -ServerCommonName <certificate common name>  `
    -FindType FindBySubjectName `
    -FindValue <certificate common name> `
    -StoreLocation CurrentUser `
    -StoreName My 

ServerCommonName هو الاسم الشائع لشهادة الخادم المثبتة على عقد نظام المجموعة. FindValue هو الاسم الشائع لشهادة عميل المسؤول. عند ملء المعلمات، يبدو الأمر مثل المثال التالي:

$ClusterName= "sf-commonnametest-scus.southcentralus.cloudapp.azure.com:19000"
$certCN = "sfrpe2eetest.southcentralus.cloudapp.azure.com"

Connect-serviceFabricCluster -ConnectionEndpoint $ClusterName -KeepAliveIntervalInSec 10 `
    -X509Credential `
    -ServerCommonName $certCN  `
    -FindType FindBySubjectName `
    -FindValue $certCN `
    -StoreLocation CurrentUser `
    -StoreName My 

الاتصال باستخدام بصمة إبهام الشهادة

قم بتوفير بصمة إبهام شهادة نظام المجموعة وبصمة إبهام شهادة العميل التي أُعطيت أذونات لإدارة نظام المجموعة. يجب أن تتطابق تفاصيل الشهادة مع شهادة على عقد نظام المجموعة.

Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000 `  
          -KeepAliveIntervalInSec 10 `  
          -X509Credential -ServerCertThumbprint <Certificate Thumbprint> `  
          -FindType FindByThumbprint -FindValue <Certificate Thumbprint> `  
          -StoreLocation CurrentUser -StoreName My

ServerCertThumbprint هي بصمة إبهام شهادة الخادم المثبتة على عقد نظام المجموعة. FindValue هي بصمة إبهام شهادة عميل المسؤول. عند ملء المعلمات، يبدو الأمر مثل المثال التالي:

Connect-ServiceFabricCluster -ConnectionEndpoint clustername.westus.cloudapp.azure.com:19000 `  
          -KeepAliveIntervalInSec 10 `  
          -X509Credential -ServerCertThumbprint A8136758F4AB8962AF2BF3F27921BE1DF67F4326 `  
          -FindType FindByThumbprint -FindValue 71DE04467C9ED0544D021098BCD44C71E183414E `  
          -StoreLocation CurrentUser -StoreName My 

الاتصال بنظام مجموعة آمنة باستخدام Windows Active Directory

إذا وزعت مجموعتك المستقلة باستخدام أمان AD، فاتصل بنظام المجموعة عن طريق إرفاق التبديل "WindowsCredential".

Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000 `
          -WindowsCredential

الاتصال بنظام مجموعة باستخدام واجهات برمجة تطبيقات FabricClient

توفرSDK الخاصة بـ Service Fabric فئة FabricClient لإدارة نظام المجموعة. لاستخدام واجهات برمجة تطبيقات FabricClient، احصل على حزمة Microsoft.ServiceFabric NuGet.

الاتصال بنظام مجموعة غير آمنة

للاتصال بمجموعة غير آمنة بعيدة، أنشئ مثيل FabricClient ووفر عنوان نظام المجموعة:

FabricClient fabricClient = new FabricClient("clustername.westus.cloudapp.azure.com:19000");

بالنسبة للتعليمات البرمجية التي يتم تشغيلها من داخل نظام مجموعة، على سبيل المثال، في Reliable Service، أنشئ FabricClient دون تحديد عنوان نظام المجموعة. يتصل FabricClient ببوابة الإدارة المحلية على العقدة التي تعمل عليها التعليمة البرمجية حالياً، ما يتجنب وثب شبكة إضافي.

FabricClient fabricClient = new FabricClient();

الاتصال بنظام مجموعة آمنة باستخدام شهادة عميل

يجب أن تحتوي العقد الموجودة في نظام المجموعة على شهادات صالحة يظهر اسمها الشائع أو اسم DNS في شبكة منطقة النظام في الخاصية RemoteCommonNames المُعينة على FabricClient. اتباع هذه العملية يُمكّن المصادقة المتبادلة بين العميل وعقد نظام المجموعة.

using System.Fabric;
using System.Security.Cryptography.X509Certificates;

string clientCertThumb = "71DE04467C9ED0544D021098BCD44C71E183414E";
string serverCertThumb = "A8136758F4AB8962AF2BF3F27921BE1DF67F4326";
string CommonName = "www.clustername.westus.azure.com";
string connection = "clustername.westus.cloudapp.azure.com:19000";

var xc = GetCredentials(clientCertThumb, serverCertThumb, CommonName);
var fc = new FabricClient(xc, connection);

try
{
    var ret = fc.ClusterManager.GetClusterManifestAsync().Result;
    Console.WriteLine(ret.ToString());
}
catch (Exception e)
{
    Console.WriteLine("Connect failed: {0}", e.Message);
}

static X509Credentials GetCredentials(string clientCertThumb, string serverCertThumb, string name)
{
    X509Credentials xc = new X509Credentials();
    xc.StoreLocation = StoreLocation.CurrentUser;
    xc.StoreName = "My";
    xc.FindType = X509FindType.FindByThumbprint;
    xc.FindValue = clientCertThumb;
    xc.RemoteCommonNames.Add(name);
    xc.RemoteCertThumbprints.Add(serverCertThumb);
    xc.ProtectionLevel = ProtectionLevel.EncryptAndSign;
    return xc;
}

الاتصال بمجموعة آمنة بشكل تفاعلي باستخدام معرف Microsoft Entra

يستخدم المثال التالي معرف Microsoft Entra لهوية العميل وشهادة الخادم لهوية الخادم.

تنبثق نافذة حوار تلقائياً لتسجيل الدخول التفاعلي عند الاتصال بنظام المجموعة.

string serverCertThumb = "A8136758F4AB8962AF2BF3F27921BE1DF67F4326";
string connection = "clustername.westus.cloudapp.azure.com:19000";

var claimsCredentials = new ClaimsCredentials();
claimsCredentials.ServerThumbprints.Add(serverCertThumb);

var fc = new FabricClient(claimsCredentials, connection);

try
{
    var ret = fc.ClusterManager.GetClusterManifestAsync().Result;
    Console.WriteLine(ret.ToString());
}
catch (Exception e)
{
    Console.WriteLine("Connect failed: {0}", e.Message);
}

الاتصال بمجموعة آمنة غير تفاعلية باستخدام معرف Microsoft Entra

يعتمد المثال التالي على Microsoft.Identity.Client، الإصدار: 4.37.0.

لمزيد من المعلومات حول الحصول على الرمز المميز ل Microsoft Entra، راجع Microsoft.Identity.Client.

string tenantId = "C15CFCEA-02C1-40DC-8466-FBD0EE0B05D2";
string clientApplicationId = "118473C2-7619-46E3-A8E4-6DA8D5F56E12";
string webApplicationId = "53E6948C-0897-4DA6-B26A-EE2A38A690B4";
string[] scopes = new string[] { "user.read" };

var pca = PublicClientApplicationBuilder.Create(clientApplicationId)
    .WithAuthority($"https://login.microsoftonline.com/{tenantId}")
    .WithRedirectUri("urn:ietf:wg:oauth:2.0:oob")
    .Build();

var accounts = await pca.GetAccountsAsync();
var result = await pca.AcquireTokenInteractive(scopes)
    .WithAccount(accounts.FirstOrDefault())
    .ExecuteAsync();

string token = result.AccessToken;

string serverCertThumb = "A8136758F4AB8962AF2BF3F27921BE1DF67F4326";
string connection = "clustername.westus.cloudapp.azure.com:19000";

var claimsCredentials = new ClaimsCredentials();
claimsCredentials.ServerThumbprints.Add(serverCertThumb);
claimsCredentials.LocalClaims = token;

var fc = new FabricClient(claimsCredentials, connection);

try
{
    var ret = fc.ClusterManager.GetClusterManifestAsync().Result;
    Console.WriteLine(ret.ToString());
}
catch (Exception e)
{
    Console.WriteLine("Connect failed: {0}", e.Message);
}

الاتصال بمجموعة آمنة دون معرفة مسبقة ببيانات التعريف باستخدام معرف Microsoft Entra

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

string serverCertThumb = "A8136758F4AB8962AF2BF3F27921BE1DF67F4326";
string connection = "clustername.westus.cloudapp.azure.com:19000";

var claimsCredentials = new ClaimsCredentials();
claimsCredentials.ServerThumbprints.Add(serverCertThumb);

var fc = new FabricClient(claimsCredentials, connection);

fc.ClaimsRetrieval += async (o, e) =>
{
    var accounts = await PublicClientApplicationBuilder
        .Create("<client_id>")
        .WithAuthority(AzureCloudInstance.AzurePublic, "<tenant_id>")
        .WithRedirectUri("<redirect_uri>")
        .Build()
        .GetAccountsAsync();

    var result = await PublicClientApplicationBuilder
        .Create("<client_id>")
        .WithAuthority(AzureCloudInstance.AzurePublic, "<tenant_id>")
        .WithRedirectUri("<redirect_uri>")
        .Build()
        .AcquireTokenInteractive(new[] { "<scope>" })
        .WithAccount(accounts.FirstOrDefault())
        .ExecuteAsync();

    return result.AccessToken;
};

try
{
    var ret = fc.ClusterManager.GetClusterManifestAsync().Result;
    Console.WriteLine(ret.ToString());
}
catch (Exception e)
{
    Console.WriteLine("Connect failed: {0}", e.Message);
}

الاتصال بنظام مجموعة آمنة باستخدام Service Fabric Explorer

للوصول إلى Service Fabric Explorer لنظام مجموعة معينة، وجه المستعرض إلى:

http://<your-cluster-endpoint>:19080/Explorer

يتوفر عنوان URL الكامل أيضاً في جزء أساسيات نظام المجموعة في مدخل Microsoft Azure.

للاتصال بنظام مجموعة آمنة على Windows أو OS X باستخدام مستعرض، يمكنك استيراد شهادة العميل، وسيطالبك المستعرض باستخدام الشهادة للاتصال بنظام المجموعة. على أجهزة Linux، يجب استيراد الشهادة باستخدام إعدادات المستعرض المتقدمة (لكل مستعرض آليات مختلفة) وتوجيهها إلى موقع الشهادة على القرص. اقرأ إعداد شهادة عميل لمزيد من المعلومات.

الاتصال بمجموعة آمنة باستخدام معرف Microsoft Entra

للاتصال بمجموعة مؤمنة باستخدام معرف Microsoft Entra، أشر إلى المستعرض الخاص بك إلى:

https://<your-cluster-endpoint>:19080/Explorer

ستتم مطالبتك تلقائيا بتسجيل الدخول باستخدام معرف Microsoft Entra.

الاتصال بنظام مجموعة آمنة باستخدام شهادة عميل

للاتصال بنظام مجموعة آمنة باستخدام الشهادات، وجه المستعرض إلى:

https://<your-cluster-endpoint>:19080/Explorer

ستُطالب تلقائياً بتحديد شهادة عميل.

إعداد شهادة عميل على الكمبيوتر البعيد

يجب استخدام شهادتين على الأقل لتأمين نظام المجموعة، واحدة لشهادة نظام المجموعة والخادم والأخرى لوصول العميل. نوصي أيضاً باستخدام شهادات ثانوية إضافية وشهادات وصول العميل. لتأمين الاتصال بين عميل وعقدة نظام مجموعة باستخدام أمان الشهادة، تحتاج أولاً إلى الحصول على شهادة العميل وتثبيتها. يمكن تثبيت الشهادة في مخزن "شخصي" (My) للكمبيوتر المحلي أو المستخدم الحالي. تحتاج أيضاً إلى بصمة إبهام شهادة الخادم حتى يتمكن العميل من مصادقة المجموعة.

  • في Windows: انقر نقراً مزدوجاً فوق ملف PFX واتبع المطالبات لتثبيت الشهادة في مخزنك الشخصي، Certificates - Current User\Personal\Certificates. بدلاً من ذلك، يمكنك استخدام أمر PowerShell:

    Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\My `
            -FilePath C:\docDemo\certs\DocDemoClusterCert.pfx `
            -Password (ConvertTo-SecureString -String test -AsPlainText -Force)
    

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

    Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\TrustedPeople `
    -FilePath C:\docDemo\certs\DocDemoClusterCert.pfx `
    -Password (ConvertTo-SecureString -String test -AsPlainText -Force)
    
  • على Mac: انقر نقراً مزدوجاً فوق ملف PFX واتبع المطالبات لتثبيت الشهادة في سلسلة المفاتيح.

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