当前位置: 首页 > 知识库问答 >
问题:

从Azure Service Fabric中承载的ASP.NET Core应用程序访问Azure密钥库

唐修能
2023-03-14

在我当前的ASP.NET Core项目中,我使用Azure Active Directory身份验证和X509Certificate来访问密钥库。证书需要安装在计算机上,以允许应用程序访问它,并最终从密钥库读取值。现在我正在将这个应用程序迁移到Azure Service Fabric。我已将证书上载到密钥库,通过添加以下内容修改了ARM模板:

"osProfile": {
    "secrets": [
        {
          "sourceVault": {
            "id": "{KeyVaultIdHere}"
          },
          "vaultCertificates": [
            {
              "certificateUrl": "{CertificateUrlHere}",
              "certificateStore": "My"
            }
          ]
        }
      ]
},

但当我将应用程序部署到Azure Service Fabric时,它似乎没有访问证书的权限。当我使用这样的ARM模板创建集群时,证书正在localmachine\my存储区中安装,我理解得正确吗?如果是,有没有可能,运行应用程序的操作系统用户没有访问证书私钥的权限?当我在我的本地计算机上运行集群时,我必须给ASF本地集群用户特殊的权限来读取私钥。也许Azure上的ASF也需要这样做?怎么能做到?提前道谢。

共有1个答案

楚勇
2023-03-14

好的,所以解决方案是修改ARM模板,使其能够访问network service用户的证书私钥。为此,需要编写适当的powershell(如此处:https://social.technet.microsoft.com/forums/windowsserver/en-us/1557e379-26a8-46d0-bf26-d32176395085/how-to-grant-permission-to-private-key-from-PowerShell?forum=WinServerPowerShell)并在ARM模板(CustomScriptExtension)中附加CustomScriptExtension)。这只能在ARM部署期间完成,因为出于某种原因,管理员对通过ARM模板安装的证书只有读取访问权限。

 类似资料:
  • 这在调试期间也有效,但是当我发布到Azure时,它也会失败,因为我的密钥返回null。 任何帮助在哪里我应该看看如何解决这将是伟大的。为什么在生产中会得到null,而在提供相同凭据时却不进行调试?

  • 我在大多数文章中读到,需要在Azure中部署应用程序,这样应用程序才能以编程方式访问存储在Azure密钥库中的秘密。 有没有一种方法可以不在azure中部署应用程序,并且仍然能够通过使用客户端id和客户端机密或证书来访问azure密钥库以获取机密?

  • 我有一个在Service Fabric(SF)集群中运行的应用程序,我不想从它访问密钥库。 我知道在SF清单中使用RunAs选项是可能的,但这需要我在清单/源代码中存储加密的密码,如果可能的话,我想尽量避免这样做。

  • 是否有一种方法可以使用Delphi访问Azure密钥库?我可以使用柏林的data.cloud.azureapi单元访问数据库和blob存储,但想从密钥库中获取数据库连接字符串,但似乎找不到任何用于此操作的代码。

  • 我正在尝试从运行在我的Azure批处理节点池中的VM访问我的Azure密钥库中的机密。 然而,我总是遇到例外: 异常消息:已尝试%1个证书。无法获取访问令牌。 具有指纹的证书#1的异常my-thumbprint:密钥集不存在 到目前为止,我一直遵循以下说明:https://docs.microsoft.com/en-us/Azure/key-vault/service-to-service-aut