Připojení k zabezpečenému clusteru
Když se klient připojí k uzlu clusteru Service Fabric, klient se dá ověřit a zabezpečit komunikaci vytvořenou pomocí zabezpečení certifikátu nebo ID Microsoft Entra. Toto ověřování zajišťuje, že přístup ke clusteru a nasazených aplikacím a provádění úloh správy budou mít přístup jenom autorizovaní uživatelé. Při vytváření clusteru musí být v clusteru dříve povolen certifikát nebo zabezpečení Microsoft Entra. Další informace o scénářích zabezpečení clusteru najdete v tématu Zabezpečení clusteru. Pokud se připojujete ke clusteru zabezpečenému pomocí certifikátů, nastavte klientský certifikát na počítači, který se připojuje ke clusteru.
Připojení k zabezpečenému clusteru pomocí Azure Service Fabric CLI (sfctl)
Existuje několik různých způsobů, jak se připojit k zabezpečenému clusteru pomocí Service Fabric CLI (sfctl). Pokud k ověřování používáte klientský certifikát, podrobnosti o certifikátu musí odpovídat certifikátu nasazenému do uzlů clusteru. Pokud váš certifikát obsahuje certifikační autority(CA), musíte navíc zadat důvěryhodné certifikační autority.
Pomocí příkazu se můžete připojit ke clusteru sfctl cluster select
.
Klientské certifikáty je možné zadat dvěma různými způsoby, a to buď jako pár certifikátů a klíčů, nebo jako jeden soubor PFX. U souborů PEM chráněných heslem se zobrazí výzva k automatickému zadání hesla. Pokud jste získali klientský certifikát jako soubor PFX, nejprve pomocí následujícího příkazu převeďte soubor PFX na soubor PEM.
openssl pkcs12 -in your-cert-file.pfx -out your-cert-file.pem -nodes -passin pass:your-pfx-password
Pokud soubor .pfx není chráněný heslem, použijte pro poslední parametr -passin:
Chcete-li zadat klientský certifikát jako soubor pem, zadejte cestu k souboru v argumentu --pem
. Příklad:
sfctl cluster select --endpoint https://testsecurecluster.com:19080 --pem ./client.pem
Soubory pem chráněné heslem budou před spuštěním jakéhokoli příkazu vyzvány k zadání hesla.
Pokud chcete zadat certifikát, pár klíčů pomocí --cert
argumentů a --key
cesty k souborům do každého příslušného souboru.
sfctl cluster select --endpoint https://testsecurecluster.com:19080 --cert ./client.crt --key ./keyfile.key
Někdy certifikáty používané k zabezpečení testování nebo vývojových clusterů selžou ověření certifikátu. Pokud chcete obejít ověření certifikátu, zadejte --no-verify
možnost. Příklad:
Upozorňující
Nepoužívejte no-verify
možnost při připojování k produkčním clusterům Service Fabric.
sfctl cluster select --endpoint https://testsecurecluster.com:19080 --pem ./client.pem --no-verify
Kromě toho můžete zadat cesty k adresářům důvěryhodných certifikátů certifikační autority nebo k jednotlivým certifikátům. K zadání těchto cest použijte --ca
argument. Příklad:
sfctl cluster select --endpoint https://testsecurecluster.com:19080 --pem ./client.pem --ca ./trusted_ca
Po připojení byste měli být schopni spustit další příkazy sfctl pro interakci s clusterem.
Připojení ke clusteru pomocí PowerShellu
Než provedete operace v clusteru prostřednictvím PowerShellu, nejprve navážete připojení ke clusteru. Připojení ke clusteru se používá pro všechny následné příkazy v dané relaci PowerShellu.
Připojení k nezabezpečeným clusteru
Pokud se chcete připojit k nezabezpečenému clusteru, zadejte adresu koncového bodu clusteru příkazu Connect-ServiceFabricCluster :
Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000
Připojení k zabezpečenému clusteru pomocí Microsoft Entra ID
Pokud se chcete připojit k zabezpečenému clusteru, který k autorizaci přístupu správce clusteru používá ID Microsoft Entra, zadejte kryptografický otisk certifikátu clusteru a použijte příznak AzureActiveDirectory .
Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000 `
-ServerCertThumbprint <Server Certificate Thumbprint> `
-AzureActiveDirectory
Připojení k zabezpečenému clusteru pomocí klientského certifikátu
Spuštěním následujícího příkazu PowerShellu se připojte k zabezpečenému clusteru, který používá klientské certifikáty k autorizaci přístupu správce.
Připojení pomocí běžného názvu certifikátu
Zadejte běžný název certifikátu clusteru a běžný název klientského certifikátu, kterému byla udělena oprávnění ke správě clusteru. Podrobnosti o certifikátu se musí shodovat s certifikátem v uzlech clusteru.
Connect-serviceFabricCluster -ConnectionEndpoint $ClusterName -KeepAliveIntervalInSec 10 `
-X509Credential `
-ServerCommonName <certificate common name> `
-FindType FindBySubjectName `
-FindValue <certificate common name> `
-StoreLocation CurrentUser `
-StoreName My
ServerCommonName je běžný název certifikátu serveru nainstalovaného na uzlech clusteru. FindValue je běžný název klientského certifikátu správce. Když jsou parametry vyplněné, příkaz vypadá jako v následujícím příkladu:
$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
Připojení pomocí kryptografického otisku certifikátu
Zadejte kryptografický otisk certifikátu clusteru a kryptografický otisk klientského certifikátu, který má udělená oprávnění ke správě clusteru. Podrobnosti o certifikátu se musí shodovat s certifikátem v uzlech clusteru.
Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000 `
-KeepAliveIntervalInSec 10 `
-X509Credential -ServerCertThumbprint <Certificate Thumbprint> `
-FindType FindByThumbprint -FindValue <Certificate Thumbprint> `
-StoreLocation CurrentUser -StoreName My
ServerCertThumbprint je kryptografický otisk certifikátu serveru nainstalovaného na uzlech clusteru. FindValue je kryptografický otisk klientského certifikátu správce. Když jsou parametry vyplněné, příkaz vypadá jako v následujícím příkladu:
Connect-ServiceFabricCluster -ConnectionEndpoint clustername.westus.cloudapp.azure.com:19000 `
-KeepAliveIntervalInSec 10 `
-X509Credential -ServerCertThumbprint A8136758F4AB8962AF2BF3F27921BE1DF67F4326 `
-FindType FindByThumbprint -FindValue 71DE04467C9ED0544D021098BCD44C71E183414E `
-StoreLocation CurrentUser -StoreName My
Připojení k zabezpečenému clusteru pomocí služby Windows Active Directory
Pokud je samostatný cluster nasazený pomocí zabezpečení AD, připojte se ke clusteru připojením přepínače WindowsCredential.
Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000 `
-WindowsCredential
Připojení ke clusteru pomocí rozhraní API FabricClient
Sada Service Fabric SDK poskytuje třídu FabricClient pro správu clusteru. Pokud chcete použít rozhraní API FabricClient, získejte balíček NuGet Microsoft.ServiceFabric.
Připojení k nezabezpečeným clusteru
Pokud se chcete připojit ke vzdálenému nezabezpečeným clusteru, vytvořte instanci FabricClient a zadejte adresu clusteru:
FabricClient fabricClient = new FabricClient("clustername.westus.cloudapp.azure.com:19000");
Pro kód spuštěný v rámci clusteru, například ve spolehlivé službě, vytvořte FabricClient bez zadání adresy clusteru. FabricClient se připojí k místní bráně pro správu na uzlu, na kterém je kód aktuálně spuštěný, a zabrání tak dodatečnému směrování sítě.
FabricClient fabricClient = new FabricClient();
Připojení k zabezpečenému clusteru pomocí klientského certifikátu
Uzly v clusteru musí mít platné certifikáty, jejichž běžný název nebo název DNS v síti SAN se zobrazí ve vlastnosti RemoteCommonNames nastavené na FabricClient. Následující proces umožňuje vzájemné ověřování mezi klientem a uzly clusteru.
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;
}
Interaktivní připojení k zabezpečenému clusteru pomocí ID Microsoft Entra
Následující příklad používá Microsoft Entra ID pro identitu klienta a certifikát serveru pro identitu serveru.
Po připojení ke clusteru se automaticky otevře dialogové okno pro interaktivní přihlášení.
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);
}
Připojení k zabezpečenému clusteru neinteraktivně pomocí ID Microsoft Entra
Následující příklad spoléhá na Microsoft.Identity.Client verze: 4.37.0.
Další informace o získávání tokenů Microsoft Entra naleznete v tématu 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);
}
Připojení k zabezpečenému clusteru bez předchozích znalostí metadat pomocí Microsoft Entra ID
Následující příklad používá neinteraktivní získávání tokenů, ale stejný přístup lze použít k vytvoření vlastního prostředí pro získání interaktivního tokenu. Metadata Microsoft Entra potřebná k získání tokenu se čtou z konfigurace clusteru.
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);
}
Připojení k zabezpečenému clusteru pomocí Service Fabric Exploreru
Pokud chcete získat přístup ke Service Fabric Exploreru pro daný cluster, nasměrujte prohlížeč na:
http://<your-cluster-endpoint>:19080/Explorer
Úplná adresa URL je dostupná také v podokně základy clusteru na webu Azure Portal.
Pokud se chcete připojit k zabezpečenému clusteru ve Windows nebo OS X pomocí prohlížeče, můžete naimportovat klientský certifikát a prohlížeč vás vyzve, abyste certifikát použili pro připojení ke clusteru. Na počítačích s Linuxem se certifikát bude muset importovat pomocí upřesňujícího nastavení prohlížeče (každý prohlížeč má různé mechanismy) a nasměrovat ho na umístění certifikátu na disku. Další informace najdete v článku Nastavení klientského certifikátu .
Připojení k zabezpečenému clusteru pomocí Microsoft Entra ID
Pokud se chcete připojit ke clusteru zabezpečenému pomocí MICROSOFT Entra ID, nasměrujte prohlížeč na:
https://<your-cluster-endpoint>:19080/Explorer
Automaticky se zobrazí výzva k přihlášení pomocí Microsoft Entra ID.
Připojení k zabezpečenému clusteru pomocí klientského certifikátu
Pokud se chcete připojit ke clusteru zabezpečenému pomocí certifikátů, nasměrujte prohlížeč na:
https://<your-cluster-endpoint>:19080/Explorer
Automaticky se zobrazí výzva k výběru klientského certifikátu.
Nastavení klientského certifikátu na vzdáleném počítači
Pro zabezpečení clusteru by se měly použít alespoň dva certifikáty, jeden pro certifikát clusteru a serveru a druhý pro klientský přístup. Doporučujeme také použít další sekundární certifikáty a klientské přístupové certifikáty. Pokud chcete zabezpečit komunikaci mezi klientem a uzlem clusteru pomocí zabezpečení certifikátů, musíte nejprve získat a nainstalovat klientský certifikát. Certifikát lze nainstalovat do osobního úložiště (My) místního počítače nebo aktuálního uživatele. Potřebujete také kryptografický otisk certifikátu serveru, aby klient mohl cluster ověřit.
Windows: Dvakrát klikněte na soubor PFX a podle zobrazených výzev nainstalujte certifikát do svého osobního úložiště
Certificates - Current User\Personal\Certificates
. Případně můžete použít příkaz PowerShellu:Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\My ` -FilePath C:\docDemo\certs\DocDemoClusterCert.pfx ` -Password (ConvertTo-SecureString -String test -AsPlainText -Force)
Pokud se jedná o certifikát podepsaný svým držitelem, musíte ho naimportovat do úložiště důvěryhodných lidí vašeho počítače, abyste se mohli pomocí tohoto certifikátu připojit k zabezpečenému clusteru.
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\TrustedPeople ` -FilePath C:\docDemo\certs\DocDemoClusterCert.pfx ` -Password (ConvertTo-SecureString -String test -AsPlainText -Force)
Mac: Dvakrát klikněte na soubor PFX a podle zobrazených výzev nainstalujte certifikát do své klíčenky.