Verbinding maken met een beveiligd cluster

Wanneer een client verbinding maakt met een Service Fabric-clusterknooppunt, kan de client worden geverifieerd en beveiligde communicatie tot stand gebracht met behulp van certificaatbeveiliging of Microsoft Entra-id. Deze verificatie zorgt ervoor dat alleen geautoriseerde gebruikers toegang hebben tot het cluster en geïmplementeerde toepassingen en beheertaken kunnen uitvoeren. Certificaat- of Microsoft Entra-beveiliging moet eerder zijn ingeschakeld op het cluster toen het cluster werd gemaakt. Zie Clusterbeveiliging voor meer informatie over clusterbeveiligingsscenario's. Als u verbinding maakt met een cluster dat is beveiligd met certificaten, stelt u het clientcertificaat in op de computer die verbinding maakt met het cluster.

Verbinding maken naar een beveiligd cluster met behulp van Azure Service Fabric CLI (sfctl)

Er zijn verschillende manieren om verbinding te maken met een beveiligd cluster met behulp van de Service Fabric CLI (sfctl). Als u ter verificatie een clientcertificaat gebruikt, moeten de certificaatgegevens overeenkomen met een certificaat dat is geïmplementeerd in de clusterknooppunten. Als uw certificaat certificeringsinstanties (CA's) heeft, moet u ook de vertrouwde CA's opgeven.

U kunt verbinding maken met een cluster met behulp van de sfctl cluster select opdracht.

Clientcertificaten kunnen op twee verschillende manieren worden opgegeven, ofwel als een certificaat en sleutelpaar, of als één PFX-bestand. Voor PEM-bestanden die met een wachtwoord zijn beveiligd, wordt u automatisch gevraagd het wachtwoord in te voeren. Als u het clientcertificaat als PFX-bestand hebt verkregen, converteert u eerst het PFX-bestand naar een PEM-bestand met behulp van de volgende opdracht.

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

Als uw PFX-bestand niet met een wachtwoord is beveiligd, gebruikt u -passin passin: voor de laatste parameter.

Als u het clientcertificaat wilt opgeven als pem-bestand, geeft u het bestandspad op in het --pem argument. Bijvoorbeeld:

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

Pem-bestanden die met een wachtwoord zijn beveiligd, vragen om een wachtwoord voordat u een opdracht uitvoert.

Als u een certificaat wilt opgeven, gebruikt het sleutelpaar de --cert en --key argumenten om de bestandspaden naar elk respectieve bestand op te geven.

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

Soms mislukken certificaten die worden gebruikt voor het beveiligen van test- of dev-clusters certificaatvalidatie. Als u certificaatverificatie wilt overslaan, geeft u de --no-verify optie op. Bijvoorbeeld:

Waarschuwing

Gebruik de no-verify optie niet wanneer u verbinding maakt met Service Fabric-productieclusters.

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

Daarnaast kunt u paden opgeven naar mappen met vertrouwde CA-certificaten of afzonderlijke certificaten. Als u deze paden wilt opgeven, gebruikt u het --ca argument. Bijvoorbeeld:

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

Nadat u verbinding hebt gemaakt, moet u andere sfctl-opdrachten kunnen uitvoeren om te communiceren met het cluster.

Verbinding maken naar een cluster met behulp van PowerShell

Voordat u bewerkingen uitvoert op een cluster via PowerShell, moet u eerst een verbinding met het cluster tot stand brengen. De clusterverbinding wordt gebruikt voor alle volgende opdrachten in de opgegeven PowerShell-sessie.

Verbinding maken naar een niet-beveiligd cluster

Als u verbinding wilt maken met een niet-beveiligd cluster, geeft u het adres van het clustereindpunt op naar de opdracht Verbinding maken-ServiceFabricCluster:

Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000 

Verbinding maken naar een beveiligd cluster met behulp van Microsoft Entra-id

Als u verbinding wilt maken met een beveiligd cluster dat gebruikmaakt van Microsoft Entra ID om clusterbeheerderstoegang te autoriseren, geeft u de vingerafdruk van het clustercertificaat op en gebruikt u de vlag AzureActiveDirectory .

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

Verbinding maken naar een beveiligd cluster met behulp van een clientcertificaat

Voer de volgende PowerShell-opdracht uit om verbinding te maken met een beveiligd cluster dat gebruikmaakt van clientcertificaten om beheerderstoegang te autoriseren.

Verbinding maken met de algemene naam van het certificaat

Geef de algemene naam van het clustercertificaat en de algemene naam op van het clientcertificaat waaraan machtigingen zijn verleend voor clusterbeheer. De certificaatgegevens moeten overeenkomen met een certificaat op de clusterknooppunten.

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

ServerCommonName is de algemene naam van het servercertificaat dat op de clusterknooppunten is geïnstalleerd. FindValue is de algemene naam van het clientcertificaat van de beheerder. Wanneer de parameters zijn ingevuld, ziet de opdracht eruit zoals in het volgende voorbeeld:

$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 

Verbinding maken met behulp van vingerafdruk van certificaat

Geef de vingerafdruk van het clustercertificaat en de vingerafdruk op van het clientcertificaat waaraan machtigingen zijn verleend voor clusterbeheer. De certificaatgegevens moeten overeenkomen met een certificaat op de clusterknooppunten.

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

ServerCertThumbprint is de vingerafdruk van het servercertificaat dat op de clusterknooppunten is geïnstalleerd. FindValue is de vingerafdruk van het clientcertificaat van de beheerder. Wanneer de parameters zijn ingevuld, ziet de opdracht eruit zoals in het volgende voorbeeld:

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

Verbinding maken naar een beveiligd cluster met Windows Active Directory

Als uw zelfstandige cluster is geïmplementeerd met AD-beveiliging, maakt u verbinding met het cluster door de switch 'WindowsCredential' toe te voegen.

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

Verbinding maken naar een cluster met behulp van de FabricClient-API's

De Service Fabric SDK biedt de FabricClient-klasse voor clusterbeheer. Als u de FabricClient-API's wilt gebruiken, haalt u het NuGet-pakket Microsoft.ServiceFabric op.

Verbinding maken naar een niet-beveiligd cluster

Als u verbinding wilt maken met een extern niet-beveiligd cluster, maakt u een FabricClient-exemplaar en geeft u het clusteradres op:

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

Voor code die wordt uitgevoerd vanuit een cluster, bijvoorbeeld in een Reliable Service, maakt u een FabricClient zonder het clusteradres op te geven. FabricClient maakt verbinding met de lokale beheergateway op het knooppunt waarop de code momenteel wordt uitgevoerd, om een extra netwerkhop te voorkomen.

FabricClient fabricClient = new FabricClient();

Verbinding maken naar een beveiligd cluster met behulp van een clientcertificaat

De knooppunten in het cluster moeten geldige certificaten hebben waarvan de algemene naam of DNS-naam in SAN wordt weergegeven in de eigenschap RemoteCommonNames die is ingesteld op FabricClient. Als u dit proces volgt, wordt wederzijdse verificatie mogelijk tussen de client en de clusterknooppunten.

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

Verbinding maken interactief een beveiligd cluster maken met behulp van Microsoft Entra-id

In het volgende voorbeeld wordt Microsoft Entra-id gebruikt voor clientidentiteit en servercertificaat voor serveridentiteit.

Er wordt automatisch een dialoogvenster weergegeven voor interactieve aanmelding bij het maken van verbinding met het cluster.

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

Verbinding maken naar een beveiligd cluster dat niet interactief is met behulp van Microsoft Entra-id

Het volgende voorbeeld is afhankelijk van Microsoft.Identity.Client, versie: 4.37.0.

Zie Microsoft.Identity.Client voor meer informatie over het verkrijgen van Microsoft Entra-token.

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

Verbinding maken naar een beveiligd cluster zonder voorafgaande kennis van metagegevens met behulp van Microsoft Entra-id

In het volgende voorbeeld wordt niet-interactieve tokenverwerving gebruikt, maar dezelfde benadering kan worden gebruikt om een aangepaste interactieve tokenverwervingservaring te bouwen. De Microsoft Entra-metagegevens die nodig zijn voor het verkrijgen van tokens, worden gelezen uit de clusterconfiguratie.

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

Verbinding maken naar een beveiligd cluster met behulp van Service Fabric Explorer

Als u Service Fabric Explorer voor een bepaald cluster wilt bereiken, wijst u de browser naar:

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

De volledige URL is ook beschikbaar in het deelvenster Met essentiële clusters van Azure Portal.

Als u verbinding wilt maken met een beveiligd cluster in Windows of OS X met behulp van een browser, kunt u het clientcertificaat importeren en wordt u in de browser gevraagd om het certificaat te gebruiken om verbinding te maken met het cluster. Op Linux-machines moet het certificaat worden geïmporteerd met behulp van geavanceerde browserinstellingen (elke browser heeft verschillende mechanismen) en verwijst het naar de certificaatlocatie op schijf. Lees Een clientcertificaat instellen voor meer informatie.

Verbinding maken naar een beveiligd cluster met behulp van Microsoft Entra-id

Als u verbinding wilt maken met een cluster dat is beveiligd met Microsoft Entra-id, wijst u uw browser naar:

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

U wordt automatisch gevraagd u aan te melden met Microsoft Entra ID.

Verbinding maken naar een beveiligd cluster met behulp van een clientcertificaat

Als u verbinding wilt maken met een cluster dat is beveiligd met certificaten, wijst u uw browser naar:

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

U wordt automatisch gevraagd een clientcertificaat te selecteren.

Een clientcertificaat instellen op de externe computer

Ten minste twee certificaten moeten worden gebruikt voor het beveiligen van het cluster, één voor het cluster- en servercertificaat en een voor clienttoegang. U wordt aangeraden ook aanvullende secundaire certificaten en clienttoegangscertificaten te gebruiken. Als u de communicatie tussen een client en een clusterknooppunt wilt beveiligen met behulp van certificaatbeveiliging, moet u eerst het clientcertificaat verkrijgen en installeren. Het certificaat kan worden geïnstalleerd in het persoonlijke archief (Mijn) van de lokale computer of de huidige gebruiker. U hebt ook de vingerafdruk van het servercertificaat nodig, zodat de client het cluster kan verifiëren.

  • Voor Windows: dubbelklik op het PFX-bestand en volg de aanwijzingen om het certificaat in uw persoonlijke archief, Certificates - Current User\Personal\Certificates, te installeren. U kunt ook de PowerShell-opdracht gebruiken:

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

    Als het een zelfondertekend certificaat is, moet u het importeren in het archief vertrouwde personen van uw computer voordat u dit certificaat kunt gebruiken om verbinding te maken met een beveiligd cluster.

    Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\TrustedPeople `
    -FilePath C:\docDemo\certs\DocDemoClusterCert.pfx `
    -Password (ConvertTo-SecureString -String test -AsPlainText -Force)
    
  • Voor Mac: dubbelklik op het PFX-bestand en volg de aanwijzingen om het certificaat in uw Sleutelhanger te installeren.

Volgende stappen