Udostępnij za pośrednictwem


Nawiązywanie połączenia z zabezpieczonym klastrem

Gdy klient łączy się z węzłem klastra usługi Service Fabric, można uwierzytelnić klienta i zabezpieczyć komunikację ustanowioną przy użyciu zabezpieczeń certyfikatów lub identyfikatora Entra firmy Microsoft. To uwierzytelnianie gwarantuje, że tylko autoryzowani użytkownicy będą mogli uzyskiwać dostęp do klastra i wdrażać aplikacje oraz wykonywać zadania zarządzania. Zabezpieczenia certyfikatu lub firmy Microsoft Entra muszą być wcześniej włączone w klastrze podczas tworzenia klastra. Aby uzyskać więcej informacji na temat scenariuszy zabezpieczeń klastra, zobacz Zabezpieczenia klastra. Jeśli łączysz się z klastrem zabezpieczonym za pomocą certyfikatów, skonfiguruj certyfikat klienta na komputerze, który nawiązuje połączenie z klastrem.

Nawiązywanie połączenia z bezpiecznym klastrem przy użyciu interfejsu wiersza polecenia usługi Azure Service Fabric (sfctl)

Istnieje kilka różnych sposobów nawiązywania połączenia z bezpiecznym klastrem przy użyciu interfejsu wiersza polecenia usługi Service Fabric (sfctl). Podczas uwierzytelniania przy użyciu certyfikatu klienta szczegóły certyfikatu muszą być zgodne z certyfikatem wdrożonym w węzłach klastra. Jeśli certyfikat ma urzędy certyfikacji, należy dodatkowo określić zaufane urzędy certyfikacji.

Połączenie z klastrem można nawiązać za pomocą sfctl cluster select polecenia .

Certyfikaty klienta można określić w dwóch różnych sposób— jako certyfikat i parę kluczy lub jako pojedynczy plik PFX. W przypadku plików PEM chronionych hasłem zostanie automatycznie wyświetlony monit o wprowadzenie hasła. Jeśli certyfikat klienta został uzyskany jako plik PFX, najpierw przekonwertuj plik PFX na plik PEM przy użyciu następującego polecenia.

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

Jeśli plik pfx nie jest chroniony hasłem, użyj parametru -passin passin: dla ostatniego parametru.

Aby określić certyfikat klienta jako plik pem, określ ścieżkę pliku w argumencie --pem . Na przykład:

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

Pliki pem chronione hasłem będą monitować o podanie hasła przed uruchomieniem dowolnego polecenia.

Aby określić certyfikat, para kluczy używa --cert argumentów i --key , aby określić ścieżki plików do każdego odpowiedniego pliku.

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

Czasami certyfikaty używane do zabezpieczania testowania lub tworzenia klastrów kończą się niepowodzeniem weryfikacji certyfikatu. Aby pominąć weryfikację certyfikatu --no-verify , określ opcję . Na przykład:

Ostrzeżenie

Nie używaj opcji podczas nawiązywania no-verify połączenia z produkcyjnymi klastrami usługi Service Fabric.

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

Ponadto można określić ścieżki do katalogów zaufanych certyfikatów urzędu certyfikacji lub poszczególnych certyfikatów. Aby określić te ścieżki, użyj argumentu --ca . Na przykład:

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

Po nawiązaniu połączenia powinno być możliwe uruchomienie innych poleceń sfctl w celu interakcji z klastrem.

Nawiązywanie połączenia z klastrem przy użyciu programu PowerShell

Przed wykonaniem operacji w klastrze za pomocą programu PowerShell najpierw ustanów połączenie z klastrem. Połączenie klastra jest używane dla wszystkich kolejnych poleceń w danej sesji programu PowerShell.

Nawiązywanie połączenia z niezabezpieczonym klastrem

Aby nawiązać połączenie z niezabezpieczonym klastrem, podaj adres punktu końcowego klastra do polecenia Connect-ServiceFabricCluster :

Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000 

Nawiązywanie połączenia z bezpiecznym klastrem przy użyciu identyfikatora Entra firmy Microsoft

Aby nawiązać połączenie z bezpiecznym klastrem, który używa identyfikatora Entra firmy Microsoft do autoryzowania dostępu administratora klastra, podaj odcisk palca certyfikatu klastra i użyj flagi AzureActiveDirectory .

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

Nawiązywanie połączenia z bezpiecznym klastrem przy użyciu certyfikatu klienta

Uruchom następujące polecenie programu PowerShell, aby nawiązać połączenie z bezpiecznym klastrem, który używa certyfikatów klienta do autoryzowania dostępu administratora.

Nawiązywanie połączenia przy użyciu nazwy pospolitej certyfikatu

Podaj nazwę pospolitą certyfikatu klastra i nazwę pospolitą certyfikatu klienta, któremu udzielono uprawnień do zarządzania klastrem. Szczegóły certyfikatu muszą być zgodne z certyfikatem w węzłach klastra.

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

ServerCommonName to nazwa pospolita certyfikatu serwera zainstalowanego w węzłach klastra. FindValue to nazwa pospolita certyfikatu klienta administratora. Po wypełnieniu parametrów polecenie wygląda następująco:

$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 

Nawiązywanie połączenia przy użyciu odcisku palca certyfikatu

Podaj odcisk palca certyfikatu klastra i odcisk palca certyfikatu klienta, który otrzymał uprawnienia do zarządzania klastrem. Szczegóły certyfikatu muszą być zgodne z certyfikatem w węzłach klastra.

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

ServerCertThumbprint to odcisk palca certyfikatu serwera zainstalowanego w węzłach klastra. FindValue to odcisk palca certyfikatu klienta administratora. Po wypełnieniu parametrów polecenie wygląda następująco:

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

Nawiązywanie połączenia z bezpiecznym klastrem przy użyciu usługi Windows Active Directory

Jeśli klaster autonomiczny jest wdrażany przy użyciu zabezpieczeń usługi AD, połącz się z klastrem, dołączając przełącznik "WindowsCredential".

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

Nawiązywanie połączenia z klastrem przy użyciu interfejsów API FabricClient

Zestaw SDK usługi Service Fabric udostępnia klasę FabricClient do zarządzania klastrem. Aby użyć interfejsów API FabricClient, pobierz pakiet NuGet Microsoft.ServiceFabric.

Nawiązywanie połączenia z niezabezpieczonym klastrem

Aby nawiązać połączenie ze zdalnym niezabezpieczonym klastrem, utwórz wystąpienie FabricClient i podaj adres klastra:

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

W przypadku kodu uruchomionego z poziomu klastra, na przykład w usłudze Reliable Service, utwórz element FabricClient bez określania adresu klastra. FabricClient łączy się z lokalną bramą zarządzania w węźle, w którym kod jest aktualnie uruchomiony, unikając dodatkowego przeskoku sieciowego.

FabricClient fabricClient = new FabricClient();

Nawiązywanie połączenia z bezpiecznym klastrem przy użyciu certyfikatu klienta

Węzły w klastrze muszą mieć prawidłowe certyfikaty, których nazwa pospolita lub nazwa DNS w sieci SAN są wyświetlane we właściwości RemoteCommonNames ustawionej na FabricClient. Wykonanie tego procesu umożliwia wzajemne uwierzytelnianie między klientem a węzłami klastra.

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;
}

Interakcyjne nawiązywanie połączenia z bezpiecznym klastrem przy użyciu identyfikatora Entra firmy Microsoft

W poniższym przykładzie użyto identyfikatora Entra firmy Microsoft dla tożsamości klienta i certyfikatu serwera na potrzeby tożsamości serwera.

Okno dialogowe jest automatycznie wyświetlane na potrzeby logowania interakcyjnego po nawiązaniu połączenia z klastrem.

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);
}

Nawiązywanie połączenia z bezpiecznym klastrem nieinterakcyjnym przy użyciu identyfikatora Entra firmy Microsoft

Poniższy przykład opiera się na microsoft.Identity.Client, wersja: 4.37.0.

Aby uzyskać więcej informacji na temat pozyskiwania tokenów firmy Microsoft Entra, zobacz 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);
}

Nawiązywanie połączenia z bezpiecznym klastrem bez wcześniejszej wiedzy na temat metadanych przy użyciu identyfikatora Entra firmy Microsoft

W poniższym przykładzie użyto pozyskiwania tokenów nieinterakcyjnych, ale takie samo podejście może służyć do tworzenia niestandardowego środowiska pozyskiwania tokenów interakcyjnych. Metadane firmy Microsoft entra potrzebne do uzyskania tokenu są odczytywane z konfiguracji klastra.

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);
}

Nawiązywanie połączenia z bezpiecznym klastrem przy użyciu narzędzia Service Fabric Explorer

Aby uzyskać dostęp do narzędzia Service Fabric Explorer dla danego klastra, wskaż przeglądarkę na:

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

Pełny adres URL jest również dostępny w okienku podstaw klastra w witrynie Azure Portal.

Aby nawiązać połączenie z bezpiecznym klastrem w systemie Windows lub OS X przy użyciu przeglądarki, możesz zaimportować certyfikat klienta, a przeglądarka wyświetli monit o użycie certyfikatu do nawiązania połączenia z klastrem. Na maszynach z systemem Linux certyfikat będzie musiał zostać zaimportowany przy użyciu zaawansowanych ustawień przeglądarki (każda przeglądarka ma różne mechanizmy) i wskazać lokalizację certyfikatu na dysku. Aby uzyskać więcej informacji, zobacz Konfigurowanie certyfikatu klienta.

Nawiązywanie połączenia z bezpiecznym klastrem przy użyciu identyfikatora Entra firmy Microsoft

Aby nawiązać połączenie z klastrem zabezpieczonym za pomocą identyfikatora Entra firmy Microsoft, wskaż przeglądarkę na:

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

Zostanie automatycznie wyświetlony monit o zalogowanie się przy użyciu identyfikatora Entra firmy Microsoft.

Nawiązywanie połączenia z bezpiecznym klastrem przy użyciu certyfikatu klienta

Aby nawiązać połączenie z klastrem zabezpieczonym za pomocą certyfikatów, wskaż przeglądarkę na:

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

Zostanie wyświetlony monit o wybranie certyfikatu klienta.

Konfigurowanie certyfikatu klienta na komputerze zdalnym

Do zabezpieczania klastra należy użyć co najmniej dwóch certyfikatów, jeden dla klastra i certyfikatu serwera, a drugi na potrzeby dostępu klienta. Zalecamy również używanie dodatkowych certyfikatów pomocniczych i certyfikatów dostępu klienta. Aby zabezpieczyć komunikację między klientem a węzłem klastra przy użyciu zabezpieczeń certyfikatów, należy najpierw uzyskać i zainstalować certyfikat klienta. Certyfikat można zainstalować w magazynie Osobistym (Mój) komputera lokalnego lub bieżącego użytkownika. Potrzebny jest również odcisk palca certyfikatu serwera, aby klient mógł uwierzytelnić klaster.

  • W systemie Windows: kliknij dwukrotnie plik PFX i postępuj zgodnie z monitami, aby zainstalować certyfikat w magazynie osobistym Certificates - Current User\Personal\Certificates. Alternatywnie możesz użyć polecenia programu PowerShell:

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

    Jeśli jest to certyfikat z podpisem własnym, musisz zaimportować go do magazynu "zaufanych osób" maszyny, zanim będzie można użyć tego certyfikatu do nawiązania połączenia z bezpiecznym klastrem.

    Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\TrustedPeople `
    -FilePath C:\docDemo\certs\DocDemoClusterCert.pfx `
    -Password (ConvertTo-SecureString -String test -AsPlainText -Force)
    
  • Na komputerach Mac: kliknij dwukrotnie plik PFX, a następnie postępuj zgodnie z monitami, aby zainstalować certyfikat w pęku kluczy.

Następne kroki