以组托管服务帐户身份运行服务
在 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。
让 Active Directory 域管理员使用
New-ADServiceAccount
cmdlet 创建一个组托管服务帐户,并确保PrincipalsAllowedToRetrieveManagedPassword
包括所有 Service Fabric 群集节点。AccountName
、DnsHostName
和ServicePrincipalName
必须是唯一的。New-ADServiceAccount -name svc-Test$ -DnsHostName svc-test.contoso.com -ServicePrincipalNames http/svc-test.contoso.com -PrincipalsAllowedToRetrieveManagedPassword SfNode0$,SfNode1$,SfNode2$,SfNode3$,SfNode4$
在每个 Service Fabric 群集节点(例如,
SfNode0$,SfNode1$,SfNode2$,SfNode3$,SfNode4$
)上,安装并测试 gMSA。Add-WindowsFeature RSAT-AD-PowerShell Install-AdServiceAccount svc-Test$ Test-AdServiceAccount svc-Test$
配置用户主体,并配置
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 终结点分配安全访问策略。
以下文章可指导你完成后续步骤: