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.

Další kroky