Compartir a través de


Conexión a un clúster seguro

Cuando un cliente se conecta a un nodo del clúster de Service Fabric, se puede autenticar al cliente y establecer la comunicación segura mediante la seguridad basada en certificados o Microsoft Entra ID. Esta autenticación garantiza que solo los usuarios autorizados pueden tener acceso al clúster, y a las aplicaciones implementadas, y realizar tareas de administración. Con anterioridad se debe haber habilitado la seguridad basada en certificados o Microsoft Entra en el clúster cuando se creó este. Para más información sobre los escenarios de seguridad del clúster, consulte Seguridad del clúster. Si se conecta a un clúster protegido con certificados, configure el certificado de cliente en el equipo que se conecta al clúster.

Conexión a un clúster seguro con la CLI de Azure Service Fabric (sfctl)

Hay varias maneras distintas de conectarse a un clúster seguro con la CLI de Service Fabric (sfctl). Cuando se utiliza un certificado de cliente para la autenticación, los detalles del certificado deben coincidir con un certificado implementado en los nodos del clúster. Si el certificado tiene entidades de certificación (CA), debe especificar además las entidades de certificación de confianza.

Puede conectarse a un clúster con el comando sfctl cluster select.

Los certificados de cliente se pueden especificar de dos maneras diferentes, como un par de clave y certificado o como un archivo PFX único. En el caso de los archivos PEM protegidos con contraseña, se le pedirá que escriba automáticamente la contraseña. Si obtuvo el certificado de cliente como un archivo PFX, convierta primero el archivo PFX en un archivo PEM con el comando siguiente.

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

Si el archivo .pfx no está protegido con contraseña, use -passin contraseña: para el último parámetro.

Para especificar el certificado de cliente como un archivo en formato PEM, especifique la ruta de acceso de archivo en el argumento --pem. Por ejemplo:

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

Los archivos pem protegidos mediante contraseña le solicitarán una contraseña para ejecutar cualquier comando.

Para especificar un certificado y su par de claves, utiliza los argumentos --cert y --key para indicar las rutas de archivo de cada archivo correspondiente.

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

A veces los certificados utilizados para proteger clústeres de prueba o desarrollo generan un error en la validación de certificados. Para omitir la comprobación del certificado, especifique la opción --no-verify. Por ejemplo:

Advertencia

No use la no-verify opción al conectarse a clústeres de Service Fabric de producción.

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

Además, puede especificar rutas de acceso a directorios de certificados de CA confiables o certificados individuales. Para especificar estas rutas de acceso, use el argumento --ca. Por ejemplo:

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

Después de conectarse, debería poder ejecutar otros comandos sfctl para interactuar con el clúster.

Conexión a un clúster con PowerShell

Antes de realizar operaciones en un clúster a través de PowerShell, primero establezca una conexión al clúster. La conexión de clúster se utiliza para todos los comandos subsiguientes en la sesión de PowerShell determinada.

Conexión a un clúster no seguro

Para conectarse a un clúster no seguro, proporcione la dirección del punto de conexión del clúster al comando Connect-ServiceFabricCluster :

Connect-ServiceFabricCluster -ConnectionEndpoint <Cluster FQDN>:19000 

Conexión a un clúster seguro mediante Microsoft Entra ID

Para conectarse a un clúster seguro que usa el identificador de Microsoft Entra para autorizar el acceso al administrador del clúster, proporcione la huella digital del certificado de clúster y use la marca AzureActiveDirectory .

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

Conexión a un clúster seguro mediante un certificado de cliente

Ejecute el siguiente comando de PowerShell para conectarse a un clúster seguro que utiliza certificados de cliente para autorizar el acceso de administrador.

Conexión mediante el nombre común del certificado

Proporcione el nombre común del certificado del clúster y el nombre común del certificado de cliente al que se han concedido permisos para administrar el clúster. Los detalles del certificado deben corresponder a un certificado de los nodos del clúster.

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

ServerCommonName es el nombre común del certificado de servidor instalado en los nodos del clúster. FindValue es el nombre común del certificado de cliente de administrador. Cuando los parámetros están rellenos, el comando es parecido al del ejemplo siguiente:

$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 

Conectar mediante la huella digital del certificado

Proporcione la huella digital del certificado del clúster y la huella digital del certificado de cliente al que se han concedido permisos para administrar el clúster. Los detalles del certificado deben corresponder a un certificado de los nodos del clúster.

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

ServerCertThumbprint es la huella digital del certificado de servidor instalado en los nodos del clúster. FindValue es la huella digital del certificado de cliente administrador. Cuando los parámetros están rellenos, el comando es parecido al del ejemplo siguiente:

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

Conexión a un clúster seguro mediante Windows Active Directory

Si el clúster independiente se implementa mediante la seguridad de AD, conéctese a este agregando el modificador "WindowsCredential".

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

Conexión a un clúster mediante las API de FabricClient

El SDK de Service Fabric proporciona la clase FabricClient para la administración de clústeres. Para usar las API de FabricClient, obtenga el paquete de NuGet Microsoft.ServiceFabric.

Conexión a un clúster no seguro

Para conectarse a un clúster remoto no seguro, cree una instancia de FabricClient y proporcionar la dirección del clúster:

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

Para el código que se ejecuta desde dentro de un clúster, por ejemplo, en reliable Service, cree un FabricClient sin especificar la dirección del clúster. FabricClient se conecta a la puerta de enlace de administración local en el nodo que está ejecutando actualmente el código, de modo que se evita un salto de red adicional.

FabricClient fabricClient = new FabricClient();

Conexión a un clúster seguro mediante un certificado de cliente

Los nodos del clúster deben tener certificados válidos cuyo nombre común o nombre DNS en SAN aparezca en la propiedad RemoteCommonNames establecida en FabricClient. La realización de este proceso permite la autenticación mutua entre el cliente y los nodos del clúster.

using System.Fabric;
using System.Security.Cryptography.X509Certificates;

string clientCertThumb = "BB22CC33DD44EE55FF66AA77BB88CC99DD00EE11";
string serverCertThumb = "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00";
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;
}

Conexión a un clúster seguro interactivamente mediante Microsoft Entra ID

En el ejemplo siguiente se usa Microsoft Entra ID para la identidad del cliente y el certificado de servidor para la identidad del servidor.

Una ventana de diálogo se abre automáticamente para un inicio de sesión interactivo al conectarse al clúster.

string serverCertThumb = "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00";
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);
}

Conexión a un clúster seguro no interactivamente mediante Microsoft Entra ID

El siguiente ejemplo se basa en Microsoft.Identity.Client, versión: 4.37.0.

Para obtener más información sobre la adquisición de tokens de Microsoft Entra, consulte Microsoft.Identity.Client.

string tenantId = "aaaabbbb-0000-cccc-1111-dddd2222eeee";
string clientApplicationId = "33334444-dddd-5555-eeee-6666ffff7777";
string webApplicationId = "00001111-aaaa-2222-bbbb-3333cccc4444";
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 = "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00";
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);
}

Conexión a un clúster seguro sin conocer los metadatos anteriores con Microsoft Entra ID

En el ejemplo siguiente se utiliza la obtención de tokens no interactivos, pero puede utilizarse el mismo enfoque para crear una experiencia de obtención de tokens interactivos personalizados. Los metadatos de Microsoft Entra necesarios para la obtención de tokens se leen desde la configuración de clúster.

string serverCertThumb = "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00";
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);
}

Conexión a un clúster seguro mediante Service Fabric Explorer

Para acceder a Service Fabric Explorer para un clúster determinado, apunte el explorador a:

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

La dirección URL completa también está disponible en el panel de elementos esenciales del clúster del portal de Azure.

Para conectarse a un clúster seguro en Windows u OS X mediante un explorador, puede importar el certificado de cliente y el explorador le solicitará el certificado que se usará para conectarse al clúster. En las máquinas Linux, el certificado debe importarse mediante la configuración avanzada del explorador (cada explorador tiene mecanismos diferentes) y apuntarlo a la ubicación del certificado en el disco. Lea Configuración de un certificado de cliente para obtener más información.

Conexión a un clúster seguro mediante Microsoft Entra ID

Para conectarse a un clúster que está protegido con Microsoft Entra ID, dirija el explorador a:

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

Se le pedirá automáticamente que inicie sesión con microsoft Entra ID.

Conexión a un clúster seguro mediante un certificado de cliente

Para conectarse a un clúster que está protegido con certificados, dirija el explorador a:

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

Se le pedirá automáticamente que seleccione un certificado de cliente.

Configuración de un certificado de cliente en el equipo remoto

Deben utilizarse, al menos, dos certificados para proteger el clúster, uno para el certificado de servidor y clúster, y otro para el acceso de cliente. Se recomienda usar también certificados secundarios y certificados de acceso de cliente. Para proteger la comunicación entre un cliente y un nodo del clúster mediante la seguridad basada en certificados, primero debe obtener e instalar el certificado de cliente. El certificado se puede instalar en el almacén personal (Mi) del equipo local o en el almacén personal del usuario actual. También necesitará la huella digital del certificado de servidor para que el cliente pueda autenticar el clúster.

  • En Windows: haga doble clic en el archivo PFX y siga las indicaciones para instalar el certificado en el almacén personal, Certificates - Current User\Personal\Certificates. Como alternativa, puede usar el siguiente comando de PowerShell:

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

    Si se trata de un certificado firmado por usted mismo, deberá importarlo al almacén de "personas de confianza" de su máquina antes de poder utilizar este certificado para conectarse a un clúster seguro.

    Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\TrustedPeople `
    -FilePath C:\docDemo\certs\DocDemoClusterCert.pfx `
    -Password (ConvertTo-SecureString -String test -AsPlainText -Force)
    
  • En Mac: haga doble clic en el archivo PFX y siga las indicaciones para instalar el certificado en la cadena de claves.

Pasos siguientes