你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

以组托管服务帐户身份运行服务

在 Windows Server 独立群集上,可以使用 RunAs 策略以组托管服务帐户 (gMSA) 的身份来运行服务。 默认情况下,Service Fabric 应用程序在运行 Fabric.exe 进程的帐户之下运行。 即使在共享托管环境中以不同帐户身份运行应用程序,也可确保运行的应用程序彼此更安全。 使用 gMSA 时,没有密码或加密的密码存储在应用程序清单中。 还可以采用 Active Directory 用户或组身份运行服务。

以下示例演示如何创建一个名为 svc-Test$ 的 gMSA 帐户,如何将该托管服务帐户部署到群集节点,以及如何配置用户主体。

注意

将 gMSA 与独立 Service Fabric 群集配合使用需要域中本地的 Active Directory(而不是 Microsoft Entra ID)。

先决条件:

  • 域需要 KDS 根密钥。
  • 域中必须至少有一个 Windows Server 2012(或 R2)DC。
  1. 让 Active Directory 域管理员使用 New-ADServiceAccount cmdlet 创建一个组托管服务帐户,并确保 PrincipalsAllowedToRetrieveManagedPassword 包括所有 Service Fabric 群集节点。 AccountNameDnsHostNameServicePrincipalName 必须是唯一的。

    New-ADServiceAccount -name svc-Test$ -DnsHostName svc-test.contoso.com  -ServicePrincipalNames http/svc-test.contoso.com -PrincipalsAllowedToRetrieveManagedPassword SfNode0$,SfNode1$,SfNode2$,SfNode3$,SfNode4$
    
  2. 在每个 Service Fabric 群集节点(例如,SfNode0$,SfNode1$,SfNode2$,SfNode3$,SfNode4$)上,安装并测试 gMSA。

    Add-WindowsFeature RSAT-AD-PowerShell
    Install-AdServiceAccount svc-Test$
    Test-AdServiceAccount svc-Test$
    
  3. 配置用户主体,并配置 RunAsPolicy 以引用用户

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

注意

如果将 RunAs 策略应用到服务,且服务清单使用 HTTP 协议声明终结点资源,则必须指定 SecurityAccessPolicy。 有关详细信息,请参阅为 HTTP 和 HTTPS 终结点分配安全访问策略

以下文章可指导你完成后续步骤: