Executar um serviço como uma Conta de Serviço Gerida de grupo

Em um cluster autônomo do Windows Server, você pode executar um serviço como uma conta de serviço gerenciado de grupo (gMSA) usando uma política RunAs. Por padrão, os aplicativos do Service Fabric são executados na conta na qual o Fabric.exe processo é executado. A execução de aplicativos em contas diferentes, mesmo em um ambiente hospedado compartilhado, os torna mais seguros uns dos outros. Usando um gMSA, não há nenhuma senha ou senha criptografada armazenada no manifesto do aplicativo. Você também pode executar um serviço como um usuário ou grupo do Ative Directory.

O exemplo a seguir mostra como criar uma conta gMSA chamada svc-Test$, como implantar essa conta de serviço gerenciado nos nós do cluster e como configurar a entidade de usuário.

Nota

Usar um gMSA com um cluster autônomo do Service Fabric requer o Ative Directory local dentro do seu domínio (em vez da ID do Microsoft Entra).

Pré-requisitos:

  • O domínio precisa de uma chave raiz KDS.
  • Deve haver pelo menos um controlador de domínio do Windows Server 2012 (ou R2) no domínio.
  1. Peça a um administrador de domínio do Ative Directory que crie uma conta de serviço gerenciada por grupo usando o cmdlet e verifique se o New-ADServiceAccountPrincipalsAllowedToRetrieveManagedPassword inclui todos os nós de cluster do Service Fabric. AccountName, DnsHostNamee ServicePrincipalName deve ser único.

    New-ADServiceAccount -name svc-Test$ -DnsHostName svc-test.contoso.com  -ServicePrincipalNames http/svc-test.contoso.com -PrincipalsAllowedToRetrieveManagedPassword SfNode0$,SfNode1$,SfNode2$,SfNode3$,SfNode4$
    
  2. Em cada um dos nós de cluster do Service Fabric (por exemplo, SfNode0$,SfNode1$,SfNode2$,SfNode3$,SfNode4$), instale e teste o gMSA.

    Add-WindowsFeature RSAT-AD-PowerShell
    Install-AdServiceAccount svc-Test$
    Test-AdServiceAccount svc-Test$
    
  3. Configure a entidade de usuário e configure a RunAsPolicy para fazer referência ao usuário.

    <?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

Se você aplicar uma política RunAs a um serviço e o manifesto do serviço declarar recursos de ponto de extremidade com o protocolo HTTP, deverá especificar uma SecurityAccessPolicy. Para obter mais informações, consulte Atribuir uma política de acesso de segurança para pontos de extremidade HTTP e HTTPS.

Os seguintes artigos irão guiá-lo através dos próximos passos: