相关疑难解决方法(0)

如何运行具有不同安全权限的Service Fabric应用程序?

Service Fabric RunAs功能

默认情况下,Service Fabric应用程序将与Network Service帐户一起运行.Microsoft提供了有关如何使用其他权限运行它的(部分)文档:RunAs:运行具有不同安全权限的Service Fabric应用程序.

基于此,这是我正在尝试做的事情:

  • 我的Service Fabric应用程序调用正在其他存储库中开发的库.
  • 当部署在云中时,服务将从存储中下载库的二进制文件,将它们解压缩到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)

security azure-service-fabric

9
推荐指数
1
解决办法
6583
查看次数

标签 统计

azure-service-fabric ×1

security ×1