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í do nezabezpečeného clusteru

Pokud se chcete připojit k nezabezpečeným clusteru, zadejte adresu koncového bodu clusteru do příkazu Připojení-ServiceFabricCluster:

Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000 

Připojení do zabezpečeného 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í do zabezpečeného 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í do nezabezpečeného 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;
}

Připojení k zabezpečenému clusteru interaktivně 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í do zabezpečeného 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í do zabezpečeného 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