Ansluta till ett säkert kluster
När en klient ansluter till en Service Fabric-klusternod kan klienten autentiseras och säkra kommunikationen upprättas med hjälp av certifikatsäkerhet eller Microsoft Entra-ID. Den här autentiseringen säkerställer att endast behöriga användare kan komma åt klustret och distribuerade program och utföra hanteringsuppgifter. Certifikat eller Microsoft Entra-säkerhet måste ha aktiverats tidigare i klustret när klustret skapades. Mer information om klustersäkerhetsscenarier finns i Klustersäkerhet. Om du ansluter till ett kluster som skyddas med certifikat konfigurerar du klientcertifikatet på datorn som ansluter till klustret.
Ansluta till ett säkert kluster med Azure Service Fabric CLI (sfctl)
Det finns några olika sätt att ansluta till ett säkert kluster med hjälp av Service Fabric CLI (sfctl). När du använder ett klientcertifikat för autentisering måste certifikatinformationen matcha ett certifikat som distribuerats till klusternoderna. Om certifikatet har certifikatutfärdare måste du dessutom ange de betrodda certifikatutfärdarna.
Du kan ansluta till ett kluster med hjälp av sfctl cluster select
kommandot .
Klientcertifikat kan anges på två olika sätt, antingen som ett certifikat och nyckelpar, eller som en enda PFX-fil. För lösenordsskyddade PEM-filer uppmanas du automatiskt att ange lösenordet. Om du fick klientcertifikatet som en PFX-fil konverterar du först PFX-filen till en PEM-fil med hjälp av följande kommando.
openssl pkcs12 -in your-cert-file.pfx -out your-cert-file.pem -nodes -passin pass:your-pfx-password
Om .pfx-filen inte är lösenordsskyddad använder du -passin pass: för den sista parametern.
Om du vill ange klientcertifikatet som en pem-fil anger du filsökvägen i --pem
argumentet. Till exempel:
sfctl cluster select --endpoint https://testsecurecluster.com:19080 --pem ./client.pem
Lösenordsskyddade pem-filer frågar efter lösenord innan du kör något kommando.
För att ange ett certifikat använder nyckelparet argumenten --cert
och --key
för att ange filsökvägarna till respektive fil.
sfctl cluster select --endpoint https://testsecurecluster.com:19080 --cert ./client.crt --key ./keyfile.key
Ibland misslyckas certifikatvalidering av certifikat som används för att skydda test- eller dev-kluster. Om du vill kringgå certifikatverifiering anger du alternativet --no-verify
. Till exempel:
Varning
Använd inte alternativet no-verify
när du ansluter till Service Fabric-produktionskluster.
sfctl cluster select --endpoint https://testsecurecluster.com:19080 --pem ./client.pem --no-verify
Dessutom kan du ange sökvägar till kataloger för betrodda CA-certifikat eller enskilda certifikat. Använd argumentet för --ca
att ange dessa sökvägar. Till exempel:
sfctl cluster select --endpoint https://testsecurecluster.com:19080 --pem ./client.pem --ca ./trusted_ca
När du har anslutit bör du kunna köra andra sfctl-kommandon för att interagera med klustret.
Ansluta till ett kluster med PowerShell
Innan du utför åtgärder i ett kluster via PowerShell måste du först upprätta en anslutning till klustret. Klusteranslutningen används för alla efterföljande kommandon i den angivna PowerShell-sessionen.
Ansluta till ett osäkert kluster
Om du vill ansluta till ett osäkert kluster anger du klusterslutpunktsadressen till kommandot Connect-ServiceFabricCluster :
Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000
Ansluta till ett säkert kluster med Microsoft Entra-ID
Om du vill ansluta till ett säkert kluster som använder Microsoft Entra-ID för att auktorisera klusteradministratörsåtkomst anger du tumavtrycket för klustercertifikatet och använder flaggan AzureActiveDirectory .
Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000 `
-ServerCertThumbprint <Server Certificate Thumbprint> `
-AzureActiveDirectory
Ansluta till ett säkert kluster med ett klientcertifikat
Kör följande PowerShell-kommando för att ansluta till ett säkert kluster som använder klientcertifikat för att auktorisera administratörsåtkomst.
Ansluta med certifikatets gemensamma namn
Ange det gemensamma namnet på klustercertifikatet och det gemensamma namnet på det klientcertifikat som har beviljats behörigheter för klusterhantering. Certifikatinformationen måste matcha ett certifikat på klusternoderna.
Connect-serviceFabricCluster -ConnectionEndpoint $ClusterName -KeepAliveIntervalInSec 10 `
-X509Credential `
-ServerCommonName <certificate common name> `
-FindType FindBySubjectName `
-FindValue <certificate common name> `
-StoreLocation CurrentUser `
-StoreName My
ServerCommonName är det vanliga namnet på servercertifikatet som är installerat på klusternoderna. FindValue är det vanliga namnet på administratörsklientcertifikatet. När parametrarna fylls i ser kommandot ut som i följande exempel:
$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
Ansluta med certifikatets tumavtryck
Ange tumavtrycket för klustercertifikatet och tumavtrycket för det klientcertifikat som har beviljats behörigheter för klusterhantering. Certifikatinformationen måste matcha ett certifikat på klusternoderna.
Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000 `
-KeepAliveIntervalInSec 10 `
-X509Credential -ServerCertThumbprint <Certificate Thumbprint> `
-FindType FindByThumbprint -FindValue <Certificate Thumbprint> `
-StoreLocation CurrentUser -StoreName My
ServerCertThumbprint är tumavtrycket för servercertifikatet som är installerat på klusternoderna. FindValue är tumavtrycket för administratörsklientcertifikatet. När parametrarna fylls i ser kommandot ut som i följande exempel:
Connect-ServiceFabricCluster -ConnectionEndpoint clustername.westus.cloudapp.azure.com:19000 `
-KeepAliveIntervalInSec 10 `
-X509Credential -ServerCertThumbprint A8136758F4AB8962AF2BF3F27921BE1DF67F4326 `
-FindType FindByThumbprint -FindValue 71DE04467C9ED0544D021098BCD44C71E183414E `
-StoreLocation CurrentUser -StoreName My
Ansluta till ett säkert kluster med Hjälp av Windows Active Directory
Om ditt fristående kluster distribueras med HJÄLP av AD-säkerhet ansluter du till klustret genom att lägga till växeln "WindowsCredential".
Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000 `
-WindowsCredential
Ansluta till ett kluster med hjälp av FabricClient-API:er
Service Fabric SDK tillhandahåller klassen FabricClient för klusterhantering. Om du vill använda FabricClient-API:erna hämtar du NuGet-paketet Microsoft.ServiceFabric.
Ansluta till ett osäkert kluster
Om du vill ansluta till ett oskyddat fjärrkluster skapar du en FabricClient-instans och anger klusteradressen:
FabricClient fabricClient = new FabricClient("clustername.westus.cloudapp.azure.com:19000");
För kod som körs inifrån ett kluster, till exempel i en tillförlitlig tjänst, skapar du en FabricClient utan att ange klusteradressen. FabricClient ansluter till den lokala hanteringsgatewayen på noden som koden för närvarande körs på, vilket undviker ett extra nätverkshopp.
FabricClient fabricClient = new FabricClient();
Ansluta till ett säkert kluster med ett klientcertifikat
Noderna i klustret måste ha giltiga certifikat vars gemensamma namn eller DNS-namn i SAN visas i egenskapen RemoteCommonNames som anges i FabricClient. Efter den här processen möjliggör ömsesidig autentisering mellan klienten och klusternoderna.
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;
}
Ansluta till ett säkert kluster interaktivt med Hjälp av Microsoft Entra-ID
I följande exempel används Microsoft Entra-ID för klientidentitet och servercertifikat för serveridentitet.
Ett dialogfönster visas automatiskt för interaktiv inloggning när du ansluter till klustret.
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);
}
Ansluta till ett säkert kluster som inte är interaktivt med Hjälp av Microsoft Entra-ID
Följande exempel förlitar sig på Microsoft.Identity.Client, Version: 4.37.0.
Mer information om anskaffning av Microsoft Entra-token finns i 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);
}
Ansluta till ett säkert kluster utan tidigare metadatakunskaper med hjälp av Microsoft Entra-ID
I följande exempel används icke-interaktiv tokenanskaffning, men samma metod kan användas för att skapa en anpassad interaktiv tokenanskaffningsupplevelse. Microsoft Entra-metadata som behövs för tokenförvärv läse från klusterkonfigurationen.
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);
}
Ansluta till ett säkert kluster med Service Fabric Explorer
Om du vill nå Service Fabric Explorer för ett visst kluster pekar du webbläsaren på:
http://<your-cluster-endpoint>:19080/Explorer
Den fullständiga URL:en är också tillgänglig i fönstret kluster essentials i Azure-portalen.
För att ansluta till ett säkert kluster i Windows eller OS X med hjälp av en webbläsare kan du importera klientcertifikatet och webbläsaren uppmanar dig att använda certifikatet för att ansluta till klustret. På Linux-datorer måste certifikatet importeras med avancerade webbläsarinställningar (varje webbläsare har olika mekanismer) och peka det på certifikatplatsen på disken. Mer information finns i Konfigurera ett klientcertifikat .
Ansluta till ett säkert kluster med Microsoft Entra-ID
Om du vill ansluta till ett kluster som skyddas med Microsoft Entra-ID pekar du webbläsaren på:
https://<your-cluster-endpoint>:19080/Explorer
Du uppmanas automatiskt att logga in med Microsoft Entra-ID.
Ansluta till ett säkert kluster med ett klientcertifikat
Om du vill ansluta till ett kluster som är skyddat med certifikat pekar du webbläsaren på:
https://<your-cluster-endpoint>:19080/Explorer
Du uppmanas automatiskt att välja ett klientcertifikat.
Konfigurera ett klientcertifikat på fjärrdatorn
Minst två certifikat ska användas för att skydda klustret, ett för klustret och servercertifikatet och ett annat för klientåtkomst. Vi rekommenderar att du även använder ytterligare sekundära certifikat och klientåtkomstcertifikat. För att skydda kommunikationen mellan en klient och en klusternod med hjälp av certifikatsäkerhet måste du först hämta och installera klientcertifikatet. Certifikatet kan installeras i arkivet Personligt (Mitt) för den lokala datorn eller den aktuella användaren. Du behöver också tumavtrycket för servercertifikatet så att klienten kan autentisera klustret.
I Windows: Dubbelklicka på PFX-filen och följ anvisningarna för att installera certifikatet i ditt personliga arkiv
Certificates - Current User\Personal\Certificates
. Du kan också använda PowerShell-kommandot:Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\My ` -FilePath C:\docDemo\certs\DocDemoClusterCert.pfx ` -Password (ConvertTo-SecureString -String test -AsPlainText -Force)
Om det är ett självsignerat certifikat måste du importera det till datorns "betrodda personer"-arkiv innan du kan använda det här certifikatet för att ansluta till ett säkert kluster.
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\TrustedPeople ` -FilePath C:\docDemo\certs\DocDemoClusterCert.pfx ` -Password (ConvertTo-SecureString -String test -AsPlainText -Force)
I Mac: Dubbelklicka på PFX-filen och följ anvisningarna för att installera certifikatet i din nyckelring.