【问题标题】:Access Key Vault from local Service Fabric cluster with User Assigned Manged Identity(MSI)使用用户分配的托管标识 (MSI) 从本地 Service Fabric 群集访问 Key Vault
【发布时间】:2021-01-02 11:04:47
【问题描述】:

我想通过托管服务标识 (MSI) 从我的 Service Fabric 应用程序访问 Key Vault。我已在 Azure 门户中的虚拟机规模集上启用 MSI,并授予它访问我的 Key Vault 资源的权限。这就像云中的魅力一样。但是,我的本地开发环境有问题。

据我了解,我可以授予自己对 Key Vault 的访问权限并在 Azure CLI 中运行 az login。唉,这在本地 Service Fabric 群集中运行应用程序时不起作用。 我在服务结构中使用 .net core 2.1 并得到下面提到的异常。

Azure.Identity.AuthenticationFailedException:DefaultAzureCredential 未能从包含的凭据中检索令牌。

  • EnvironmentCredential 身份验证不可用。环境变量未完全配置。
  • ManagedIdentityCredential 身份验证不可用。未找到托管身份端点。
  • SharedTokenCacheCredential 身份验证失败:持久性检查失败。检查内部异常以了解详细信息
  • 无法在 C:\Users\Default\AppData\Local.IdentityService\AzureServiceAuth\tokenprovider.json 访问 Visual Studio 令牌提供程序
  • VisualStudioCodeCredential 身份验证失败:指定的登录会话不存在。它可能已被终止。

【问题讨论】:

    标签: asp.net-core azure-service-fabric azure-keyvault azure-managed-identity


    【解决方案1】:

    服务可能在内置的“NetworkService”帐户下运行,该帐户无法访问 CLI 以获取凭据,因为它已在您的用户会话中运行。

    尝试creating机器级别环境变量来访问保险库:

    • 使用密码创建服务主体。按照此处的步骤创建服务主体并授予其访问 Key Vault 的权限。
    • 将名为 AzureServicesAuthConnectionString 的环境变量设置为 RunAs=App;AppId=AppId;TenantId=TenantId;AppKey=Secret。你需要 将 AppId、TenantId 和 Secret 替换为第 1 步中的实际值。
    • 在本地开发环境中运行应用程序。无需更改代码。 AzureServiceTokenProvider 将使用它 环境变量并使用服务主体进行身份验证 Azure AD。

    不要忘记重启,所以环境变量会添加到所有进程中。

    【讨论】:

      【解决方案2】:

      正如document 显示的DefaultAzureCredential 一样,环境和托管身份是部署的服务身份验证。 Azure CLI 需要通过 az login 命令使用您的 Azure 帐户登录。

      因此,Environment 和 Managed Identity 适合您。例如,使用环境需要先设置环境变量,见here。然后您可以使用 DefaultAzureCredential 创建一个秘密客户端。

      // Create a secret client using the DefaultAzureCredential
      var client = new SecretClient(new Uri("https://myvault.azure.vaults.net/"), new DefaultAzureCredential());
      

      【讨论】:

        猜你喜欢
        • 2018-09-26
        • 1970-01-01
        • 1970-01-01
        • 2017-09-24
        • 2021-11-20
        • 2017-04-25
        • 2020-06-02
        • 2019-02-15
        • 2020-01-04
        相关资源
        最近更新 更多