默认情况下,Service Fabric应用程序将与Network Service帐户一起运行.Microsoft提供了有关如何使用其他权限运行它的(部分)文档:RunAs:运行具有不同安全权限的Service Fabric应用程序.
基于此,这是我正在尝试做的事情:
棘手的部分是我公司的安全策略要求所有库的源代码只能由授权用户访问,这转换为包含此代码被读保护的文件夹.因此,我的Service Fabric应用程序(作为网络服务运行)无法访问我的二进制文件.无法更改安全策略,也无法通过网络服务访问该文件夹.
如何配置应用程序以使其以具有正确访问权限的用户身份运行?
这是我已经尝试过的:
最简单的解决方案是能够使用我自己的登录名运行Service Fabric应用程序.我通过在ApplicationManifest.xml中添加以下内容来尝试此操作:
<Principals>
<Users>
<User Name="SfUser" AccountName="Domain\UserName" AccountType="DomainUser" Password="pass" />
</Users>
</Principals>
<Policies>
<DefaultRunAsPolicy UserRef="SfUser" />
</Policies>
Run Code Online (Sandbox Code Playgroud)
这工作:应用程序作为Domain\UserName运行,可以访问我需要的所有文件夹.但是这需要我将我的密码放在配置文件中,这是不能令人满意的.
然后我尝试使用本地用户,以为我能够使用本地用户组正确配置访问权限.我能想到的最简单的版本是:
<Principals>
<Users>
<User Name="SfUser" AccountName="LocalSfUser" AccountType="LocalUser">
<MemberOf>
<SystemGroup Name="MyLocalGroup"/>
</MemberOf>
</User>
</Users>
</Principals>
<Policies>
<DefaultRunAsPolicy UserRef="SfUser" />
</Policies>
Run Code Online (Sandbox Code Playgroud)
我认为这种配置是正确的,因为当我部署我的应用程序时,我可以在Windows用户管理器中看到Service Fabric创建的几个"技术"用户,他们属于MyLocalGroup.但是我的申请永远不会开始
我注意到Windows事件查看器中的几条消息似乎与问题有关:
Logon Type: 8
Failure Information:
Failure Reason: The user has not been granted the requested logon type at this …Run Code Online (Sandbox Code Playgroud)