Azure service fabric Azure服务结构-用于访问特定服务的证书的SecurityAccessPolicy
我有一个具有以下结构的SF应用程序Azure service fabric Azure服务结构-用于访问特定服务的证书的SecurityAccessPolicy,azure-service-fabric,Azure Service Fabric,我有一个具有以下结构的SF应用程序 Application1 - ServiceA -> Deployed to NodeType1 - ServiceB -> Deployed to NodeType2 - ServiceC -> Deployed to NodeType2 - ServiceD -> Deployed to NodeType2 ServiceA是侦听TCP端口的前端服务,有一些特定的安全要求。因此,它部署在节点pe1上 服务B、C&D是后端服
Application1
- ServiceA -> Deployed to NodeType1
- ServiceB -> Deployed to NodeType2
- ServiceC -> Deployed to NodeType2
- ServiceD -> Deployed to NodeType2
ServiceA是侦听TCP端口的前端服务,有一些特定的安全要求。因此,它部署在节点pe1上
服务B、C&D是后端服务,部署到节点PE2
服务a要求NetworkServiceAccount能够访问仅安装在节点PE1中的证书。因为这不是端点证书,所以我正在尝试为此证书资源定义SecurityAccessPolicy。最初,我尝试在AppManifest.xml中定义以下内容
<Principals>
<Users>
<User Name="SfServiceUser" AccountType="NetworkService" />
</Users>
</Principals>
<Policies>
<SecurityAccessPolicies>
<SecurityAccessPolicy ResourceRef="TLS Certificate" PrincipalRef="SfServiceUser" ResourceType="Certificate" />
</SecurityAccessPolicies>
</Policies>
<Certificates>
<SecretsCertificate X509FindValue="[TlsCertificateThumbprint]" Name="TLS Certificate" />
</Certificates>
注册ApplicationType时,由于“服务结构错误:未能访问应用程序所需的文件夹或证书。错误:未找到结构证书”。这是因为“TLS证书”仅安装在NodeType1中,但SF也在NodeType2中查找此证书
作为一种解决方法,我尝试在AppManifest.xml的ServiceManifestImport部分中定义SecurityAccessPolicy,如下所示
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="ProtocolGateway.Host.Fabric.FrontEndPkg" ServiceManifestVersion="1.0.0" />
<Policies>
<RunAsPolicy CodePackageRef="Code" UserRef="SetupAdminUser" EntryPointType="Setup" />
<RunAsPolicy CodePackageRef="Code" UserRef="SfServiceUser" />
<SecurityAccessPolicy ResourceRef="TLS Certificate" PrincipalRef="SfServiceUser" ResourceType="Certificate" />
</Policies>
</ServiceManifestImport>
但此操作也失败,并出现错误-“SecurityAccessPolicy中的“TLS证书”资源无效。相应的ServiceManifest中没有匹配的资源。”
尽管ServiceManifestImport部分中的SecurityAccessPolicy接受ResourceType作为证书,但ServiceManifestment不支持将证书定义为资源。仅支持端点
虽然我可以在一个ApplicationType中定义ServiceA,在另一个ApplicationType中定义其他服务,但我不打算这样做,因为这些是相关的服务,我希望使用SF版本控制来管理升级和回滚
请建议我处理此要求的备选方案。我可以想到的一个解决方法是:使用和PS脚本(例如)手动ACL证书。您可以通过环境变量覆盖(
ServiceManifestImport
EnvironmentOverrides
EnvironmentVariable
)从应用程序清单传递指纹。