Ejecución de un servicio como una cuenta de servicio administrada de grupo

En un clúster independiente de Windows Server, puede ejecutar un servicio como una cuenta de servicio administrada de grupo (gMSA) mediante una directiva de RunAs. De forma predeterminada, las aplicaciones de Service Fabric se ejecutan en la misma cuenta en que se ejecuta el proceso Fabric.exe. La ejecución de aplicaciones en cuentas diferentes, incluso en un entorno hospedado compartido, aumenta la seguridad entre aplicaciones. Con una gMSA, no hay ninguna contraseña ni contraseña cifrada almacenada en el manifiesto de aplicación. También puede ejecutar un servicio como un grupo o usuario de Active Directory.

En el ejemplo siguiente se muestra cómo crear una cuenta gMSA denominada svc-Test$ , cómo implementar esa cuenta de servicio administrada en los nodos del clúster y cómo configurar la entidad de seguridad de usuario.

Nota:

El uso de una gMSA con un clúster de Service Fabric independiente necesita Active Directory local dentro del dominio (en lugar de Microsoft Entra ID).

Requisitos previos:

  • El dominio necesita una clave raíz KDS.
  • Debe haber al menos un controlador de dominio de Windows Server 2012 (o R2) en el dominio.
  1. Haga que un administrador de dominio de Active Directory cree una cuenta de servicio administrada de grupo mediante el cmdlet New-ADServiceAccount y asegúrese de que PrincipalsAllowedToRetrieveManagedPassword incluya todos los nodos del clúster de Service Fabric. AccountName, DnsHostName y ServicePrincipalName deben ser únicos.

    New-ADServiceAccount -name svc-Test$ -DnsHostName svc-test.contoso.com  -ServicePrincipalNames http/svc-test.contoso.com -PrincipalsAllowedToRetrieveManagedPassword SfNode0$,SfNode1$,SfNode2$,SfNode3$,SfNode4$
    
  2. En cada uno de los nodos de clúster de Service Fabric (por ejemplo, SfNode0$,SfNode1$,SfNode2$,SfNode3$,SfNode4$), instale y pruebe la gMSA.

    Add-WindowsFeature RSAT-AD-PowerShell
    Install-AdServiceAccount svc-Test$
    Test-AdServiceAccount svc-Test$
    
  3. Configure la entidad de seguridad de usuario y RunAsPolicy para que hagan referencia al usuario.

    <?xml version="1.0" encoding="utf-8"?>
    <ApplicationManifest xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="MyApplicationType" ApplicationTypeVersion="1.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
        <ServiceManifestImport>
          <ServiceManifestRef ServiceManifestName="MyServiceTypePkg" ServiceManifestVersion="1.0.0" />
          <ConfigOverrides />
          <Policies>
              <RunAsPolicy CodePackageRef="Code" UserRef="DomaingMSA"/>
          </Policies>
        </ServiceManifestImport>
      <Principals>
        <Users>
          <User Name="DomaingMSA" AccountType="ManagedServiceAccount" AccountName="domain\svc-Test$"/>
        </Users>
      </Principals>
    </ApplicationManifest>
    

Nota:

Si aplica una directiva de RunAs a un servicio y el manifiesto de servicio declara los recursos de punto de conexión con el protocolo HTTP, debe especificar SecurityAccessPolicy. Para obtener más información, consulte Assign a security access policy for HTTP and HTTPS endpoints (Asignación de una directiva de acceso de seguridad a los puntos de conexión HTTP y HTTPS).

Los artículos siguientes lo guiarán por los próximos pasos: